diff options
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index f7e316368c99..3f50dfcb3227 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -733,6 +733,14 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | |||
| 733 | scsi_next_command(cmd); | 733 | scsi_next_command(cmd); |
| 734 | return; | 734 | return; |
| 735 | } | 735 | } |
| 736 | } else if (blk_rq_bytes(req) == 0 && result && !sense_deferred) { | ||
| 737 | /* | ||
| 738 | * Certain non BLOCK_PC requests are commands that don't | ||
| 739 | * actually transfer anything (FLUSH), so cannot use | ||
| 740 | * good_bytes != blk_rq_bytes(req) as the signal for an error. | ||
| 741 | * This sets the error explicitly for the problem case. | ||
| 742 | */ | ||
| 743 | error = __scsi_error_from_host_byte(cmd, result); | ||
| 736 | } | 744 | } |
| 737 | 745 | ||
| 738 | /* no bidi support for !REQ_TYPE_BLOCK_PC yet */ | 746 | /* no bidi support for !REQ_TYPE_BLOCK_PC yet */ |
