SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    iSCSI: DLB-T.30 (using SNACK w/ PDU size changes)


    • To: <ips@ece.cmu.edu>
    • Subject: iSCSI: DLB-T.30 (using SNACK w/ PDU size changes)
    • From: "Mallikarjun C." <cbm@rose.hp.com>
    • Date: Tue, 9 Jul 2002 15:48:34 -0700
    • Content-Transfer-Encoding: 7bit
    • Content-Type: text/plain;charset="iso-8859-1"
    • Sender: owner-ips@ece.cmu.edu

    David,
    
    You're right that there's a duplicate StatSN issue with the rev14 text.
    
    I believe that can be addressed by mandating that the initiators must 
    discard the first status PDU always for the task in question, and then issue
    a follow-on status SNACK.  It may occasionally lead to discarding a good 
    status (with the right ExpDataSN that reflects the re-segmented DataSN 
    count), but that would anyway be recovered with the explicit follow-on status 
    SNACK.
    
    I don't believe we need to make BegRun=0 for these cases, nor do I believe
    that we need a new type of data SNACK.   
    
    Mallikarjun
    
    > [T.30] 9.16   SNACK Request
    > 
    >    If the initiator MaxRecvDataSegmenTLength changed Data-In PDUs 
    >    requested with RunLength 0 (meaning all PDUs after this number) may 
    >    be different from the ones originally sent, in order to reflect 
    >    changes in MaxRecvDataSegmentLength. Their DataSN starts with the 
    >    requested number and is increased by 1 for each resent Data-In PDU.
    >    If DataSN numbers change and a SCSI-Reponse PDU was sent reflecting 
    >    the DataSN before retransmission it MUST be resent to reflect the new 
    >    numbers.
    > 
    > This was discussed on the list, but there are still some problems here:
    > (1) If the MaxRecvDataSegmentLength has changed, the only valid Data
    > SNACK is BegRun=0, RunLength=0 (i.e., resend everything).  Attempts
    > to be more clever than this are an invitation to miscount Data-In
    > PDUs and cause problems in the initiator.  Targets MUST reject
    > all other Data SNACK requests in this situation.
    > (2) The new SCSI-Response PDU needs a new StatSN to avoid the initiator
    > discarding it as a duplicate.  Section 2.2.2.2 is silent on
    > duplicate
    > detection for StatSN, but discarding duplicates would be a
    > reasonable
    > thing for an initiator to do.
    > (3) The initiator needs some way to know that a new response is coming,
    > and specifically whether to expect one or two responses.  If it
    > only expects one and two show up, the initiator could reuse the
    > Task Tag once all the data arrives causing a race in which the
    > new response could incorrectly complete an unrelated command
    > (unlikely, but potentially nasty).
    > This suggests calling out the <BegRun=0, RunLength=0> Data SNACK as having
    > special behavior:
    > - It may resegment Data-In PDUs to deal with
    > MaxRecvDataSegmentLength.
    > All other Data SNACK requests MUST NOT resegment.
    > - It *always* generates a new SCSI Response due to the possibility
    > of resegmentation.
    > That's not a great solution, because if one ever sets <BegRun=0,
    > RunLength=0>
    > in a Data SNACK, the resulting behavior change is dramatic and unexpected.
    > This leads to the final proposal:
    > - Specify a new SNACK type code (3) for Resegmenting Data SNACK.
    > SNACK
    > Data-In resegmentation is allowed only when this is used.
    > If
    > resegmentation would be necessary for a Data SNACK (type 1),
    > that SNACK MUST be rejected.
    > - Both BegRun and RunLength MUST be zero for a Resegmenting Data
    > SNACK, and (unlike reserved fields) these MUST be checked by
    > the receiver (target).
    > - A new SCSI Response is always generated as a result of a
    > Resegmenting
    > Data-In SNACK, and it has its own StatSN number to deal with
    > the
    > fact that the number of Data-In PDUs may have changed,
    > causing
    > a change to the ExpDataSN value.  This new response also
    > needs
    > to be marked to distinguish it from a response that may have
    > been generated earlier (so the initiator knows to wait for
    > the
    > new response) - using a bit in the flags field for this
    > seems
    > wrong, so specifying a new Response code value (0x02 - see
    > 9.4.3)
    > seems like a reasonable way to accomplish this.
    > - Data SNACK (type 1) now has consistent behavior - it MUST NOT
    > resegment
    > and MUST NOT generate a new SCSI response, ever.
    > This approach also has the potentially useful property of making it easy
    > to yank out the Resegmenting Data SNACK wart if we ever put restrictions
    > on the interaction of MaxRecvDatasegmentLength and Data SNACKs (yes, that's
    > a hint ... this has gotten messy enough that forbidding Data SNACKs when
    > MaxRecvDataSegmentLength has changed needs to be considered as a possible
    > alternative).
    > 
    > This issue also affects some text in 9.16.3.
    
      
    
    


Home

Last updated: Sun Jul 14 23:19:11 2002
11319 messages in chronological order