Staging: hv: storvsc: In case of scsi errors offline the device
authorK. Y. Srinivasan <kys@microsoft.com>
Sat, 27 Aug 2011 18:31:28 +0000 (11:31 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 29 Aug 2011 18:01:09 +0000 (11:01 -0700)
When we do get fatal errors from the host, offline the device since the
host has already tried all possible recovery actions.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/hv/storvsc_drv.c

index ad0f9d4c5ba95cd098aa2889306e50e7e76bd8ea..22a1d758620e73ba8f9fd094a2abe2b198b33763 100644 (file)
@@ -1154,7 +1154,15 @@ static void storvsc_command_completion(struct hv_storvsc_request *request)
                }
        }
 
-       scmnd->result = vm_srb->scsi_status;
+       /*
+        * If there is an error; offline the device since all
+        * error recovery strategies would have already been
+        * deployed on the host side.
+        */
+       if (vm_srb->srb_status == 0x4)
+               scmnd->result = DID_TARGET_FAILURE << 16;
+       else
+               scmnd->result = vm_srb->scsi_status;
 
        if (scmnd->result) {
                if (scsi_normalize_sense(scmnd->sense_buffer,