
From phughes@solidfire.com  Thu Sep 20 20:21:33 2012
Return-Path: <phughes@solidfire.com>
X-Original-To: ips@ietfa.amsl.com
Delivered-To: ips@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id ADD0621E80A6 for <ips@ietfa.amsl.com>; Thu, 20 Sep 2012 20:21:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.976
X-Spam-Level: 
X-Spam-Status: No, score=-2.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EMS84wE0j17a for <ips@ietfa.amsl.com>; Thu, 20 Sep 2012 20:21:33 -0700 (PDT)
Received: from mail-vc0-f172.google.com (mail-vc0-f172.google.com [209.85.220.172]) by ietfa.amsl.com (Postfix) with ESMTP id F1BDB21E809E for <ips@ietf.org>; Thu, 20 Sep 2012 20:21:32 -0700 (PDT)
Received: by vcbfo14 with SMTP id fo14so3653866vcb.31 for <ips@ietf.org>; Thu, 20 Sep 2012 20:21:32 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :x-gm-message-state; bh=tftAUKMqADu8Uu0ubnQJ5wkp6kxmyje2KDcVbpSVKQA=; b=ZNKwNgGHQBoeCRsdnlJQVFaBSecB8T0kOGzertpfCvC3xJ1heBQ+MFSZmYT3cOk44X m8DMQsbgWPnwCFiIpc0sBL6PJKsAw+PdUWkESQZd6e7MOPhu/N7nyjg0w4OGMTzbGbtA 9x9itKSMGOQ0CgKCHqLCptMZznJ545VbTwCzJ4Ev5Zs+vVfoVJiFh2il18T/jM97ZVSr NyA69dTRUtQExDODZviwtxj9GqIj3svMWRNcq5tUOjGBzr8XSqlha4osYAiH8NRQLyPn vtpXyl5OS57dWybXC0bHpFMboav0AMwMzEl+zbOscd+o9agCy2/QqrT7UwHwf8Z3LAGj Y4Nw==
MIME-Version: 1.0
Received: by 10.220.116.9 with SMTP id k9mr2253667vcq.0.1348197692186; Thu, 20 Sep 2012 20:21:32 -0700 (PDT)
Received: by 10.58.18.174 with HTTP; Thu, 20 Sep 2012 20:21:32 -0700 (PDT)
Date: Thu, 20 Sep 2012 21:21:32 -0600
Message-ID: <CAGBQytv=iMoqW372kYs1Ltf=Wd4GVdCytOa2hJdEX7Nu9JTT_g@mail.gmail.com>
From: Paul Hughes <phughes@solidfire.com>
To: ips@ietf.org
Content-Type: multipart/alternative; boundary=f46d043894a9879eae04ca2dbc33
X-Gm-Message-State: ALoCoQkriR3MPLO/CYzZiFmqCMdDOYfz648QisM3SfN9Vf9hZV0PmvGzLRHoj5Ahch1tPEt1C1Sw
Subject: [Ips] Data Out residual overflow/underflow handling
X-BeenThere: ips@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IP Storage <ips.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ips>, <mailto:ips-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ips>
List-Post: <mailto:ips@ietf.org>
List-Help: <mailto:ips-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ips>, <mailto:ips-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 21 Sep 2012 03:21:33 -0000

--f46d043894a9879eae04ca2dbc33
Content-Type: text/plain; charset=ISO-8859-1

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
following scenario:

