diff mbox series

scsi: lpfc: restore clearing of NLP_UNREG_INP in ndlp->nlp_flag

Message ID 20250317163731.356873-1-emilne@redhat.com
State New
Headers show
Series scsi: lpfc: restore clearing of NLP_UNREG_INP in ndlp->nlp_flag | expand

Commit Message

Ewan D. Milne March 17, 2025, 4:37 p.m. UTC
Commit "scsi: lpfc: Remove NLP_RELEASE_RPI flag from nodelist structure"
introduced a regression with SLI-3 adapters (e.g. LPe12000 8Gb) where
a Link Down / Link Up such as caused by disabling an host FC switch port
would result in the devices remaining in the transport-offline state
and multipath reporting them as failed.  This problem was not seen with
newer SLI-4 adapters.

The problem was caused by portions of the patch which removed the functions
__lpfc_sli_rpi_release() and lpfc_sli_rpi_release() and all their callers.
This was presumably because with the removal of the NLP_RELEASE_RPI flag
there was no need to free the rpi.

However, __lpfc_sli_rpi_release() and lpfc_sli_rpi_release() which calls it
reset the NLP_UNREG_INP flag. And, lpfc_sli_def_mbox_cmpl() has a path
where __lpfc_sli_rpi_release() was called in a particular case where
NLP_UNREG_INP was not otherwise cleared because of other conditions.

Restoring the else clause of this conditional and simply clearing the
NLP_UNREG_INP flag appears to resolve the problem with SLI-3 adapters.
It should be noted that the code path in question is not specific to SLI-3,
but there are other SLI-4 code paths which may have masked the issue.

Fixes: 32566a6f1ae5 ("scsi: lpfc: Remove NLP_RELEASE_RPI flag from nodelist structure")
Cc: stable@vger.kernel.org
Tested-by: Marco Patalano <mpatalan@redhat.com>
Signed-off-by: Ewan D. Milne <emilne@redhat.com>
---
 drivers/scsi/lpfc/lpfc_sli.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Justin Tee March 18, 2025, 12:02 a.m. UTC | #1
Reviewed-by: Justin Tee <justin.tee@broadcom.com>

Thanks for fixing, looks good.

Regards,
Justin
Martin K. Petersen March 21, 2025, 12:36 a.m. UTC | #2
On Mon, 17 Mar 2025 12:37:31 -0400, Ewan D. Milne wrote:

> Commit "scsi: lpfc: Remove NLP_RELEASE_RPI flag from nodelist structure"
> introduced a regression with SLI-3 adapters (e.g. LPe12000 8Gb) where
> a Link Down / Link Up such as caused by disabling an host FC switch port
> would result in the devices remaining in the transport-offline state
> and multipath reporting them as failed.  This problem was not seen with
> newer SLI-4 adapters.
> 
> [...]

Applied to 6.15/scsi-queue, thanks!

[1/1] scsi: lpfc: restore clearing of NLP_UNREG_INP in ndlp->nlp_flag
      https://git.kernel.org/mkp/scsi/c/040492ac2578
diff mbox series

Patch

diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 3fd9723cd271..92f3d4423729 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -2923,6 +2923,8 @@  lpfc_sli_def_mbox_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
 				clear_bit(NLP_UNREG_INP, &ndlp->nlp_flag);
 				ndlp->nlp_defer_did = NLP_EVT_NOTHING_PENDING;
 				lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0);
+			} else {
+				clear_bit(NLP_UNREG_INP, &ndlp->nlp_flag);
 			}
 
 			/* The unreg_login mailbox is complete and had a