mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 09:31:50 +00:00
scsi: mpt3sas: Print function name in which cmd timed out
Print the function name in which MPT command got timed out. This will facilitate debugging in which path corresponding MPT command got timeout in first failure instance of log itself. Link: https://lore.kernel.org/r/20191226111333.26131-9-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
5b061980e3
commit
c6bdb6a108
@ -5984,10 +5984,9 @@ mpt3sas_base_sas_iounit_control(struct MPT3SAS_ADAPTER *ioc,
|
||||
ioc->ioc_link_reset_in_progress)
|
||||
ioc->ioc_link_reset_in_progress = 0;
|
||||
if (!(ioc->base_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->base_cmds.status, mpi_request,
|
||||
sizeof(Mpi2SasIoUnitControlRequest_t)/4);
|
||||
mpt3sas_check_cmd_timeout(ioc, ioc->base_cmds.status,
|
||||
mpi_request, sizeof(Mpi2SasIoUnitControlRequest_t)/4,
|
||||
issue_reset);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
if (ioc->base_cmds.status & MPT3_CMD_REPLY_VALID)
|
||||
@ -6060,10 +6059,9 @@ mpt3sas_base_scsi_enclosure_processor(struct MPT3SAS_ADAPTER *ioc,
|
||||
wait_for_completion_timeout(&ioc->base_cmds.done,
|
||||
msecs_to_jiffies(10000));
|
||||
if (!(ioc->base_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->base_cmds.status, mpi_request,
|
||||
sizeof(Mpi2SepRequest_t)/4);
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->base_cmds.status, mpi_request,
|
||||
sizeof(Mpi2SepRequest_t)/4, issue_reset);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
if (ioc->base_cmds.status & MPT3_CMD_REPLY_VALID)
|
||||
|
@ -1579,6 +1579,11 @@ mpt3sas_wait_for_commands_to_complete(struct MPT3SAS_ADAPTER *ioc);
|
||||
|
||||
u8 mpt3sas_base_check_cmd_timeout(struct MPT3SAS_ADAPTER *ioc,
|
||||
u8 status, void *mpi_request, int sz);
|
||||
#define mpt3sas_check_cmd_timeout(ioc, status, mpi_request, sz, issue_reset) \
|
||||
do { ioc_err(ioc, "In func: %s\n", __func__); \
|
||||
issue_reset = mpt3sas_base_check_cmd_timeout(ioc, \
|
||||
status, mpi_request, sz); } while (0)
|
||||
|
||||
int mpt3sas_wait_for_ioc(struct MPT3SAS_ADAPTER *ioc, int wait_count);
|
||||
|
||||
/* scsih shared API */
|
||||
|
@ -303,6 +303,7 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
|
||||
u8 retry_count, issue_host_reset = 0;
|
||||
struct config_request mem;
|
||||
u32 ioc_status = UINT_MAX;
|
||||
u8 issue_reset = 0;
|
||||
|
||||
mutex_lock(&ioc->config_cmds.mutex);
|
||||
if (ioc->config_cmds.status != MPT3_CMD_NOT_USED) {
|
||||
@ -385,9 +386,9 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
|
||||
if (!(ioc->logging_level & MPT_DEBUG_CONFIG))
|
||||
_config_display_some_debug(ioc,
|
||||
smid, "config_request", NULL);
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->config_cmds.status, mpi_request,
|
||||
sizeof(Mpi2ConfigRequest_t)/4);
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->config_cmds.status, mpi_request,
|
||||
sizeof(Mpi2ConfigRequest_t)/4, issue_reset);
|
||||
retry_count++;
|
||||
if (ioc->config_cmds.smid == smid)
|
||||
mpt3sas_base_free_smid(ioc, smid);
|
||||
|
@ -1028,10 +1028,9 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
|
||||
ioc->ignore_loginfos = 0;
|
||||
}
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
karg.data_sge_offset);
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
karg.data_sge_offset, issue_reset);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
|
||||
@ -1741,10 +1740,9 @@ _ctl_diag_register_2(struct MPT3SAS_ADAPTER *ioc,
|
||||
MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4);
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4, issue_reset);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
|
||||
@ -2116,6 +2114,7 @@ mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type,
|
||||
u16 ioc_status;
|
||||
u32 ioc_state;
|
||||
int rc;
|
||||
u8 reset_needed = 0;
|
||||
|
||||
dctlprintk(ioc, ioc_info(ioc, "%s\n",
|
||||
__func__));
|
||||
@ -2123,6 +2122,7 @@ mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type,
|
||||
rc = 0;
|
||||
*issue_reset = 0;
|
||||
|
||||
|
||||
ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
|
||||
if (ioc_state != MPI2_IOC_STATE_OPERATIONAL) {
|
||||
if (ioc->diag_buffer_status[buffer_type] &
|
||||
@ -2165,9 +2165,10 @@ mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type,
|
||||
MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
*issue_reset = mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagReleaseRequest_t)/4);
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagReleaseRequest_t)/4, reset_needed);
|
||||
*issue_reset = reset_needed;
|
||||
rc = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
@ -2425,10 +2426,9 @@ _ctl_diag_read_buffer(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4);
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4, issue_reset);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
|
||||
|
@ -2728,6 +2728,7 @@ mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, u64 lun,
|
||||
u16 smid = 0;
|
||||
u32 ioc_state;
|
||||
int rc;
|
||||
u8 issue_reset = 0;
|
||||
|
||||
lockdep_assert_held(&ioc->tm_cmds.mutex);
|
||||
|
||||
@ -2787,9 +2788,10 @@ mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, u64 lun,
|
||||
ioc->put_smid_hi_priority(ioc, smid, msix_task);
|
||||
wait_for_completion_timeout(&ioc->tm_cmds.done, timeout*HZ);
|
||||
if (!(ioc->tm_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
if (mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->tm_cmds.status, mpi_request,
|
||||
sizeof(Mpi2SCSITaskManagementRequest_t)/4)) {
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->tm_cmds.status, mpi_request,
|
||||
sizeof(Mpi2SCSITaskManagementRequest_t)/4, issue_reset);
|
||||
if (issue_reset) {
|
||||
rc = mpt3sas_base_hard_reset_handler(ioc,
|
||||
FORCE_BIG_HAMMER);
|
||||
rc = (!rc) ? SUCCESS : FAILED;
|
||||
@ -7757,10 +7759,9 @@ _scsih_ir_fastpath(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phys_disk_num)
|
||||
wait_for_completion_timeout(&ioc->scsih_cmds.done, 10*HZ);
|
||||
|
||||
if (!(ioc->scsih_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->scsih_cmds.status, mpi_request,
|
||||
sizeof(Mpi2RaidActionRequest_t)/4);
|
||||
mpt3sas_check_cmd_timeout(ioc,
|
||||
ioc->scsih_cmds.status, mpi_request,
|
||||
sizeof(Mpi2RaidActionRequest_t)/4, issue_reset);
|
||||
rc = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user