Print this page
7813 mpt_sas does not like concurrent HBA resets

*** 600,611 **** if (config_flags & MPTSAS_REQUEST_POOL_CMD) mptsas_return_to_pool(mpt, cmd); if (config_flags & MPTSAS_CMD_TIMEOUT) { mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET; ! if ((mptsas_restart_ioc(mpt)) == DDI_FAILURE) { ! mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed"); } } return (rval); } --- 600,611 ---- if (config_flags & MPTSAS_REQUEST_POOL_CMD) mptsas_return_to_pool(mpt, cmd); if (config_flags & MPTSAS_CMD_TIMEOUT) { mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET; ! if ((mptsas_reset_handler(mpt)) == DDI_FAILURE) { ! mptsas_log(mpt, CE_WARN, "mptsas_reset_handler failed"); } } return (rval); }
*** 1201,1212 **** */ if (rval == FALSE) { mptsas_log(mpt, CE_WARN, "mptsas_ioc_task_management failed " "try to reset ioc to recovery!"); mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET; ! if (mptsas_restart_ioc(mpt)) { ! mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed"); rval = FAILED; } } return (rval); --- 1201,1212 ---- */ if (rval == FALSE) { mptsas_log(mpt, CE_WARN, "mptsas_ioc_task_management failed " "try to reset ioc to recovery!"); mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET; ! if (mptsas_reset_handler(mpt)) { ! mptsas_log(mpt, CE_WARN, "mptsas_reset_handler failed"); rval = FAILED; } } return (rval);
*** 1404,1415 **** rvalue = 0; (void) cv_reltimedwait(&mpt->m_fw_cv, &mpt->m_mutex, drv_usectohz(60 * MICROSEC), TR_CLOCK_TICK); if (!(cmd->cmd_flags & CFLAG_FINISHED)) { mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET; ! if ((mptsas_restart_ioc(mpt)) == DDI_FAILURE) { ! mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed"); } rvalue = -1; } mptsas_remove_cmd(mpt, cmd); mptsas_dma_addr_destroy(&flsh_dma_handle, &flsh_accessp); --- 1404,1415 ---- rvalue = 0; (void) cv_reltimedwait(&mpt->m_fw_cv, &mpt->m_mutex, drv_usectohz(60 * MICROSEC), TR_CLOCK_TICK); if (!(cmd->cmd_flags & CFLAG_FINISHED)) { mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET; ! if ((mptsas_reset_handler(mpt)) == DDI_FAILURE) { ! mptsas_log(mpt, CE_WARN, "mptsas_reset_handler failed"); } rvalue = -1; } mptsas_remove_cmd(mpt, cmd); mptsas_dma_addr_destroy(&flsh_dma_handle, &flsh_accessp);