diff options
| author | Nigel Kirkland <nkirkland2304@gmail.com> | 2026-10-12 17:16:45 -0700 |
|---|---|---|
| committer | Martin K. Petersen (Oracle) <mkp@kernel.org> | 2026-10-13 23:38:58 -0400 |
| commit | 5750b941ac75ad03570923d0f17331b6d832c69e (patch) | |
| tree | 2a1b212ffe363e2152869333c522573546bb6bda /tools/lib/python/kdoc/python_version.py | |
| parent | 57b0a51937ef4a94cb6c86d42136d122be841694 (diff) | |
| download | linux-next-5750b941ac75ad03570923d0f17331b6d832c69e.tar.gz linux-next-5750b941ac75ad03570923d0f17331b6d832c69e.zip | |
scsi: lpfc: Rework I/O flush ordering when unloading driver
The lpfc_els_abort() routine has a code path that cancels outstanding
I/Os on the ELS ring when attempted aborts fail. The failed aborts are
queued to a drv_cmpl_list and then cancelled after the ELS
pring->txcmplq is fully traversed. However if the abort failure returns
IOCB_ABORTING, then the driver should not have cancelled it. Doing so
starts two threads working on the same iocb and ndlp, leading to
unintended race conditions.
Fix by capturing the IOCB_ABORTING return value in lpfc_els_abort() and
not adding it to the list of IOCBs for cancelling. We should allow the
IOCB scheduled for abort to complete naturally. This avoids
simultaneous threads acting on the same IOCB and ndlp objects.
The lpfc_free_iocb_list() is moved to execute after
lpfc_sli4_hba_unset() allowing the routine to flush I/O before freeing
it. And, in lpfc_pci_remove_one_s4() a call to flush the phba->wq is
added. This makes the unload logic consistent with offline handling
logic.
Signed-off-by: Nigel Kirkland <nkirkland2304@gmail.com>
Tested-by: Ewan D. Milne <emilne@redhat.com>
Link: https://patch.msgid.link/20261013001648.62289-6-nkirkland2304@gmail.com
Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