An initiator issues an iSCSI Command Request PDU containing 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 Data Segment Length of 512
bytes (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 formatted 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
Command 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
handling this scenario, but it seems dangerous to allow an apparently
confused initiator 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
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.  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

--f46d043894a9879eae04ca2dbc33
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Not sure if this is the best place to ask, but here goes...<div><br></div><=
div>How should an iSCSI target (SCSI direct-access block device) handle the=
 following scenario:</div><div><br></div><div>An initiator issues an iSCSI =
Command Request PDU containing a SCSI Write CDB with a transfer length of 1=
 block. =A0The iSCSI Command Request PDU has an Expected Data Transfer Leng=
th of 512 bytes, a Data Segment Length of 512 bytes (immediate data), and t=
he Final flag is set. =A0This would be a perfectly normal single block writ=
e, except that the target&#39;s logical unit is formatted with 4096-byte bl=
ock size. =A0So it appears the initiator is confused and sending a single 5=
12-byte block write to a logical unit that is formatted to 4KB block size.<=
/div>

<div><br></div><div>Here are my thoughts:</div><div><br></div><div>1) The t=
arget could write the 512 bytes of immediate data plus 3584 bytes (4096 min=
us 512) of whatever it wants to the media, and then send an iSCSI Command R=
esponse PDU with SCSI status of Good and reporting an Overflow with a resid=
ual count of 3584. =A0This 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.</div>
<div><br></div><div>2) The target could send an iSCSI=A0Command Response PD=
U with SCSI status of Check Condition, with sense data of Aborted Command, =
Invalid Field in Command Information Unit (0x0E03). =A0This sense code is a=
pparently intended for FCP (I found it mentioned in FCP-4) but it seems app=
ropriate in this case. =A0Assuming the target can fail the SCSI Write comma=
nd this way (or some other way), should the target also report an Underflow=
 with a residual count of 512?</div>

<div><br></div><div>Are there any other alternatives?</div><div><br></div><=
div>Thanks,</div><div>Paul</div><div><br></div><div><br></div><div><br></di=
v>

--f46d043894a9879eae04ca2dbc33--

From Frederick.Knight@netapp.com  Fri Sep 21 07:00:27 2012
Return-Path: <Frederick.Knight@netapp.com>
X-Original-To: ips@ietfa.amsl.com
Delivered-To: ips@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 87DF621F883E for <ips@ietfa.amsl.com>; Fri, 21 Sep 2012 07:00:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.598
X-Spam-Level: 
X-Spam-Status: No, score=-10.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id O1MYTlNO3hH0 for <ips@ietfa.amsl.com>; Fri, 21 Sep 2012 07:00:24 -0700 (PDT)
Received: from mx2.netapp.com (mx2.netapp.com [216.240.18.37]) by ietfa.amsl.com (Postfix) with ESMTP id 6B30421F883C for <ips@ietf.org>; Fri, 21 Sep 2012 07:00:24 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="4.80,463,1344236400";  d="scan'208,217";a="692353614"
Received: from smtp2.corp.netapp.com ([10.57.159.114]) by mx2-out.netapp.com with ESMTP; 21 Sep 2012 07:00:24 -0700
Received: from vmwexceht03-prd.hq.netapp.com (vmwexceht03-prd.hq.netapp.com [10.106.76.241]) by smtp2.corp.netapp.com (8.13.1/8.13.1/NTAP-1.6) with ESMTP id q8LE0NoM011340; Fri, 21 Sep 2012 07:00:23 -0700 (PDT)
Received: from SACEXCMBX04-PRD.hq.netapp.com ([169.254.6.102]) by vmwexceht03-prd.hq.netapp.com ([10.106.76.241]) with mapi id 14.02.0309.002; Fri, 21 Sep 2012 07:00:22 -0700
From: "Knight, Frederick" <Frederick.Knight@netapp.com>
To: Paul Hughes <phughes@solidfire.com>, "ips@ietf.org" <ips@ietf.org>
Thread-Topic: [Ips] Data Out residual overflow/underflow handling
Thread-Index: AQHNl6g2O+NxDnTbLUmdQtQdgB+XcJeUsD4Q
Date: Fri, 21 Sep 2012 14:00:21 +0000
Message-ID: <FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32@SACEXCMBX04-PRD.hq.netapp.com>
References: <CAGBQytv=iMoqW372kYs1Ltf=Wd4GVdCytOa2hJdEX7Nu9JTT_g@mail.gmail.com>
In-Reply-To: <CAGBQytv=iMoqW372kYs1Ltf=Wd4GVdCytOa2hJdEX7Nu9JTT_g@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.104.60.115]
Content-Type: multipart/alternative; boundary="_000_FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32SACEXCMBX04PRDh_"
MIME-Version: 1.0
Subject: Re: [Ips] Data Out residual overflow/underflow handling
X-BeenThere: ips@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IP Storage <ips.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ips>, <mailto:ips-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ips>
List-Post: <mailto:ips@ietf.org>
List-Help: <mailto:ips-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ips>, <mailto:ips-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 21 Sep 2012 14:00:27 -0000

