From: Justin Tee <justintee8345@gmail.com>
To: linux-scsi@vger.kernel.org
Cc: jsmart2021@gmail.com, justin.tee@broadcom.com,
Justin Tee <justintee8345@gmail.com>
Subject: [PATCH 3/9] lpfc: Account for fabric domain ctlr device loss recovery
Date: Tue, 23 May 2023 11:32:00 -0700 [thread overview]
Message-ID: <20230523183206.7728-4-justintee8345@gmail.com> (raw)
In-Reply-To: <20230523183206.7728-1-justintee8345@gmail.com>
Pre-existing device loss recovery logic via the NLP_IN_RECOV_POST_DEV_LOSS
flag only handled Fabric Port Login, Fabric Controller, Management, and
Name Server addresses.
Fabric domain controllers fall under the same category for usage of the
NLP_IN_RECOV_POST_DEV_LOSS flag. Add a default case statement to mark
an ndlp for device loss recovery.
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
---
drivers/scsi/lpfc/lpfc_hbadisc.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
index f99b5c206cdb..a5c69d4bf2e0 100644
--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -458,11 +458,9 @@ lpfc_dev_loss_tmo_handler(struct lpfc_nodelist *ndlp)
if (ndlp->nlp_type & NLP_FABRIC) {
spin_lock_irqsave(&ndlp->lock, iflags);
- /* In massive vport configuration settings or when the FLOGI
- * completes with a sequence timeout, it's possible
- * dev_loss_tmo fired during node recovery. The driver has to
- * account for this race to allow for recovery and keep
- * the reference counting correct.
+ /* The driver has to account for a race between any fabric
+ * node that's in recovery when dev_loss_tmo expires. When this
+ * happens, the driver has to allow node recovery.
*/
switch (ndlp->nlp_DID) {
case Fabric_DID:
@@ -489,6 +487,17 @@ lpfc_dev_loss_tmo_handler(struct lpfc_nodelist *ndlp)
ndlp->nlp_state <= NLP_STE_REG_LOGIN_ISSUE)
recovering = true;
break;
+ default:
+ /* Ensure the nlp_DID at least has the correct prefix.
+ * The fabric domain controller's last three nibbles
+ * vary so we handle it in the default case.
+ */
+ if (ndlp->nlp_DID & Fabric_DID_MASK) {
+ if (ndlp->nlp_state >= NLP_STE_PLOGI_ISSUE &&
+ ndlp->nlp_state <= NLP_STE_REG_LOGIN_ISSUE)
+ recovering = true;
+ }
+ break;
}
spin_unlock_irqrestore(&ndlp->lock, iflags);
--
2.38.0
next prev parent reply other threads:[~2023-05-23 18:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-23 18:31 [PATCH 0/9] lpfc: Update lpfc to revision 14.2.0.13 Justin Tee
2023-05-23 18:31 ` [PATCH 1/9] lpfc: Fix use-after-free rport memory access in lpfc_register_remote_port Justin Tee
2023-05-31 16:46 ` Martin Wilck
2023-05-23 18:31 ` [PATCH 2/9] lpfc: Clear NLP_IN_DEV_LOSS flag if already in rediscovery Justin Tee
2023-05-23 18:32 ` Justin Tee [this message]
2023-05-31 16:47 ` [PATCH 3/9] lpfc: Account for fabric domain ctlr device loss recovery Martin Wilck
2023-05-23 18:32 ` [PATCH 4/9] lpfc: Revise NPIV ELS unsol rcv cmpl logic to drop ndlp based on nlp_state Justin Tee
2023-05-23 18:32 ` [PATCH 5/9] lpfc: Change firmware upgrade logging to KERN_NOTICE instead of TRACE_EVENT Justin Tee
2023-05-23 18:32 ` [PATCH 6/9] lpfc: Clean up SLI-4 CQE status handling Justin Tee
2023-05-23 18:32 ` [PATCH 7/9] lpfc: Enhance congestion statistics collection Justin Tee
2023-05-23 18:32 ` [PATCH 8/9] lpfc: Update lpfc version to 14.2.0.13 Justin Tee
2023-05-23 18:32 ` [PATCH 9/9] lpfc: Copyright updates for 14.2.0.13 patches Justin Tee
2023-05-31 22:15 ` [PATCH 0/9] lpfc: Update lpfc to revision 14.2.0.13 Martin K. Petersen
2023-06-08 1:42 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230523183206.7728-4-justintee8345@gmail.com \
--to=justintee8345@gmail.com \
--cc=jsmart2021@gmail.com \
--cc=justin.tee@broadcom.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.