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?



    > > 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.  
    
    I don't follow your thinking David - the initiator has *requested*
    resegmentation via a MaxRecvDataSegmentLength text request.  The foolproof
    way to "detect" that the target is resegmenting is receipt of the target's
    text response.
    
    > 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.  
    
    You seem to be thinking that an initiator would be sending SNACKs on this
    connection for the previous segment size immediately after it's requested a
    MaxRecvDataSegmentLength change?  That doesn't make sense to me.  The
    initiator should wait for the target's text response before continuing I/Os
    on this connection.  Thereafter, both ends know that that data sent as a
    result of a Data SNACK is resegmented and the initiator should send a Status
    SNACK for any Status PDU's received before the Text Response that were
    associated with the task that requires issuance of the Data SNACK.  Seems
    pretty simple to me.
    
    > 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.
    
    What do you mean by "if the target makes it's own choice to resegment"?
    Sounds like a target bug to me.  It feels like you're making this look more
    complicated than it really is.
    
    I think this new SNACK code is the wrong thing to do - it feels like adding
    a new feature with questionable value to provide a questionable "fix" for a
    questionable problem, and there's not sufficient time left for scrutiny of
    whether or not it presents a new set of problems.
    
    By my assessment, your solution to this problem fails Occam's Razor - if
    there are two functionally equivalent solutions to a problem, chose the
    simplest solution.  Mallikarjun points out a simple solution that is
    sufficient to solve the original problem without adding a new PDU type.
    
    Regards,
    Marjorie
    


Home

Last updated: Thu Jul 11 21:18:53 2002
11286 messages in chronological order