--_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: t10@t10.org<mailto:t10@t10.org> (T10 defines the SCSI architecture an=
d writes the various SCSI command standards).

                Fred Knight


From: ips-bounces@ietf.org [mailto:ips-bounces@ietf.org] On Behalf Of Paul =
Hughes
Sent: Thursday, September 20, 2012 11:22 PM
To: ips@ietf.org
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:filelist.xml@01CD97DC.54AC9C10"><!--[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"&#45;-"/>
<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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</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:&quot;Arial&quot;,&quot;sa=
ns-serif&quot;">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:&quot;Cali=
bri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Roman=
&quot;;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:&quot;Arial&quot;,&quot;sa=
ns-serif&quot;"><o:p>&nbsp;</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:&quot;Arial&quot;,&quot;sa=
ns-serif&quot;">The degree that the medium is altered by this command is ve=
ndor specific.</span><span style=3D"font-size:11.0pt;font-family:&quot;Cali=
bri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Roman=
&quot;;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:&quot;Calibri&quot;,&quot;=
sans-serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D"><o:p>&nbsp;</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:&quot;Calibri&quot;,&quot;=
sans-serif&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;color:#1F=
497D">But those aren&#8217;t directly related.<span style=3D"mso-spacerun:y=
es">&nbsp;
</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 &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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 &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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:&quot;Cali=
bri&quot;,&quot;sans-serif&quot;;color:#1F497D"><span style=3D"mso-list:Ign=
ore">c)<span style=3D"font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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:&quot;Calibri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;T=
imes New Roman&quot;;color:#1F497D"><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D">Case a) and c) allow the media to be modified.<span=
 style=3D"mso-spacerun:yes">&nbsp;
</span>Case b) implies no media alteration (since no data is transferred).<=
span style=3D"mso-spacerun:yes">&nbsp;
</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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D">RFC5048 says:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:black"><span style=3D"mso-spacerun:yes">&nbsp;&nbsp;
</span>If SPDTL &gt; 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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:black"><span style=3D"mso-spacerun:yes">&nbsp;&nbsp;
</span>SCSI Response PDU as specified in [RFC3720].<span style=3D"mso-space=
run:yes">&nbsp;
</span>The Residual Count MUST<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:black"><span style=3D"mso-spacerun:yes">&nbsp;&nbsp;
</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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;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">&nbsp;
</span>I couldn&#8217;t quickly find any suggestions in RFC3720/5048 for se=
nse data, so I&#8217;d suggest you go with choice b) or c) that FCP is usin=
g (I&#8217;d suggest staying away from choice a) since it has bad possibili=
ties).<span style=3D"mso-spacerun:yes">&nbsp;
</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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D">The other list you might use for these kinds of que=
stions is the SCSI reflector:
<a href=3D"mailto:t10@t10.org">t10@t10.org</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:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><span style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Fred Knight<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;mso-bidi-font-family:&quot;Times New Rom=
an&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Times Ne=
w Roman&quot;">From:</span></b><span style=3D"font-size:10.0pt;font-family:=
&quot;Tahoma&quot;,&quot;sans-serif&quot;;mso-fareast-font-family:&quot;Tim=
es New Roman&quot;"> ips-bounces@ietf.org
 [mailto:ips-bounces@ietf.org] <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> ips@ietf.org<br>
