[SCSI] fix propogation of integrity errors
authorMike Christie <michaelc@cs.wisc.edu>
Mon, 28 Sep 2009 20:50:52 +0000 (15:50 -0500)
committerJames Bottomley <James.Bottomley@suse.de>
Thu, 29 Oct 2009 17:03:27 +0000 (13:03 -0400)
When the Integrity check is done in scsi_io_completion it will
set error to -EILSEQ. However, at this point error is no longer
used, and blk_end_request_err has -EIO hardcoded.

It looks like there was just porting mistake with this patch
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3e695f89c5debb735e4ff051e9e58d8fb4e95110
and we meant to send error upwards, so this patch changes the hard
coded EIO to the error variable.

I have only boot tested this patch.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/scsi_lib.c

index 5987da857103ea461e6abd692a84de8959fe03e3..108655230b59d3d55eb4593d16c9d7f22a566980 100644 (file)
@@ -898,7 +898,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
                                scsi_print_sense("", cmd);
                        scsi_print_command(cmd);
                }
-               if (blk_end_request_err(req, -EIO))
+               if (blk_end_request_err(req, error))
                        scsi_requeue_command(q, cmd);
                else
                        scsi_next_command(cmd);