mptfusion: sas nexus loss support
Subsystems (2)
PATCH 5/9 mptfusion: sas nexus loss support
sas nexus loss support for systems that suport failover.
Signed-off-by Eric Moore <[email protected]>
drivers/message/fusion/mptscsih.c +18 -1
@@ -66,6 +66,7 @@#include "mptbase.h" #include "mptscsih.h" +#include "lsi/mpi_log_sas.h" /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ #define my_NAME "Fusion MPT SCSI Host driver"
@@ -667,8 +668,24 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_F }break ; -case MPI_IOCSTATUS_SCSI_TASK_TERMINATED :/* 0x0048 */ case MPI_IOCSTATUS_SCSI_IOC_TERMINATED :/* 0x004B */ +if ( ioc->bus_type ==SAS ) { +u16 ioc_status =le16_to_cpu (pScsiReply->IOCStatus); +if (ioc_status &MPI_IOCSTATUS_FLAG_LOG_INFO_AVAILABLE ) { +u32 log_info =le32_to_cpu (mr->u.reply.IOCLogInfo); + log_info &=SAS_LOGINFO_MASK ; +if (log_info ==SAS_LOGINFO_NEXUS_LOSS ) { + sc->result = (DID_BUS_BUSY <<16 ); +break ; + } + } + } + +/* +* Allow non-SAS & non-NEXUS_LOSS to drop into below code +*/ + +case MPI_IOCSTATUS_SCSI_TASK_TERMINATED :/* 0x0048 */ case MPI_IOCSTATUS_SCSI_EXT_TERMINATED :/* 0x004C */ /* Linux handles an unsolicited DID_RESET better * than an unsolicited DID_ABORT.