<b>Subject:</b> [Ips] Data Out residual overflow/underflow handling<o:p></o=
:p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</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>&nbsp;</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>&nbsp;</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. &nbsp;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. &nbsp;This would be a perfectly normal s=
ingle block write, except that the target's logical unit is formatted with =
4096-byte block size. &nbsp;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>&nbsp;</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>&nbsp;</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. &nbsp;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>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal">2) The target could send an iSCSI&nbsp;Command Respo=
nse PDU with SCSI status of Check Condition, with sense data of Aborted Com=
mand, Invalid Field in Command Information Unit (0x0E03). &nbsp;This sense =
code is apparently intended for FCP (I found
 it mentioned in FCP-4) but it seems appropriate in this case. &nbsp;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>&nbsp;</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>&nbsp;</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>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</div>
</body>
</html>

--_000_FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32SACEXCMBX04PRDh_--

From phughes@solidfire.com  Fri Sep 21 08:45:18 2012
Return-Path: <phughes@solidfire.com>
X-Original-To: ips@ietfa.amsl.com
Delivered-To: ips@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 599D521E8040 for <ips@ietfa.amsl.com>; Fri, 21 Sep 2012 08:45:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.976
X-Spam-Level: 
X-Spam-Status: No, score=-2.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KxFMK9wWXjcA for <ips@ietfa.amsl.com>; Fri, 21 Sep 2012 08:45:17 -0700 (PDT)
Received: from mail-vb0-f44.google.com (mail-vb0-f44.google.com [209.85.212.44]) by ietfa.amsl.com (Postfix) with ESMTP id F380321E803D for <ips@ietf.org>; Fri, 21 Sep 2012 08:45:16 -0700 (PDT)
Received: by vbbfc26 with SMTP id fc26so4367145vbb.31 for <ips@ietf.org>; Fri, 21 Sep 2012 08:45:16 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=TELgdrY/DnuEgz8KKaoOzLPC/xIMPanM0T8E8xZqLzU=; b=F64ehyACvi9hF0GoJ7gPSCX8TXhQuNZjb5cY0wXRwMp+HQD6n34nsPHKoViECMvjaJ 5Ow6tZBVFuRNFI481wWfq4DQ1Qgc1QMwVjpdew9lcKnJ4OaoSlnvO7hupkuSoomCSwsq 1nv5RQMyKoPclRU/OcCAEwE+GA8P32rKsFP2Sm+JXA054VUUNIoG2w6EmftWSbhGQjv/ Q16WANeRqMv5S06LRHKaUc8Z/hSM0Vw8Z+d67jMglDptP8C1siRp/Vlm4ukvv8Gx7y7y wuxIZ7CpE+A9AHFXrhS6u7sVceMUal/0gs8s5bYWqMlNbb777LqLRfw68oOAut9QSWQy rYRA==
MIME-Version: 1.0
Received: by 10.52.37.229 with SMTP id b5mr2592797vdk.70.1348242316194; Fri, 21 Sep 2012 08:45:16 -0700 (PDT)
Received: by 10.58.18.174 with HTTP; Fri, 21 Sep 2012 08:45:16 -0700 (PDT)
In-Reply-To: <FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32@SACEXCMBX04-PRD.hq.netapp.com>
References: <CAGBQytv=iMoqW372kYs1Ltf=Wd4GVdCytOa2hJdEX7Nu9JTT_g@mail.gmail.com> <FFEE311F0EC80C4EA64EC8757CAD0CD208EA1E32@SACEXCMBX04-PRD.hq.netapp.com>
Date: Fri, 21 Sep 2012 09:45:16 -0600
Message-ID: <CAGBQytuQdSdUxgaMBPgaUp2mC1aJDy1y6ePy4JAmbJWDe7TDZQ@mail.gmail.com>
From: Paul Hughes <phughes@solidfire.com>
To: "Knight, Frederick" <Frederick.Knight@netapp.com>
Content-Type: multipart/alternative; boundary=bcaec51d2e4453f30b04ca382056
X-Gm-Message-State: ALoCoQkGmIh9WE8AH/kSGPbj9L83YwsYZAytC0w/G8B8a0B6x5gLY7gkQtK5WIw+Elujsud6Q/xl
Cc: "ips@ietf.org" <ips@ietf.org>
Subject: Re: [Ips] Data Out residual overflow/underflow handling
X-BeenThere: ips@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IP Storage <ips.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ips>, <mailto:ips-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ips>
List-Post: <mailto:ips@ietf.org>
List-Help: <mailto:ips-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ips>, <mailto:ips-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 21 Sep 2012 15:45:18 -0000

