|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] (Start of) iSCSI ERT: handling for iSCSI response codesLet 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. cbm@rose.hp.com -------------------------------------------------------------------------- Date: Thu, 07 Jun 2001 19:37:10 PDT To: cbm@rose.hp.com Subject: iSCSI ERT: handling for iSCSI response codes Cc: julian_satran@il.ibm.com, someshg@yahoo.com, venkat@rhapsodynetworks.com, steph@cs.uchicago.edu, ldalleore@snapserver.com, Black_David@emc.com, hufferd@us.ibm.com, kalman_meth@il.ibm.com In-Reply-To: <200106060116.SAA00914@core.rose.hp.com>; 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. cbm@rose.hp.com ------------------------------------------------------------------------- Date: Thu, 14 Jun 2001 10:58:04 PDT To: steph@cs.uchicago.edu Subject: Re: iSCSI ERT: handling for iSCSI response codes Cc: cbm@rose.hp.com, julian_satran@il.ibm.com, someshg@yahoo.com, venkat@rhapsodynetworks.com, ldalleore@snapserver.com, Black_David@emc.com, hufferd@us.ibm.com, kalman_meth@il.ibm.com In-Reply-To: <200106140242.f5E2g9603398@chmls20.mediaone.net>; 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. cbm@rose.hp.com > >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 >
Home Last updated: Tue Sep 04 01:04:26 2001 6315 messages in chronological order |