SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    RE: iSCSI: need for new data SNACK code?



    Well - I tend to agree with Mallikarjun that this new code was not strictly
    required.
    But I added it  nevertheless for several reason:
    
       it does really no harm
       The "settling time" of a change in MaxRecvPDULength vs. data is not
       synchronized with command execution or even between connections so
       setting clear expectations is not bad. It also helps building
       sophisticated initiators that don't have to synchronize different
       threads.
       the burden of resending status went on the transmitter and that would
       have been confusing. Please pay attention to the fact that initiator has
       now to ask for the status if it wants it again. That is not really
       related but easier to do now and it was one technical issue that David
       raised that I would have also called technical and not syntactic sugar.
       All the plugfests have not shown yet a large number of within command
       recovery (I counted 2) although interest was expressed in private by
       many
    
    The new text takes also care about all the issues related to rejects (i.e.
    - it is tolerant).
    I suggest we close this thread and will fix the appendix soon.
    
    Julo
    
    
    
                                                                                                                                                
                          Black_David@emc.c                                                                                                     
                          om                       To:       cbm@rose.hp.com                                                                    
                          Sent by:                 cc:       ips@ece.cmu.edu                                                                    
                          owner-ips@ece.cmu        Subject:  RE: iSCSI: need for new data SNACK code?                                           
                          .edu                                                                                                                  
                                                                                                                                                
                                                                                                                                                
                          07/12/2002 12:40                                                                                                      
                          AM                                                                                                                    
                          Please respond to                                                                                                     
                          Black_David                                                                                                           
                                                                                                                                                
                                                                                                                                                
    
    
    
    Mallikarjun,
    
    > I am still unclear about the need to add the new data SNACK
    > code.  IMHO, this can only be confusing to both initiator and target
    > implementers - to have two codes that have identical semantics
    > on the wire.
    >
    > The only remaining reason that I see from David (attached below)
    > is that the new code makes the initiator aware that it must request
    > status retransmission.  IOW, you're expecting the initiator
    > to be careful
    > enough to use the new code, but somehow you don't expect it to be
    > attentive enough to discard the status PDU unless it had used
    > this new
    > code in an *outbound* SNACK.  I completely miss this rationale.
    
    I disagree with the "careful enough" characterization.  The new code
    provides the initiator with a more robust way to detect resegmentation
    by requiring the initiator to explicitly ask for it.  The initiator
    can take a simple approach of always starting with the existing
    Data SNACK code that does not resegment and only using the new code
    when the non-resegmenting SNACK doesn't work.  If the target makes
    its own choice to resegment, and the initiator doesn't think the
    target resegmented, there are error scenarios that combine this with
    corrupt Data PDU headers to cause the initiator to successfully
    complete a SCSI command that has not delivered all its data
    (the resegmented PDUs caused the Data PDU count to match the ExpDataSN
    value in the response that should have been discarded, but wasn't).
    While these should be rare, their consequences can be catastrophic.
    
    > I'd buy the new code if it's meant to convey something different to
    > *targets* because they need to process these SNACK PDUs.  I see
    > nothing that the targets need to different in satisfying either SNACK.
    > Both parties are aware of the fact of PDU size change, it
    > had happened.
    
    It is conveying the Initiator's instructions that resegmentation is
    permitted.  I am not comfortable with the last sentence above that assumes
    that the Initiator and Target will always have identical views of all of
    the effects of a full feature phase PDU size change - (which is
    a rare event to begin with, and hence likely to involve code that
    isn't well exercised/tested).
    
    > The only two changes from the rev14 text that I propose are that we add:
    >
    >    a) The first status PDU must always be dropped after a
    >                        MaxRecvDataSegmentLength change, if ever a data
    SNACK is
    >                        employed for the task.
    
    When does this obligation to drop the first status PDU expire?  I think
    the Initiator has to mark all commands that are outstanding or become
    outstanding between the time it starts the negotiation that changes
    MaxRecvDataSegmentLength and the time that it gets the final Text Response
    of that negotiation from the target.  This requires additional Initiator
    state per command for something that almost never happens, and if it
    gets one of these markings wrong, it's vulnerable to failing to deliver
    all the data for a SCSI command in a compound error situation.  An
    alternative with the new code could involve a single bit per connection
    that records whether the PDU size was ever changed (if so, retry any
    failed Data SNACK as a resegmenting Data SNACK).
    
    >                        Initiator MUST issue a status SNACK to recover the
    >                        status PDU (i.e. move the onus of retransmitting
    >                        status from the target to the initiator).
    >     b) A SNACK requesting an R2T, Data or Status PDU for a task MUST be
    >           issued before the status for the task is acknowledged.
    
    I have no problem with these two.
    
    > I'll be glad to see any technical reasons that I am
    > overlooking, that require two codes.
    
    See above.  This is somewhat analogous to the "if in doubt, negotiate
    it" principle for login - telling the other side *exactly* what is wanted
    is more robust than assuming that it will do what is wanted, and in
    this resegmenting Data SNACK case, there are potentially nasty
    consequences to an incorrect assumption.  Does this make any sense?
    
    > I'd assume Elizabeth would be the process co-chair, if need be.
    
    Yes.
    
    Thanks,
    --David
    
    
    > T.30 (Resegmenting may come as a surprize - suggested a
    > different request)
    > Ouch - the new SNACK type code was inserted in the middle of the
    > sequence making this change not backwards compatible with earlier
    > versions. Please use 3 for the new R-Data SNACK and leave 0, 1
    > and 2 unchanged from -14.
    >
    > I am ok with the Initiator deciding whether it needs a new
    > Response and using the existing Status SNACK mechanism to get it -
    > that's definitely cleaner than my proposed abuse of the service
    > response code.  The current working draft uses a MAY for the
    > initiator requesting a status retransmit - I prefer Mallikarjun's
    > proposal on the list that the initiator MUST discard the first
    > Response PDU and MUST use a Status SNACK to get one that is certain
    > to reflect any resegmentation.  I still disagree with Mallikarjun
    > about the new R-Data SNACK type code - I would prefer to see this
    > code used so that the initiator is clearly aware that it is in a
    > situation where it MUST request status retransmission.  Getting
    > this wrong risks returning incomplete data on a READ.
    
    
    
    
    


Home

Last updated: Mon Jul 15 17:18:51 2002
11326 messages in chronological order