Is scsi_cmnd::underflow still useful?
Doesn't look like many LLDs act on scsi_cmnd::underflow. Seems to me that scsi_cmnd::resid is a more general replacement.
Comments?
Doug Gilbert
Quoted 3 lines · Douglas Gilbert
Doesn't look like many LLDs act on
scsi_cmnd::underflow. Seems to me thatscsi_cmnd::residis a more general replacement.
well, I know I suggested a recent use of it to the USB people , so I don't think it's entirely unused. resid can't be a replacement because they mean different things:
resid - number of bytes left over after a transaction underflow - driver must return error if less than this amount transferred.
James
Quoted 5 lines · James Bottomley
Quoted 3 lines · Douglas Gilbert
Doesn't look like many LLDs act on
scsi_cmnd::underflow. Seems to me thatscsi_cmnd::residis a more general replacement.
Quoted 7 lines
well, I know I suggested a recent use of it to the USB people , so I don't think it's entirely unused. resid can't be a replacement because they mean different things:
resid - number of bytes left over after a transaction underflow - driver must return error if less than this amount transferred.
I think the recent USB usage of it was because some mid-level drivers look for the error condition related to the underflow value.
We don't really use it, other than to trigger an error.
Matt
Signature · 6 lines
Matthew Dharm Home: [email protected] Maintainer, Linux USB Mass Storage Driver Stef, you just got beaten by a ball of DIRT. -- Greg User Friendly, 12/7/1997
Quoted 7 lines · James Bottomley
Quoted 3 lines · Douglas Gilbert
Doesn't look like many LLDs act on
scsi_cmnd::underflow. Seems to me thatscsi_cmnd::residis a more general replacement.
Quoted 7 lines
well, I know I suggested a recent use of it to the USB people , so I don't think it's entirely unused. resid can't be a replacement because they mean different things:
resid - number of bytes left over after a transaction underflow - driver must return error if less than this amount transferred.
James,
Here is a code snippet from one of the few LLDs that acts on scsi_cmnd::underflow: qla2xxx/qla_isr.c . It shows the relationship between request_buflen, resid and underflow:
if ((unsigned)(cp->request_bufflen - resid) <
cp->underflow) {
qla_printk(KERN_INFO, ha,
"scsi(%ld:%d:%d:%d): Mid-layer underflow "
"detected (%x of %x bytes)...returning "
"error status.\n",
ha->host_no, b, t, l, resid,
cp->request_bufflen);
cp->result = DID_ERROR << 16;
break;
}Rather than ask the LLD report an error (and leave the upper layers wondering if any data was sent or received) wouldn't it be better to allow the issuer of the scsi_cmnd object to decide whether the response was deficient (based on resid)?
I am responsible for resid being added (in the lk 2.3 series) at the prompting of Joerg Schilling. The scsi_cmnd::underflow parameter was not of use to him, even if I exposed it to applications via sg_io_hdr. resid is a "steal" from CAM and the only complaints I have received about it are concerning LLDs that do _not_ implement it.
Doug Gilbert