]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: storvsc: Fix scsi_cmd error assignments in storvsc_handle_error
authorCathy Avery <cavery@redhat.com>
Tue, 19 Dec 2017 18:32:48 +0000 (13:32 -0500)
committerBrian Maly <brian.maly@oracle.com>
Wed, 24 Jul 2019 17:08:32 +0000 (13:08 -0400)
When an I/O is returned with an srb_status of SRB_STATUS_INVALID_LUN
which has zero good_bytes it must be assigned an error. Otherwise the
I/O will be continuously requeued and will cause a deadlock in the case
where disks are being hot added and removed. sd_probe_async will wait
forever for its I/O to complete while holding scsi_sd_probe_domain.

Also returning the default error of DID_TARGET_FAILURE causes multipath
to not retry the I/O resulting in applications receiving I/O errors
before a failover can occur.

Signed-off-by: Cathy Avery <cavery@redhat.com>
Signed-off-by: Long Li <longli@microsoft.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit d1b8b2391c24751e44f618fcf86fb55d9a9247fd)
Orabug: 30052805
Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/scsi/storvsc_drv.c

index b08fa4b87f75dc0ec3c014889087fbd4ceda03ae..36f7e5429628809c6af89fc762742f0357816a4b 100644 (file)
@@ -1053,10 +1053,11 @@ static void storvsc_handle_error(struct vmscsi_request *vm_srb,
                case TEST_UNIT_READY:
                        break;
                default:
-                       set_host_byte(scmnd, DID_TARGET_FAILURE);
+                       set_host_byte(scmnd, DID_ERROR);
                }
                break;
        case SRB_STATUS_INVALID_LUN:
+               set_host_byte(scmnd, DID_NO_CONNECT);
                do_work = true;
                process_err_fn = storvsc_remove_lun;
                break;