--bcaec51d2e4453f30b04ca382056
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Thanks for the detailed response Fred.  I will post this question to the
T10 reflector to see what they have to say, but thought I'd start here.

One follow up question:  If the initiator didn't send any immediate data
(the iSCSI Command Request PDU EDTL=3D512, but the data segment length is 0
and the Final bit is set), would the target have the same options?  I
believe the only difference would be the Sense Key that is reported
(Illegal Request if no immediate data was transferred, and Aborted Command
if immediate data was transferred).  I expect the residual reporting would
remain the same regardless of whether any data was transferred or not,
correct?

Thanks,
Paul



On Fri, Sep 21, 2012 at 8:00 AM, Knight, Frederick <
Frederick.Knight@netapp.com> wrote:

>  You have a couple of choices.****
>
> ** **
>
> For example, SBC makes several statements about non-deterministic outcome=
s
> such as:****
>
> ** **
>
> The device server may terminate the command before processing or after th=
e
> 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=92t directly related.  However, as you mention, FCP provid=
es
> the following 3 choice:****
>
> If the command requested that data beyond the length specified by the FCP=
_DL
> 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
> count 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 FIELD IN COMMAND INFORMATION UNIT; or****
>
> **c)           **may 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 COMMAND INFORMATION UNIT.****
>
> ** **
>
> Case a) and c) allow the media to be modified.  Case b) implies no media
> alteration (since no data is transferred).  Choice b) and c) include SCSI
> layer sense data, but choice a) includes only an FCP layer notification (=
no
> SCSI sense data, so a broken host (one that ignores residual unless a che=
ck
> condition 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=
 size.
> ****
>
> ** **
>
> 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 response PDU).  I couldn=92=
t
> quickly find any suggestions in RFC3720/5048 for sense data, so I=92d sug=
gest
> you go with choice b) or c) that FCP is using (I=92d suggest staying away
> from choice a) since it has bad possibilities).  At least that is
> something hosts should already be familiar with.****
>
> ** **
>
> The other list you might use for these kinds of questions is the SCSI
> reflector: t10@t10.org (T10 defines the SCSI architecture and writes the
> various SCSI command standards).****
>
> ** **
>
>                 Fred Knight****
>
> ** **
>
> ** **
>
> *From:* ips-bounces@ietf.org [mailto:ips-bounces@ietf.org] *On Behalf Of =
*Paul
> Hughes
> *Sent:* Thursday, September 20, 2012 11:22 PM
> *To:* ips@ietf.org
> *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
> following scenario:****
>
> ** **
>
> An initiator issues an iSCSI Command Request PDU containing 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 Data Segment Length of 5=
12
> bytes (immediate data), and the Final flag is set.  This would be a
> perfectly normal single block write, except that the target's logical uni=
t
> is formatted 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 iSCS=
I
> Command 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
> handling this scenario, but it seems dangerous to allow an apparently
> confused initiator to essentially corrupt data on the logical unit.****
>
> ** **
>
> 2) The target could send an iSCSI Command Response PDU with SCSI status o=
f
> Check Condition, with sense data of Aborted Command, Invalid Field in
> Command Information Unit (0x0E03).  This sense code is apparently intende=
d
> for FCP (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 residu=
al
> count of 512?****
>
> ** **
>
> Are there any other alternatives?****
>
> ** **
>
> Thanks,****
>
> Paul****
>
> ** **
>
> ** **
>
> ** **
>

--bcaec51d2e4453f30b04ca382056
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Thanks for the detailed response Fred. =A0I will post this question to the =
T10 reflector to see what they have to say, but thought I&#39;d start here.=
<div><br></div><div>One follow up question:=A0=A0If the initiator didn&#39;=
t send any immediate data (the iSCSI Command Request PDU EDTL=3D512, but th=
e data segment length is 0 and the Final bit is set), would the target have=
 the same options? =A0I believe the only difference would be the Sense Key =
that is reported (Illegal Request if no immediate data was transferred, and=
 Aborted Command if immediate data was transferred). =A0I expect the residu=
al reporting would remain the same regardless of whether any data was trans=
ferred or not, correct?</div>
<div><br></div><div>Thanks,</div><div>Paul<br><div><br></div><div><br><br><=
div class=3D"gmail_quote">On Fri, Sep 21, 2012 at 8:00 AM, Knight, Frederic=
k <span dir=3D"ltr">&lt;<a href=3D"mailto:Frederick.Knight@netapp.com" targ=
et=3D"_blank">Frederick.Knight@netapp.com</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">







<div lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d">You have a couple of choi=
ces.<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d">For example, SBC makes se=
veral statements about non-deterministic outcomes such as:<u></u><u></u></s=
pan></p>

<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;">The device =
server may terminate the command before processing or after the device serv=
er has transferred some or all
 of the data. </span><span style=3D"font-size:11.0pt;font-family:&quot;Cali=
bri&quot;,&quot;sans-serif&quot;;color:#1f497d">(<span>walking</span> off t=
he end of the device)<u></u><u></u></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;"><u></u>=A0<=
u></u></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;">The degree =
that the medium is altered by this command is vendor specific.</span><span =
style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&=
quot;;color:#1f497d">
 (The format command)<u></u><u></u></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f4=
