On Thu, 23 Dec 2010 21:40:37 -0500 Douglas Gilbert wrote: > As discussed in a thread on this list titled: > "RFC: short reads on block devices" > this patch adds recommendations for LLDs to set resid > when there might be uncertainty about how much data > has been returned by a device. > > This patch inline and attached] is against scsi-misc-2.6.git > > > Signed-off-by: Douglas Gilbert <dgilbert@xxxxxxxxxxxx> > > > diff --git a/Documentation/scsi/scsi_mid_low_api.txt > b/Documentation/scsi/scsi_mid_low_api.txt > index df322c1..7bcdea7 100644 > --- a/Documentation/scsi/scsi_mid_low_api.txt > +++ b/Documentation/scsi/scsi_mid_low_api.txt > @@ -1351,6 +1351,18 @@ Members of interest: > report a DID_ERROR. Better for an LLD to implement > 'resid'. > > +It is recommended that a LLD set 'resid' on data transfers from a SCSI > +target device (e.g. READs). It is especially important that 'resid' is set > +when such data transfers have sense keys of MEDIUM ERROR and HARDWARE ERROR > +(and possibly RECOVERED ERROR). In these cases if a LLD is in doubt how much > +data has been received then the safest approach is to indicate no bytes have > +been received. For example: to indicate that no valid data has been received > +a LLD might use these helpers: > + scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); > +where 'SCpnt' is a pointer to a scsi_cmnd object. To indicate only three 512 > +bytes blocks has been received 'resid' could be set like this: > + scsi_set_resid(SCpnt, scsi_bufflen(SCpnt) - (3 * 512)); > + > The scsi_cmnd structure is defined in include/scsi/scsi_cmnd.h Hi Doug, Using "an LLD" instead of "a LLD" would be more consistent with the rest of this txt file (and read better to me). --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** desserts: http://www.xenotime.net/linux/recipes/ -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html