On Tue, May 12 2009, Tejun Heo wrote: > Commit c3a4d78c580de4edc9ef0f7c59812fb02ceb037f introduced > rq->data_len and converted residual count users to it. While > converting, it mistakenly converted scsi_end_request() to finish > requests with residual count when it wants to do is fully complete the > request. Fix it by using blk_end_request_all() instead. > > This bug was spotted by Boaz Harrosh. Added, thanks. > > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx> > Spotted-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx> > Cc: Jens Axboe <jens.axboe@xxxxxxxxxx> > Cc: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> > Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> > --- > drivers/scsi/scsi_lib.c | 7 +------ > 1 file changed, 1 insertion(+), 6 deletions(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index a54bec9..e410d66 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -546,14 +546,9 @@ static struct scsi_cmnd *scsi_end_request(struct scsi_cmnd *cmd, int error, > * to queue the remainder of them. > */ > if (blk_end_request(req, error, bytes)) { > - int leftover = blk_rq_bytes(req); > - > - if (blk_pc_request(req)) > - leftover = req->resid_len; > - > /* kill remainder if no retrys */ > if (error && scsi_noretry_cmd(cmd)) > - blk_end_request(req, error, leftover); > + blk_end_request_all(req, error); > else { > if (requeue) { > /* > -- Jens Axboe -- 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