97d"><u></u>=A0<u></u></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f4=
97d">But those aren=92t directly related.<span>=A0
</span>However, as you mention, FCP provides the following 3 choice:</span>=
<span style><u></u><u></u></span></p>
<p style=3D"margin-right:0in;margin-bottom:5.0pt;margin-left:0in;text-align=
:justify">
<span><span style=3D"font-size:10.0pt">If the command requested that data b=
eyond the length specified by the
</span></span><span><span style=3D"font-size:8.0pt">FCP</span></span><span>=
<span style=3D"font-size:10.0pt">_</span></span><span><span style=3D"font-s=
ize:8.0pt">DL
</span></span><span><span style=3D"font-size:10.0pt">field be transferred, =
then the device server shall set the
</span></span><span><span style=3D"font-size:8.0pt">FCP_RESID_OVER
</span></span><span><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"><u></=
u><u></u></span></p>
<p style=3D"margin-left:60.35pt;text-align:justify">
<u></u><span style=3D"font-size:10.0pt"><span>a)<span style=3D"font:7.0pt &=
quot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0
</span></span></span><u></u><span><span style=3D"font-size:10.0pt">process =
the command normally except that data beyond the
</span></span><span><span style=3D"font-size:8.0pt">FCP</span></span><span>=
<span style=3D"font-size:10.0pt">_</span></span><span><span style=3D"font-s=
ize:8.0pt">DL
</span></span><span><span style=3D"font-size:10.0pt">count shall not be req=
uested or transferred;</span></span><span style=3D"font-size:10.0pt"><u></u=
><u></u></span></p>
<p style=3D"margin-left:60.35pt;text-align:justify">
<u></u><span style=3D"font-size:10.0pt"><span>b)<span style=3D"font:7.0pt &=
quot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0
</span></span></span><u></u><span><span style=3D"font-size:10.0pt">transfer=
 no data and return CHECK CONDITION status with the sense key set to ILLEGA=
L REQUEST and the additional sense code set to INVALID FIELD IN COMMAND INF=
ORMATION UNIT;
 or</span></span><span style=3D"font-size:10.0pt"><u></u><u></u></span></p>
