Subject: (Start of) iSCSI ERT: handling for iSCSI response codes

From: "Mallikarjun C." <[email-masked]>
Date: Mon, 18 Jun 2001 9:36:30 PDT

Let me post the complete context for that email exchange,
since I was the one proposing this change in ERT.  Please
take time to read these short messages, I would appreciate 
comments.

One line quote from my message behind this proposal:

        "To summarize, IMHO, iSCSI is presumptively signaling the task 
        conclusion with its response codes."

Responding to Julian:

>This type of handling will let us build independent of SCSI ....

Julian, the fact is that we can not completely be "independent of SCSI"
except we start building in redundant mechanisms like ACA at iSCSI level.
I thought we were dropping the EnableACA "feature" precisely because
we did not want to build in this redundancy!

Regards.
--
Mallikarjun 

Mallikarjun Chadalapaka
Networked Storage Architecture
Network Storage Solutions Organization
MS 5668	Hewlett-Packard, Roseville.
[email-masked]

--------------------------------------------------------------------------

Date: Thu, 07 Jun 2001 19:37:10 PDT
To: [email-masked]
Subject: iSCSI ERT: handling for iSCSI response codes
Cc: [email-masked], [email-masked], [email-masked],
	[email-masked], [email-masked], [email-masked],
	[email-masked], [email-masked]
In-Reply-To: <[email-masked]>; from "Mallikarjun C." at Jun 5, 101 6:16 pm
Status: RO

Team,

After exchanging some messages with Ralph Weber and Ed Gardner, 
I am coming to the conclusion that all the error cases which 
result in "iSCSI response codes" in the SCSI Response PDU should
in fact result in SCSI CHECK CONDITION - to result in ACA if
NACA=1 was set for the failing command, ie. to kick in the 
regular SCSI processing.

Following are defined in draft rev06 -

      0x01 - Target Failure
      0x02 - Delivery Subsystem Failure
      0x03 - Unsolicited data rejected
      0x04 - SNACK rejected

Note that commands failing with any of these response codes
would cause out-of-order execution for the follow-on commands -
even with NACA=1, simply because iSCSI can not mandate ACA, a
SCSI-ism, to enforce ordering (we dropped EnableACA kludge because 
of this reason).  The solution I see is to instead have iSCSI 
mandate a standard SCSI CHECK CONDITION on these errors with
the current response codes acting as detailed descriptions.

It turns out there are already reasonable ASC/ASCQ values 
defined for these cases (for all SCSI device types) in SPC-2.  
Here they are -

                       ASC    ASCQ          Means 

Target Failure     ->  0x44   0x00       Internal Target Failure
Delivery Subsystem ->  0x47   0x03       Information Unit CRC error
Failure                                  detected
SNACK rejected     ->   -do -            -do- (since the root cause
                                              is the same)
Unsolicited data   ->  0x49   0x00       Invalid Message Error
rejected

To summarize, I propose that iSCSI mandate CHECK CONDITION with
the ASC/ASCQ values as shown above - instead of limiting to iSCSI
response codes.  This cleanly takes care of the ACA issue.  There
are precedents in SCSI Protocol standards like FCP-2 for mandating 
such behavior.

Comments?
--
Mallikarjun 

Mallikarjun Chadalapaka
Networked Storage Architecture
Network Storage Solutions Organization
MS 5668	Hewlett-Packard, Roseville.
[email-masked]

-------------------------------------------------------------------------

Date: Thu, 14 Jun 2001 10:58:04 PDT
To: [email-masked]
Subject: Re: iSCSI ERT: handling for iSCSI response codes 
Cc: [email-masked], [email-masked], [email-masked],
	[email-masked], [email-masked],
	[email-masked], [email-masked], [email-masked]
In-Reply-To: <[email-masked]>; from "Stephen Bailey" at Jun 13, 101 7:43 pm
Status: RO

Steph,

Thanks for the message.

>I'm not clear on what you're proposing for SNACK rejected, but, since
>it's not CHECK CONDITION, I'm sure whatever you have in mind is fine,
>but we need to document it better :^)

Sorry, I was using proprietary (and confidential) shorthand, :-)

Actually, I was proposing a CHECK CONDITION (0x47, 0x03) even for 
"SNACK rejected" since the "root cause is the same" - ie. a prior data 
integrity error! Keep in mind that employing SNACK means the task 
is already considered in progress by both parties - the target iSCSI 
is fabricating a SCSI Response PDU without its SCSI involvement, it's 
technically incorrect since the task is already instantiated at its 
SCSI layer.  That's what the source of the problem here is.

To summarize, IMHO, iSCSI is presumptively signaling the task conclusion 
with its response codes.  The correct options are 

	a) iSCSI should not deliver a SCSI Response at all, forcing a timeout 
           and thus the standard SCSI recovery.
    OR
        b) iSCSI should mandate a CHECK CONDITION - which technically
           involves task cleanup at target SCSI layer, and leads to the 
           right ordering semantics.

