aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSreekanth Reddy <sreekanth.reddy@avagotech.com>2015-01-12 01:09:01 -0500
committerChristoph Hellwig <hch@lst.de>2015-01-13 10:27:27 -0500
commitd2227f737404c6a6e7acbd2dec15da9ee57132c3 (patch)
tree5bfbda0d27417a58ffc81061436c5cb195ec2cd1 /drivers
parentad666a0f41d98e4420acdbfd0e5f25e10f768e13 (diff)
mpt2sas: map log_info value 0x0x32010081 to DID_RESET
For any SCSI command, if the driver receives IOC status = SCSI_IOC_TERMINATED and log info = 0x32010081 then that command will be completed with DID_RESET host status. The definition of this log info value is "Virtual IO has failed and has to be retried". Firmware will provide this log info value with IOC Status "SCSI_IOC_TERMINATED", whenever a drive (with is a part of a volume) is pulled and pushed back within some minimal delay. With this log info value, firmware informs the driver to retry the failed IO command infinite times, so to provide some time for the firmware to discover the reinserted drive successfully instated of just retrying failed command for five times( doesn't giving enough time for firmware to complete the drive discovery) and failing the IO permanently even though drive came back successfully. Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_scsih.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index a3140ed3cfe6..acfaa9f3913f 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -4543,6 +4543,10 @@ _scsih_io_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply)
4543 scmd->result = DID_TRANSPORT_DISRUPTED << 16; 4543 scmd->result = DID_TRANSPORT_DISRUPTED << 16;
4544 goto out; 4544 goto out;
4545 } 4545 }
4546 if (log_info == 0x32010081) {
4547 scmd->result = DID_RESET << 16;
4548 break;
4549 }
4546 scmd->result = DID_SOFT_ERROR << 16; 4550 scmd->result = DID_SOFT_ERROR << 16;
4547 break; 4551 break;
4548 case MPI2_IOCSTATUS_SCSI_TASK_TERMINATED: 4552 case MPI2_IOCSTATUS_SCSI_TASK_TERMINATED: