Message ID | 1507641083-20207-6-git-send-email-Sreekanth.Reddy@broadcom.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 10/10/2017 03:11 PM, Sreekanth Reddy wrote: > Whenever IO for raid volume fails with IOCStatus > "MPI2_IOCSTATUS_SCSI_IOC_TERMINATED"and SCSIStatus equal to > "(MPI2_SCSI_STATE_TERMINATED | MPI2_SCSI_STATE_NO_SCSI_STATUS)" > then return the IO to SML with "DID_RESET" > (i.e. retry the IO infinite times) host bytes. > > Earlier driver is returning the IO with "DID_SOFT_ERROR" > that reties the IO quickly for five times but still > firmware needed some more time and hence IOs were failing. > > Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com> Signed-off-by: Tomas Henzl <thenzl@redhat.com> Tomas
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c index cc78ce4..fa948ab 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c @@ -4807,6 +4807,11 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply) } else if (log_info == VIRTUAL_IO_FAILED_RETRY) { scmd->result = DID_RESET << 16; break; + } else if ((scmd->device->channel == RAID_CHANNEL) && + (scsi_state == (MPI2_SCSI_STATE_TERMINATED | + MPI2_SCSI_STATE_NO_SCSI_STATUS))) { + scmd->result = DID_RESET << 16; + break; } scmd->result = DID_SOFT_ERROR << 16; break;
Whenever IO for raid volume fails with IOCStatus "MPI2_IOCSTATUS_SCSI_IOC_TERMINATED"and SCSIStatus equal to "(MPI2_SCSI_STATE_TERMINATED | MPI2_SCSI_STATE_NO_SCSI_STATUS)" then return the IO to SML with "DID_RESET" (i.e. retry the IO infinite times) host bytes. Earlier driver is returning the IO with "DID_SOFT_ERROR" that reties the IO quickly for five times but still firmware needed some more time and hence IOs were failing. Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com> --- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 5 +++++ 1 file changed, 5 insertions(+)