diff options
| author | Hannes Reinecke <hare@suse.de> | 2009-09-17 11:00:26 -0400 |
|---|---|---|
| committer | James Bottomley <James.Bottomley@suse.de> | 2009-10-02 10:46:11 -0400 |
| commit | 6e883b0e42739aa560133cfaf41be1138c51a500 (patch) | |
| tree | 5e9acebafddb6500a50e4586e6d76b907a9d1a0f | |
| parent | e27168f8c337b12b8aa8d59c3123c79d2f83603d (diff) | |
[SCSI] Retry ADD_TO_MLQUEUE return value for EH commands
A target reset when I/O is ongoing might result
an eventual device offline, as scsi_eh_completed_normally()
might return ADD_TO_MLQUEUE in addition to the
advertised SUCCESS, FAILED, and NEEDS_RETRY.
Which is unfortunate as scsi_send_eh_cmnd() will
therefore map ADD_TO_MLQUEUE to FAILED instead of
the more appropriate NEEDS_RETRY.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Cc: Stable Tree <stable@kernel.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
| -rw-r--r-- | drivers/scsi/scsi_error.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 877204daf549..1b0060b791e8 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
| @@ -725,6 +725,9 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd, | |||
| 725 | case NEEDS_RETRY: | 725 | case NEEDS_RETRY: |
| 726 | case FAILED: | 726 | case FAILED: |
| 727 | break; | 727 | break; |
| 728 | case ADD_TO_MLQUEUE: | ||
| 729 | rtn = NEEDS_RETRY; | ||
| 730 | break; | ||
| 728 | default: | 731 | default: |
| 729 | rtn = FAILED; | 732 | rtn = FAILED; |
| 730 | break; | 733 | break; |
