mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 04:04:43 +01:00
scsi: mpi3mr: Clear reset history on ready and recheck state after timeout
The driver retains reset history even after the IOC has successfully reached the READY state. That leaves stale reset information active during normal operation and can mislead recovery and diagnostics. In addition, if the IOC becomes READY just as the ready timeout loop exits, the driver still follows the failure path and may retry or report failure incorrectly. Clear reset history once READY is confirmed so driver state matches actual IOC status. After the timeout loop, recheck the IOC state and treat READY as success instead of failing. Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com> Link: https://patch.msgid.link/20260225082622.82588-1-ranjan.kumar@broadcom.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
1ac22c8eae
commit
dbd53975ed
1 changed files with 10 additions and 0 deletions
|
|
@ -1618,6 +1618,7 @@ retry_bring_ioc_ready:
|
|||
ioc_info(mrioc,
|
||||
"successfully transitioned to %s state\n",
|
||||
mpi3mr_iocstate_name(ioc_state));
|
||||
mpi3mr_clear_reset_history(mrioc);
|
||||
return 0;
|
||||
}
|
||||
ioc_status = readl(&mrioc->sysif_regs->ioc_status);
|
||||
|
|
@ -1637,6 +1638,15 @@ retry_bring_ioc_ready:
|
|||
elapsed_time_sec = jiffies_to_msecs(jiffies - start_time)/1000;
|
||||
} while (elapsed_time_sec < mrioc->ready_timeout);
|
||||
|
||||
ioc_state = mpi3mr_get_iocstate(mrioc);
|
||||
if (ioc_state == MRIOC_STATE_READY) {
|
||||
ioc_info(mrioc,
|
||||
"successfully transitioned to %s state after %llu seconds\n",
|
||||
mpi3mr_iocstate_name(ioc_state), elapsed_time_sec);
|
||||
mpi3mr_clear_reset_history(mrioc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
out_failed:
|
||||
elapsed_time_sec = jiffies_to_msecs(jiffies - start_time)/1000;
|
||||
if ((retry < 2) && (elapsed_time_sec < (mrioc->ready_timeout - 60))) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue