[SCSI] bfa: set correct command return code
authorHannes Reinecke <hare@suse.de>
Tue, 14 Jan 2014 09:26:25 +0000 (10:26 +0100)
committerJames Bottomley <JBottomley@Parallels.com>
Sat, 15 Mar 2014 17:19:17 +0000 (10:19 -0700)
For various error conditions the bfa driver just returns
'DID_ERROR', which carries no information at all about the
actual source of error.
This patch updates the error handling to return a correct
error code, depending on the type of error occurred.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Acked-by: Vijaya Mohan Guvva <vmohan@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/bfa/bfad_im.c

index 9967f9c148510f2958b06e414b0d218ecc46759b..f067332bf7635901d393189fde960616ffb21c52 100644 (file)
@@ -73,9 +73,14 @@ bfa_cb_ioim_done(void *drv, struct bfad_ioim_s *dio,
 
                break;
 
-       case BFI_IOIM_STS_ABORTED:
        case BFI_IOIM_STS_TIMEDOUT:
+               host_status = DID_TIME_OUT;
+               cmnd->result = ScsiResult(host_status, 0);
+               break;
        case BFI_IOIM_STS_PATHTOV:
+               host_status = DID_TRANSPORT_DISRUPTED;
+               cmnd->result = ScsiResult(host_status, 0);
+               break;
        default:
                host_status = DID_ERROR;
                cmnd->result = ScsiResult(host_status, 0);