The fibre channel IOC may kill a request for a variety of reasons, some of which may be recovered by a retry, some of which are unlikely to be recovered. Return DID_ERROR instead of DID_RESET to permit retry of the command, just not an infinite number of them. Signed-off-by: Michael Reed <mdr@xxxxxxx>
The fibre channel IOC may kill a request for a variety of reasons, some of which may be recovered by a retry, some of which are unlikely to be recovered. Return DID_ERROR instead of DID_RESET to permit retry of the command, just not an infinite number of them. Signed-off-by: Michael Reed <mdr@xxxxxxx> --- kdbu/drivers/message/fusion/mptscsih.c 2006-08-04 02:10:22.000000000 -0500 +++ kdb/drivers/message/fusion/mptscsih.c 2006-12-16 12:54:13.952128107 -0600 @@ -702,9 +702,14 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_F } } } + else if (ioc->bus_type == FC) { + /* i/o killed by IOC */ + sc->result = DID_ERROR << 16; + break; + } /* - * Allow non-SAS & non-NEXUS_LOSS to drop into below code + * Allow non-FC, non-SAS & non-NEXUS_LOSS to drop into below code */ case MPI_IOCSTATUS_SCSI_TASK_TERMINATED: /* 0x0048 */