scsi: lpfc: Add condition to delete ndlp object after sending BLS_RJT to an ABTS
authorJustin Tee <justin.tee@broadcom.com>
Wed, 31 Jan 2024 18:51:03 +0000 (10:51 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 6 Feb 2024 01:51:35 +0000 (20:51 -0500)
commit900db34ad26554d83ae033065a047358994bfe88
treee90e4f678c667498becf54637aca667a49d6b48d
parent7bb6cb7bb21c01cda4425efc935eb8f187832eb6
scsi: lpfc: Add condition to delete ndlp object after sending BLS_RJT to an ABTS

The "Nodelist not empty" log message and an accompanying delay may be
observed when deleting an NPIV port or unloading the lpfc driver.  This can
occur due to receipt of an ABTS for which there is no corresponding login
context or ndlp allocated.  In such cases, the driver allocates a new ndlp
object to send a BLS_RJT after which the ndlp object unintentionally
remains in the NLP_STE_UNUSED_NODE state forever.

Add a check to conditionally remove ndlp's initial reference count when
queuing a BLS response.  If the initial reference is removed, then set
the NLP_DROPPED flag to notify other code paths.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20240131185112.149731-9-justintee8345@gmail.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_sli.c