My suggestion was ofcourse (b), for faster error recovery.

I haven't seen a response from Julian yet, hope he's accommodating this
in rev07!

Thanks.
--
Mallikarjun 

Mallikarjun Chadalapaka
Networked Storage Architecture
Network Storage Solutions Organization
MS 5668	Hewlett-Packard, Roseville.
[email-masked]

>
>Mallikarjun,
>
>> Comments?
>
>Hmm.  Ok, I agree.
>
>For example, I never really thought:
>
>>       0x02 - Delivery Subsystem Failure
>
>was the right way to report in-band integrity errors.  Delivery
>subsystem failure usually means something that is not even detectable
>by the target, like a timeout.  As such, I agree that the target
>shouldn't be responding this back.
>
>Yes, I have seen many FCP targets do exactly what you're suggesting
>here.  In fact 0xB 0x4700 (good ole SCSI parity error) is code for
>many different protocol errors which are detectable and attributable
>to a particular SCSI command.  For example, bogus settings of FCP
>F_CTL bits.
>
>So, assuming that Target Failure, Delivery Subsystem Failure are all
>attributable to a SCSI command, I agree they should create CHECK
>conditions.
>
>The place where response values are justified is if the error is
>attributable to something other than a SCSI command, such as a task
>management function.  For example, task management function rejected
>(which we don't seem to have).  If we were anticipating any of these
>as a response to task management, they should remain, or perhaps we
>should define new, more specifically task management related responses
>codes.
>
>I'm not clear on what you're proposing for SNACK rejected, but, since
>it's not CHECK CONDITION, I'm sure whatever you have in mind is fine,
>but we need to document it better :^)
>
>Steph
>

------------------------------------------------------------------------------

>Steph,
>
>That is an interesting change in opinion. When I suggested the same thing
>some releases ago for the same set of reasons
>(I even suggested avoiding the response codes at all!) as there is no
>noticeable difference in handling the heat of your response was felt at
>6000 miles.
>
>However I am not sure anymore that given the need for a clearing action for
>most of those cases that we should not keep
>the treatment within the iSCSI layer and create an
>iSCSI-exception-condition (for all iSCSI created responses) cleared through
>an iSCSI task management function (clear-iSCSI-exception) and reject all
>intervening commands.
>
>This type of handling will let us build independent of SCSI and keep the
>layering purists happy.
>
>Regards,
>Julo
>

---

From: "Robert Griswold" <[email-masked]>
Date: Tue, 19 Jun 2001 22:03:41 -0500

Mallikarjun:

I am in complete agreement.  We have discussed this (the separation of
transport responses for errors from standard SCSI status CHECK
CONDITIONS) and have been unclear on the method we would use to keep
these separate.  I have also commented on the overloading of the
Response/Status field, and the confusion this would cause in handling
PDUs expected to contain CHECK CONDITIONS.  This is goodness, easy to
understand and keeps iSCSI dependant on SCSI for this communication,
which is where it should be addressed.  Good work on consolidating this
thread.

Bob

Robert Griswold
Technologist
Crossroads Systems, Inc.
512-928-7272

 -----Original Message-----
From: 	Mallikarjun C. [mailto:[email-masked]] 
Sent:	Monday, June 18, 2001 11:37 AM
To:	[email-masked]
Subject:	(Start of) iSCSI ERT: handling for iSCSI response codes

Julian, the fact is that we can not completely be "independent of SCSI"
except we start building in redundant mechanisms like ACA at iSCSI
level.
I thought we were dropping the EnableACA "feature" precisely because
we did not want to build in this redundancy!

Regards.
--
Mallikarjun 

Mallikarjun Chadalapaka

------------------------------------------------------------------------
--

Date: Thu, 07 Jun 2001 19:37:10 PDT
To: [email-masked]
Subject: iSCSI ERT: handling for iSCSI response codes
Cc: [email-masked], [email-masked],
[email-masked],
	[email-masked], [email-masked],
[email-masked],
	[email-masked], [email-masked]
In-Reply-To: <[email-masked]>; from "Mallikarjun
C." at Jun 5, 101 6:16 pm
Status: RO

Team,

      0x01 - Target Failure

                       ASC    ASCQ          Means 

Comments?
--
Mallikarjun 

Mallikarjun Chadalapaka

------------------------------------------------------------------------
-

Date: Thu, 14 Jun 2001 10:58:04 PDT
To: [email-masked]
Subject: Re: iSCSI ERT: handling for iSCSI response codes 
Cc: [email-masked], [email-masked], [email-masked],
	[email-masked], [email-masked],
	[email-masked], [email-masked], [email-masked]
In-Reply-To: <[email-masked]>; from
"Stephen Bailey" at Jun 13, 101 7:43 pm
Status: RO

Steph,

Thanks for the message.

	a) iSCSI should not deliver a SCSI Response at all, forcing a
timeout 

Thanks.
--
Mallikarjun 

Mallikarjun Chadalapaka

>but we need to document it better :^)

------------------------------------------------------------------------
------