diff options
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r-- | drivers/scsi/scsi_lib.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index f3c40898fc7d..90c94da8baa4 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -897,8 +897,10 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | |||
897 | if (driver_byte(result) & DRIVER_SENSE) | 897 | if (driver_byte(result) & DRIVER_SENSE) |
898 | scsi_print_sense("", cmd); | 898 | scsi_print_sense("", cmd); |
899 | } | 899 | } |
900 | blk_end_request_all(req, -EIO); | 900 | if (blk_end_request_err(req, -EIO)) |
901 | scsi_next_command(cmd); | 901 | scsi_requeue_command(q, cmd); |
902 | else | ||
903 | scsi_next_command(cmd); | ||
902 | break; | 904 | break; |
903 | case ACTION_REPREP: | 905 | case ACTION_REPREP: |
904 | /* Unprep the request and put it back at the head of the queue. | 906 | /* Unprep the request and put it back at the head of the queue. |