<p style=3D"margin-left:60.35pt;text-autospace:none">
<u></u><span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,&quo=
t;sans-serif&quot;;color:#1f497d"><span>c)<span style=3D"font:7.0pt &quot;T=
imes New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span><u></u><span><span><span style=3D"font-size:10.0pt">ma=
y</span></span></span><span><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:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u><u></u=
></span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d">Case a) and c) allow the =
media to be modified.<span>=A0
</span>Case b) implies no media alteration (since no data is transferred).<=
span>=A0
</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).<u></u><u></u></span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d">RFC5048 says:<u></u><u></=
u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;"><span>=A0=A0
</span>If SPDTL &gt; EDTL for a task, iSCSI Overflow MUST be signaled in th=
e<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;"><span>=A0=A0
</span>SCSI Response PDU as specified in [RFC3720].<span>=A0
</span>The Residual Count MUST<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;"><span>=A0=A0
</span><span>be</span> set to the numerical value of (SPDTL - EDTL).<u></u>=
<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d">SPDTL =3D the SCSI layer =
transfer size; EDTL =3D the iSCSI layer transfer size.<u></u><u></u></span>=
</p>

<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d">Since the SCSI layer tran=
sfer 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>=A0
</span>I couldn=92t quickly find any suggestions in RFC3720/5048 for sense =
data, so I=92d suggest you go with choice b) or c) that FCP is using (I=92d=
 suggest staying away from choice a) since it has bad possibilities).<span>=
=A0
</span>At least that is something hosts should already be familiar with.<u>=
</u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d">The other list you might =
use for these kinds of questions is the SCSI reflector:
<a href=3D"mailto:t10@t10.org" target=3D"_blank">t10@t10.org</a> (T10 defin=
es the SCSI architecture and writes the various SCSI command standards).<u>=
</u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><span>=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0
</span>Fred Knight<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u>=A0<u></u></span><=
/p>
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> <a href=
=3D"mailto:ips-bounces@ietf.org" target=3D"_blank">ips-bounces@ietf.org</a>
 [mailto:<a href=3D"mailto:ips-bounces@ietf.org" target=3D"_blank">ips-boun=
ces@ietf.org</a>] <b>On Behalf <span>Of</span> </b>Paul Hughes<br>
<b>Sent:</b> Thursday, September 20, 2012 11:22 PM<br>
<b>To:</b> <a href=3D"mailto:ips@ietf.org" target=3D"_blank">ips@ietf.org</=
a><br>
<b>Subject:</b> [Ips] Data Out residual overflow/underflow handling<u></u><=
u></u></span></p><div><div class=3D"h5">
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
<p class=3D"MsoNormal">Not sure if this is the best place to ask, but here =
goes...<u></u><u></u></p>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
<div>
<p class=3D"MsoNormal">How should an iSCSI target (SCSI direct-access block=
 device) handle the following scenario:<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></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. =A0The iSCSI Co=
mmand Request PDU has an Expected Data Transfer Length of 512 bytes, a Data=
 Segment Length of 512 bytes (immediate
 data), and the Final flag is set. =A0This would be a perfectly normal sing=
le block write, except that the target&#39;s logical unit is formatted with=
 4096-byte block size. =A0So it appears the initiator is confused and sendi=
ng a single 512-byte block write to a logical
 unit that is formatted to 4KB block size.<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
<div>
<p class=3D"MsoNormal">Here are my thoughts:<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></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. =A0This seems to be the most correct way of handling this s=
cenario, but it seems dangerous to allow an apparently confused initiator t=
o essentially corrupt data on the logical unit.<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
<div>
<p class=3D"MsoNormal">2) The target could send an iSCSI=A0Command Response=
 PDU with SCSI status of Check Condition, with sense data of Aborted Comman=
d, Invalid Field in Command Information Unit (0x0E03). =A0This sense code i=
s apparently intended for FCP (I found
 it mentioned in FCP-4) but it seems appropriate in this case. =A0Assuming =
the target can fail the SCSI Write command this way (or some other way), sh=
ould the target also report an Underflow with a residual count of 512?<u></=
u><u></u></p>

</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
<div>
<p class=3D"MsoNormal">Are there any other alternatives?<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
<div>
<p class=3D"MsoNormal">Thanks,<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal">Paul<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=A0<u></u></p>
</div>
</div></div></div>
</div>

</blockquote></div><br></div></div>

--bcaec51d2e4453f30b04ca382056--
