summaryrefslogtreecommitdiff
path: root/drivers/scsi
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2009-09-17 17:00:26 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2009-10-22 15:11:44 -0700
commit39335b18d59c1ae551d218e4f4a5f1a70aa98687 (patch)
treedb8f93720efc1f145f7b4a00c3582be634715007 /drivers/scsi
parent5eee394f24eca7d1f670ddc9d08a8d02c90e74ca (diff)
downloadlwn-39335b18d59c1ae551d218e4f4a5f1a70aa98687.tar.gz
lwn-39335b18d59c1ae551d218e4f4a5f1a70aa98687.zip
SCSI: Retry ADD_TO_MLQUEUE return value for EH commands
commit 6e883b0e42739aa560133cfaf41be1138c51a500 upstream. 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> Signed-off-by: James Bottomley <James.Bottomley@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/scsi_error.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index a1689353d7fd..c253e9c051b2 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -721,6 +721,9 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd,
case NEEDS_RETRY:
case FAILED:
break;
+ case ADD_TO_MLQUEUE:
+ rtn = NEEDS_RETRY;
+ break;
default:
rtn = FAILED;
break;