Skip to content

Commit 040492a

Browse files
Ewan D. Milnemartinkpetersen
authored andcommitted
scsi: lpfc: Restore clearing of NLP_UNREG_INP in ndlp->nlp_flag
Commit 32566a6 ("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: 32566a6 ("scsi: lpfc: Remove NLP_RELEASE_RPI flag from nodelist structure") Cc: [email protected] Tested-by: Marco Patalano <[email protected]> Signed-off-by: Ewan D. Milne <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Justin Tee <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent 750d4fb commit 040492a

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/scsi/lpfc/lpfc_sli.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2921,6 +2921,8 @@ lpfc_sli_def_mbox_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
29212921
clear_bit(NLP_UNREG_INP, &ndlp->nlp_flag);
29222922
ndlp->nlp_defer_did = NLP_EVT_NOTHING_PENDING;
29232923
lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0);
2924+
} else {
2925+
clear_bit(NLP_UNREG_INP, &ndlp->nlp_flag);
29242926
}
29252927

29262928
/* The unreg_login mailbox is complete and had a

0 commit comments

Comments
 (0)