SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    RE: iSCSI: header digest error at initiator



    Santosh,
    
    Do not just use byte counting to validate delivery as there may be overlap.
    The word SHOULD and a real world of not all devices sending data according
    to this SHOULD... requires that you MUST not assume data is consecutive and
    not overlapping.  The non-consecutive nature may cause problems if you
    simply overlay data digests rather than stripping it off before placement.
    The problem with the overlap is obvious if you expect a byte count total to
    have meaning.
    
    From revision 3:
      "An R2T MAY be answered with one or more iSCSI Data-out PDU with a
       matching Target Transfer Tag. If an R2T is answered with a single
       Data PDU the Buffer Offset in the Data PDU MUST be the same as the
       one specified by the R2T and the data length of the Data PDU must not
       exceed the Desired Data Length specified in R2T. If the R2T is
       answered with a sequence of Data PDUs the Buffer Offset and Length
       must be within the range of those specified by R2T, the last PDU
       should have the F bit set to 1, the Buffer Offsets and Lengths for
       consecutive PDUs SHOULD form a continuous non-overlapping range and
       the PDUs should be sent in increasing offset order."
    
    Doug
    
    > Matt,
    >
    > My replies inline.
    >
    > Regards,
    > Santosh
    >
    > Matt Wakeley wrote:
    >
    > > Santosh Rao wrote:
    > > >
    > > > If this is the intention of the recommended error recovery, it is the
    > > > result of not allowing score-boarding. By score-boarding an initiator
    > > > would detect an underrun and would just error the affected I/O back.
    > >
    > > Two comments here.  First, in your example, the initiator is
    > inventing an
    > > error that really didn't occur in the target.  The target
    > completed the I/O
    > > successfully, it was the transport that experienced an error, but you're
    > > treating it like a target error.
    >
    > The LLP (initiator) would return an error to ULP indicating a
    > transport error
    > (service response of "service delivery or target failure")
    > occurred. [due to the
    > data underrun.]
    >
    >
    > > Second, you say that initiators and targets routinely perform
    > scoreboarding.
    > > How is this done today?  Buffer(s) are provided to an I/O chip.
    >  The I/O chip
    > > writes the data into the buffers.  It does not have the memory
    > to determine
    > > that each and every byte has been written to. So how is the
    > initiator/target
    > > supposed to be absolutely sure that every byte was written to?
    >
    > The initiator would use a check along the following lines  :
    >
    > (total bytes xfer'ed as indicated by the chip ) =
    > (no. of bytes of data xfer specified by ULP) - (resid reported by
    > the target in
    > SCSI Response PDU).
    >
    > to verify that all the data the target sent is accounted for at
    > the initiator
    > end.
    >
    >
    >
    >
    >
    
    


Home

Last updated: Tue Sep 04 01:05:49 2001
6315 messages in chronological order