Re: Data Out residual overflow/underflow handling
"Knight, Frederick" <[email protected]> Fri, 21 Sep 2012 14:00:21 +0000
| Newsgroups | gmane.ietf.ips |
|---|---|
| Message-ID | <FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32@SACEXCMBX04-PRD.hq.netapp.com> |
--===============6250333758771559782== Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32SACEXCMBX04PRDh_" --_000_FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32SACEXCMBX04PRDh_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable You have a couple of choices. For example, SBC makes several statements about non-deterministic outcomes = such as: The device server may terminate the command before processing or after the = device server has transferred some or all of the data. (walking off the end= of the device) The degree that the medium is altered by this command is vendor specific. (= The format command) But those aren't directly related. However, as you mention, FCP provides t= he following 3 choice: If the command requested that data beyond the length specified by the FCP_D= L field be transferred, then the device server shall set the FCP_RESID_OVER= bit (see 9.5.8) to one in the FCP_RSP IU and: a) process the command normally except that data beyond the FCP_DL co= unt shall not be requested or transferred; b) transfer no data and return CHECK CONDITION status with the sense = key set to ILLEGAL REQUEST and the additional sense code set to INVALID FIE= LD IN COMMAND INFORMATION UNIT; or c) may transfer data and return CHECK CONDITION status with the s= ense key set to ABORTED COMMAND and the additional sense code set to INVALI= D FIELD IN COMMAND INFORMATION UNIT. Case a) and c) allow the media to be modified. Case b) implies no media al= teration (since no data is transferred). Choice b) and c) include SCSI lay= er sense data, but choice a) includes only an FCP layer notification (no SC= SI sense data, so a broken host (one that ignores residual unless a check c= ondition exists) will assume success). RFC5048 says: If SPDTL > EDTL for a task, iSCSI Overflow MUST be signaled in the SCSI Response PDU as specified in [RFC3720]. The Residual Count MUST be set to the numerical value of (SPDTL - EDTL). SPDTL =3D the SCSI layer transfer size; EDTL =3D the iSCSI layer transfer s= ize. Since the SCSI layer transfer size in your example is 4096, and the iSCSI l= ayer transfer size is 512, then you must report the OVERFLOW as defined in = RFC3720 (bit 5 in the flags field of the SCSI response PDU). I couldn't qu= ickly find any suggestions in RFC3720/5048 for sense data, so I'd suggest y= ou go with choice b) or c) that FCP is using (I'd suggest staying away from= choice a) since it has bad possibilities). At least that is something hos= ts should already be familiar with. The other list you might use for these kinds of questions is the SCSI refle= ctor: [email protected]<mailto:[email protected]> (T10 defines the SCSI architecture an= d writes the various SCSI command standards). Fred Knight From: [email protected] [mailto:[email protected]] On Behalf Of Paul = Hughes Sent: Thursday, September 20, 2012 11:22 PM To: [email protected] Subject: [Ips] Data Out residual overflow/underflow handling Not sure if this is the best place to ask, but here goes... How should an iSCSI target (SCSI direct-access block device) handle the fol= lowing scenario: An initiator issues an iSCSI Command Request PDU containing a SCSI Write CD= B with a transfer length of 1 block. The iSCSI Command Request PDU has an = Expected Data Transfer Length of 512 bytes, a Data Segment Length of 512 by= tes (immediate data), and the Final flag is set. This would be a perfectly= normal single block write, except that the target's logical unit is format= ted with 4096-byte block size. So it appears the initiator is confused and= sending a single 512-byte block write to a logical unit that is formatted = to 4KB block size. Here are my thoughts: 1) The target could write the 512 bytes of immediate data plus 3584 bytes (= 4096 minus 512) of whatever it wants to the media, and then send an iSCSI C= ommand Response PDU with SCSI status of Good and reporting an Overflow with= a residual count of 3584. This seems to be the most correct way of handli= ng this scenario, but it seems dangerous to allow an apparently confused in= itiator to essentially corrupt data on the logical unit. 2) The target could send an iSCSI Command Response PDU with SCSI status of = Check Condition, with sense data of Aborted Command, Invalid Field in Comma= nd Information Unit (0x0E03). This sense code is apparently intended for F= CP (I found it mentioned in FCP-4) but it seems appropriate in this case. = Assuming the target can fail the SCSI Write command this way (or some other= way), should the target also report an Underflow with a residual count of = 512? Are there any other alternatives? Thanks, Paul --_000_FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32SACEXCMBX04PRDh_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr= osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" = xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:= //www.w3.org/TR/REC-html40"> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"= > <meta name=3D"ProgId" content=3D"Word.Document"> <meta name=3D"Generator" content=3D"Microsoft Word 14"> <meta name=3D"Originator" content=3D"Microsoft Word 14"> <link rel=3D"File-List" href=3D"cid:[email protected]"><!--[if= gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:SpellingState>Clean</w:SpellingState> <w:GrammarState>Clean</w:GrammarState> <w:TrackMoves/> <w:TrackFormatting/> <w:EnvelopeVis/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:DoNotExpandShiftReturn/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val=3D"Cambria Math"/> <m:brkBin m:val=3D"before"/> <m:brkBinSub m:val=3D"--"/> <m:smallFrac m:val=3D"off"/> <m:dispDef/> <m:lMargin m:val=3D"0"/> <m:rMargin m:val=3D"0"/> <m:defJc m:val=3D"centerGroup"/> <m:wrapIndent m:val=3D"1440"/> <m:intLim m:val=3D"subSup"/> <m:naryLim m:val=3D"undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true" DefSemi= Hidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99" LatentStyleCount=3D= "267"> <w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false" Unhide= WhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/> <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false" Unhide= WhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 2"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 3"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 4"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 5"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 6"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 7"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 8"/> <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"he= ading 9"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/> <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/> <w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D"c= aption"/> <w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/> <w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph F= ont"/> <w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/> <w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/> <w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/> <w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Table Grid"/> <w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placehold= er Text"/> <w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false" Unhide= WhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/> <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Shading"/> <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light List"/> <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Grid"/> <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 1"/> <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 2"/> <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 1"/> <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 2"/> <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 1"/> <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 2"/> <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 3"/> <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Dark List"/> <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Shading"/> <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful List"/> <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Grid"/> <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light List Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/> <w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revision"= /> <w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/> <w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/> <w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/> <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Dark List Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/> <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light List Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Dark List Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/> <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light List Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Dark List Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/> <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light List Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Dark List Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/> <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light List Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Dark List Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/> <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light List Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Dark List Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/> <w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/> <w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/> <w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/> <w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/> <w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false" Unhid= eWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/> <w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/> <w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D"T= OC Heading"/> </w:LatentStyles> </xml><![endif]--><style><!-- /* Font Definitions */ @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-alt:"Arial Rounded MT Bold"; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-520092929 1073786111 9 0 415 0;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-alt:Lucidasans; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627400839 -2147483648 8 0 66047 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:Calibri;} a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; text-decoration:underline; text-underline:single;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; margin-top:0in; margin-right:0in; margin-bottom:0in; margin-left:.5in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:Calibri;} p.SP13241841, li.SP13241841, div.SP13241841 {mso-style-name:"SP\.13\.241841"; mso-style-priority:99; mso-style-unhide:no; mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-layout-grid-align:none; text-autospace:none; font-size:12.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:Calibri;} p.SP13241758, li.SP13241758, div.SP13241758 {mso-style-name:"SP\.13\.241758"; mso-style-priority:99; mso-style-unhide:no; mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-layout-grid-align:none; text-autospace:none; font-size:12.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:Calibri;} p.SP13241682, li.SP13241682, div.SP13241682 {mso-style-name:"SP\.13\.241682"; mso-style-priority:99; mso-style-unhide:no; mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-layout-grid-align:none; text-autospace:none; font-size:12.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:Calibri;} p.SP13241824, li.SP13241824, div.SP13241824 {mso-style-name:"SP\.13\.241824"; mso-style-priority:99; mso-style-unhide:no; mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-layout-grid-align:none; text-autospace:none; font-size:12.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:Calibri;} p.SP13241761, li.SP13241761, div.SP13241761 {mso-style-name:"SP\.13\.241761"; mso-style-priority:99; mso-style-unhide:no; mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-layout-grid-align:none; text-autospace:none; font-size:12.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:Calibri;} span.EmailStyle23 {mso-style-type:personal-reply; mso-style-noshow:yes; mso-style-unhide:no; mso-ansi-font-size:11.0pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-fareast-font-family:Calibri; mso-hansi-font-family:Calibri; mso-bidi-font-family:"Times New Roman"; color:#1F497D;} span.SC131009 {mso-style-name:"SC\.13\.1009"; mso-style-priority:99; mso-style-unhide:no; mso-style-parent:""; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; color:black;} span.SC131021 {mso-style-name:"SC\.13\.1021"; mso-style-priority:99; mso-style-unhide:no; mso-style-parent:""; mso-ansi-font-size:8.0pt; mso-bidi-font-size:8.0pt; color:black;} span.SC131044 {mso-style-name:"SC\.13\.1044"; mso-style-priority:99; mso-style-unhide:no; mso-style-parent:""; mso-ansi-font-size:8.0pt; mso-bidi-font-size:8.0pt; color:black;} span.GramE {mso-style-name:""; mso-gram-e:yes;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-fareast-font-family:Calibri; mso-hansi-font-family:Calibri;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} /* List Definitions */ @list l0 {mso-list-id:1156800983; mso-list-type:hybrid; mso-list-template-ids:-854800212 1780676278 67698713 67698715 67698703 676= 98713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-number-format:alpha-lower; mso-level-text:"%1\)"; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:60.35pt; text-indent:-24.0pt;} @list l0:level2 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:90.35pt; text-indent:-.25in;} @list l0:level3 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; margin-left:126.35pt; text-indent:-9.0pt;} @list l0:level4 {mso-level-tab-stop:none; mso-level-number-position:left; margin-left:162.35pt; text-indent:-.25in;} @list l0:level5 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:198.35pt; text-indent:-.25in;} @list l0:level6 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; margin-left:234.35pt; text-indent:-9.0pt;} @list l0:level7 {mso-level-tab-stop:none; mso-level-number-position:left; margin-left:270.35pt; text-indent:-.25in;} @list l0:level8 {mso-level-number-format:alpha-lower; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:306.35pt; text-indent:-.25in;} @list l0:level9 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; margin-left:342.35pt; text-indent:-9.0pt;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} --></style><!--[if gte mso 10]><style>/* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";} </style><![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext=3D"edit"> <o:idmap v:ext=3D"edit" data=3D"1" /> </o:shapelayout></xml><![endif]--> </head> <body lang=3D"EN-US" link=3D"blue" vlink=3D"purple" style=3D"tab-interval:.= 5in"> <div class=3D"WordSection1"> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D">You have a couple of choices.<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D">For example, SBC makes several statements about non= -deterministic outcomes such as:<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal" style=3D"mso-layout-grid-align:none;text-autospace:n= one"><span style=3D"font-size:10.0pt;font-family:"Arial","sa= ns-serif"">The device server may terminate the command before processi= ng or after the device server has transferred some or all of the data. </span><span style=3D"font-size:11.0pt;font-family:"Cali= bri","sans-serif";mso-bidi-font-family:"Times New Roman= ";color:#1F497D">(<span class=3D"GramE">walking</span> off the end of = the device)<o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"mso-layout-grid-align:none;text-autospace:n= one"><span style=3D"font-size:10.0pt;font-family:"Arial","sa= ns-serif""><o:p> </o:p></span></p> <p class=3D"MsoNormal" style=3D"mso-layout-grid-align:none;text-autospace:n= one"><span style=3D"font-size:10.0pt;font-family:"Arial","sa= ns-serif"">The degree that the medium is altered by this command is ve= ndor specific.</span><span style=3D"font-size:11.0pt;font-family:"Cali= bri","sans-serif";mso-bidi-font-family:"Times New Roman= ";color:#1F497D"> (The format command)<o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"mso-layout-grid-align:none;text-autospace:n= one"><span style=3D"font-size:11.0pt;font-family:"Calibri","= sans-serif";mso-bidi-font-family:"Times New Roman";color:#1F= 497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal" style=3D"mso-layout-grid-align:none;text-autospace:n= one"><span style=3D"font-size:11.0pt;font-family:"Calibri","= sans-serif";mso-bidi-font-family:"Times New Roman";color:#1F= 497D">But those aren’t directly related.<span style=3D"mso-spacerun:y= es"> </span>However, as you mention, FCP provides the following 3 choice:</span>= <span style=3D"color:black"><o:p></o:p></span></p> <p class=3D"SP13241682" style=3D"mso-margin-top-alt:5.0pt;margin-right:0in;= margin-bottom:5.0pt;margin-left:0in;text-align:justify"> <span class=3D"SC131009"><span style=3D"font-size:10.0pt">If the command re= quested that data beyond the length specified by the </span></span><span class=3D"SC131021"><span style=3D"font-size:8.0pt">FCP<= /span></span><span class=3D"SC131021"><span style=3D"font-size:10.0pt">_</s= pan></span><span class=3D"SC131021"><span style=3D"font-size:8.0pt">DL </span></span><span class=3D"SC131009"><span style=3D"font-size:10.0pt">fie= ld be transferred, then the device server shall set the </span></span><span class=3D"SC131044"><span style=3D"font-size:8.0pt">FCP_= RESID_OVER </span></span><span class=3D"SC131009"><span style=3D"font-size:10.0pt">bit= (see 9.5.8) to one in the FCP_RSP IU and:</span></span><span style=3D"font= -size:10.0pt;color:black"><o:p></o:p></span></p> <p class=3D"SP13241824" style=3D"margin-left:60.35pt;text-align:justify;tex= t-indent:-24.0pt;mso-list:l0 level1 lfo2"> <![if !supportLists]><span style=3D"font-size:10.0pt;mso-fareast-font-famil= y:Arial;color:black"><span style=3D"mso-list:Ignore">a)<span style=3D"font:= 7.0pt "Times New Roman""> </span></span></span><![endif]><span class=3D"SC131009"><span style=3D"font= -size:10.0pt">process the command normally except that data beyond the </span></span><span class=3D"SC131021"><span style=3D"font-size:8.0pt">FCP<= /span></span><span class=3D"SC131021"><span style=3D"font-size:10.0pt">_</s= pan></span><span class=3D"SC131021"><span style=3D"font-size:8.0pt">DL </span></span><span class=3D"SC131009"><span style=3D"font-size:10.0pt">cou= nt shall not be requested or transferred;</span></span><span style=3D"font-= size:10.0pt;color:black"><o:p></o:p></span></p> <p class=3D"SP13241761" style=3D"margin-left:60.35pt;text-align:justify;tex= t-indent:-24.0pt;mso-list:l0 level1 lfo2"> <![if !supportLists]><span style=3D"font-size:10.0pt;mso-fareast-font-famil= y:Arial;color:black"><span style=3D"mso-list:Ignore">b)<span style=3D"font:= 7.0pt "Times New Roman""> </span></span></span><![endif]><span class=3D"SC131009"><span style=3D"font= -size:10.0pt">transfer no data and return CHECK CONDITION status with the s= ense key set to ILLEGAL REQUEST and the additional sense code set to INVALI= D FIELD IN COMMAND INFORMATION UNIT; or</span></span><span style=3D"font-size:10.0pt;color:black"><o:p></o:p></= span></p> <p class=3D"MsoListParagraph" style=3D"margin-left:60.35pt;text-indent:-24.= 0pt;mso-list:l0 level1 lfo2;mso-layout-grid-align:none;text-autospace:none"= > <![if !supportLists]><span style=3D"font-size:11.0pt;font-family:"Cali= bri","sans-serif";color:#1F497D"><span style=3D"mso-list:Ign= ore">c)<span style=3D"font:7.0pt "Times New Roman""> &= nbsp; </span></span></span><![endif]><span class=3D"GramE"><span class=3D"SC13100= 9"><span style=3D"font-size:10.0pt">may</span></span></span><span class=3D"= SC131009"><span style=3D"font-size:10.0pt"> transfer data and return CHECK = CONDITION status with the sense key set to ABORTED COMMAND and the additional sense code set to INVALID FIELD IN COMM= AND INFORMATION UNIT.</span></span><span style=3D"font-size:11.0pt;font-fam= ily:"Calibri","sans-serif";mso-bidi-font-family:"T= imes New Roman";color:#1F497D"><o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D">Case a) and c) allow the media to be modified.<span= style=3D"mso-spacerun:yes"> </span>Case b) implies no media alteration (since no data is transferred).<= span style=3D"mso-spacerun:yes"> </span>Choice b) and c) include SCSI layer sense data, but choice a) includ= es only an FCP layer notification (no SCSI sense data, so a broken host (on= e that ignores residual unless a check condition exists) will assume succes= s).<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D">RFC5048 says:<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:black"><span style=3D"mso-spacerun:yes"> </span>If SPDTL > EDTL for a task, iSCSI Overflow MUST be signaled in th= e<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:black"><span style=3D"mso-spacerun:yes"> </span>SCSI Response PDU as specified in [RFC3720].<span style=3D"mso-space= run:yes"> </span>The Residual Count MUST<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:black"><span style=3D"mso-spacerun:yes"> </span><span class=3D"GramE">be</span> set to the numerical value of (SPDTL= - EDTL).<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D">SPDTL =3D the SCSI layer transfer size; EDTL =3D th= e iSCSI layer transfer size.<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D">Since the SCSI layer transfer size in your example = is 4096, and the iSCSI layer transfer size is 512, then you must report the OVERFLOW as defined in RFC3720 (bit 5 in the flags field of the SCSI r= esponse PDU).<span style=3D"mso-spacerun:yes"> </span>I couldn’t quickly find any suggestions in RFC3720/5048 for se= nse data, so I’d suggest you go with choice b) or c) that FCP is usin= g (I’d suggest staying away from choice a) since it has bad possibili= ties).<span style=3D"mso-spacerun:yes"> </span>At least that is something hosts should already be familiar with.<o:= p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D">The other list you might use for these kinds of que= stions is the SCSI reflector: <a href=3D"mailto:[email protected]">[email protected]</a> (T10 defines the SCSI archit= ecture and writes the various SCSI command standards).<o:p></o:p></span></p= > <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><span style=3D"mso-tab-count:1"> &= nbsp; </span>Fred Knight<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca= libri","sans-serif";mso-bidi-font-family:"Times New Rom= an";color:#1F497D"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:"= ;Tahoma","sans-serif";mso-fareast-font-family:"Times Ne= w Roman"">From:</span></b><span style=3D"font-size:10.0pt;font-family:= "Tahoma","sans-serif";mso-fareast-font-family:"Tim= es New Roman""> [email protected] [mailto:[email protected]] <b>On Behalf <span class=3D"GramE">Of</span>= </b>Paul Hughes<br> <b>Sent:</b> Thursday, September 20, 2012 11:22 PM<br> <b>To:</b> [email protected]<br> <b>Subject:</b> [Ips] Data Out residual overflow/underflow handling<o:p></o= :p></span></p> <p class=3D"MsoNormal"><o:p> </o:p></p> <p class=3D"MsoNormal">Not sure if this is the best place to ask, but here = goes...<o:p></o:p></p> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">How should an iSCSI target (SCSI direct-access block= device) handle the following scenario:<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">An initiator issues an iSCSI Command Request PDU con= taining a SCSI Write CDB with a transfer length of 1 block. The iSCSI= Command Request PDU has an Expected Data Transfer Length of 512 bytes, a D= ata Segment Length of 512 bytes (immediate data), and the Final flag is set. This would be a perfectly normal s= ingle block write, except that the target's logical unit is formatted with = 4096-byte block size. So it appears the initiator is confused and sen= ding a single 512-byte block write to a logical unit that is formatted to 4KB block size.<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">Here are my thoughts:<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">1) The target could write the 512 bytes of immediate= data plus 3584 bytes (4096 minus 512) of whatever it wants to the media, a= nd then send an iSCSI Command Response PDU with SCSI status of Good and rep= orting an Overflow with a residual count of 3584. This seems to be the most correct way of handling thi= s scenario, but it seems dangerous to allow an apparently confused initiato= r to essentially corrupt data on the logical unit.<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">2) The target could send an iSCSI Command Respo= nse PDU with SCSI status of Check Condition, with sense data of Aborted Com= mand, Invalid Field in Command Information Unit (0x0E03). This sense = code is apparently intended for FCP (I found it mentioned in FCP-4) but it seems appropriate in this case. Assumi= ng the target can fail the SCSI Write command this way (or some other way),= should the target also report an Underflow with a residual count of 512?<o= :p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">Are there any other alternatives?<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">Thanks,<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal">Paul<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> </div> </body> </html> --_000_FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32SACEXCMBX04PRDh_-- --===============6250333758771559782== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Ips mailing list [email protected] https://www.ietf.org/mailman/listinfo/ips --===============6250333758771559782==--