diff options
author | K. Y. Srinivasan <kys@microsoft.com> | 2014-07-12 12:48:32 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-07-25 17:17:03 -0400 |
commit | 3533f8603d28b77c62d75ec899449a99bc6b77a1 (patch) | |
tree | e69e5ac2372eb84d739323eb7b1a8e4be31ccdbf /drivers/scsi/storvsc_drv.c | |
parent | f885fb73f64154690c2158e813de56363389ffec (diff) |
drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure
On some Windows hosts on FC SANs, TEST_UNIT_READY can return SRB_STATUS_ERROR.
Correctly handle this. Note that there is sufficient sense information to
support scsi error handling even in this case.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi/storvsc_drv.c')
-rw-r--r-- | drivers/scsi/storvsc_drv.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index b529ae8e8fff..ed0f899e8aa5 100644 --- a/drivers/scsi/storvsc_drv.c +++ b/drivers/scsi/storvsc_drv.c | |||
@@ -1018,6 +1018,13 @@ static void storvsc_handle_error(struct vmscsi_request *vm_srb, | |||
1018 | case ATA_12: | 1018 | case ATA_12: |
1019 | set_host_byte(scmnd, DID_PASSTHROUGH); | 1019 | set_host_byte(scmnd, DID_PASSTHROUGH); |
1020 | break; | 1020 | break; |
1021 | /* | ||
1022 | * On Some Windows hosts TEST_UNIT_READY command can return | ||
1023 | * SRB_STATUS_ERROR, let the upper level code deal with it | ||
1024 | * based on the sense information. | ||
1025 | */ | ||
1026 | case TEST_UNIT_READY: | ||
1027 | break; | ||
1021 | default: | 1028 | default: |
1022 | set_host_byte(scmnd, DID_TARGET_FAILURE); | 1029 | set_host_byte(scmnd, DID_TARGET_FAILURE); |
1023 | } | 1030 | } |