|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: iSCSI: header digest error at initiatorSantosh, 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 |