scsi: lpfc: Enhance driver logging for selected discovery events
authorJustin Tee <justin.tee@broadcom.com>
Tue, 31 Oct 2023 19:12:22 +0000 (12:12 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 15 Nov 2023 14:52:58 +0000 (09:52 -0500)
Typically, debugging discovery issues requires the ndlp reference count,
nlp flags, transport flags, and the io tag for root cause analysis.

Modify important discovery log messages to include one or more of these
attributes to aid in debugging and support.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20231031191224.150862-8-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_els.c
drivers/scsi/lpfc/lpfc_sli.c

index 0829fe6..f04326d 100644 (file)
@@ -2062,8 +2062,9 @@ lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
        /* PLOGI completes to NPort <nlp_DID> */
        lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
                         "0102 PLOGI completes to NPort x%06x "
-                        "Data: x%x x%x x%x x%x x%x\n",
-                        ndlp->nlp_DID, ndlp->nlp_fc4_type,
+                        "IoTag x%x Data: x%x x%x x%x x%x x%x\n",
+                        ndlp->nlp_DID, iotag,
+                        ndlp->nlp_fc4_type,
                         ulp_status, ulp_word4,
                         disc, vport->num_disc_nodes);
 
@@ -2362,9 +2363,10 @@ lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
        /* PRLI completes to NPort <nlp_DID> */
        lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
                         "0103 PRLI completes to NPort x%06x "
-                        "Data: x%x x%x x%x x%x\n",
+                        "Data: x%x x%x x%x x%x x%x\n",
                         ndlp->nlp_DID, ulp_status, ulp_word4,
-                        vport->num_disc_nodes, ndlp->fc4_prli_sent);
+                        vport->num_disc_nodes, ndlp->fc4_prli_sent,
+                        ndlp->fc4_xpt_flags);
 
        /* Check to see if link went down during discovery */
        if (lpfc_els_chk_latt(vport))
@@ -2805,7 +2807,7 @@ lpfc_cmpl_els_adisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
        IOCB_t *irsp;
        struct lpfc_nodelist *ndlp;
        int  disc;
-       u32 ulp_status, ulp_word4, tmo;
+       u32 ulp_status, ulp_word4, tmo, iotag;
        bool release_node = false;
 
        /* we pass cmdiocb to state machine which needs rspiocb as well */
@@ -2818,9 +2820,11 @@ lpfc_cmpl_els_adisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
 
        if (phba->sli_rev == LPFC_SLI_REV4) {
                tmo = get_wqe_tmo(cmdiocb);
+               iotag = get_wqe_reqtag(cmdiocb);
        } else {
                irsp = &rspiocb->iocb;
                tmo = irsp->ulpTimeout;
+               iotag = irsp->ulpIoTag;
        }
 
        lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD,
@@ -2838,9 +2842,11 @@ lpfc_cmpl_els_adisc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
        /* ADISC completes to NPort <nlp_DID> */
        lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
                         "0104 ADISC completes to NPort x%x "
-                        "Data: x%x x%x x%x x%x x%x\n",
-                        ndlp->nlp_DID, ulp_status, ulp_word4,
+                        "IoTag x%x Data: x%x x%x x%x x%x x%x\n",
+                        ndlp->nlp_DID, iotag,
+                        ulp_status, ulp_word4,
                         tmo, disc, vport->num_disc_nodes);
+
        /* Check to see if link went down during discovery */
        if (lpfc_els_chk_latt(vport)) {
                spin_lock_irq(&ndlp->lock);
@@ -3001,7 +3007,7 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
        int wake_up_waiter = 0;
        u32 ulp_status;
        u32 ulp_word4;
-       u32 tmo;
+       u32 tmo, iotag;
 
        /* we pass cmdiocb to state machine which needs rspiocb as well */
        cmdiocb->rsp_iocb = rspiocb;
@@ -3011,9 +3017,11 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
 
        if (phba->sli_rev == LPFC_SLI_REV4) {
                tmo = get_wqe_tmo(cmdiocb);
+               iotag = get_wqe_reqtag(cmdiocb);
        } else {
                irsp = &rspiocb->iocb;
                tmo = irsp->ulpTimeout;
+               iotag = irsp->ulpIoTag;
        }
 
        spin_lock_irq(&ndlp->lock);
@@ -3032,9 +3040,11 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
        /* LOGO completes to NPort <nlp_DID> */
        lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
                         "0105 LOGO completes to NPort x%x "
-                        "refcnt %d nflags x%x Data: x%x x%x x%x x%x\n",
-                        ndlp->nlp_DID, kref_read(&ndlp->kref), ndlp->nlp_flag,
-                        ulp_status, ulp_word4,
+                        "IoTag x%x refcnt %d nflags x%x xflags x%x "
+                        "Data: x%x x%x x%x x%x\n",
+                        ndlp->nlp_DID, iotag,
+                        kref_read(&ndlp->kref), ndlp->nlp_flag,
+                        ndlp->fc4_xpt_flags, ulp_status, ulp_word4,
                         tmo, vport->num_disc_nodes);
 
        if (lpfc_els_chk_latt(vport)) {
@@ -5075,16 +5085,19 @@ out_retry:
        if (logerr) {
                lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
                         "0137 No retry ELS command x%x to remote "
-                        "NPORT x%x: Out of Resources: Error:x%x/%x\n",
-                        cmd, did, ulp_status,
-                        ulp_word4);
+                        "NPORT x%x: Out of Resources: Error:x%x/%x "
+                        "IoTag x%x\n",
+                        cmd, did, ulp_status, ulp_word4,
+                        cmdiocb->iotag);
        }
        else {
                lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
-                        "0108 No retry ELS command x%x to remote "
-                        "NPORT x%x Retried:%d Error:x%x/%x\n",
-                        cmd, did, cmdiocb->retry, ulp_status,
-                        ulp_word4);
+                                "0108 No retry ELS command x%x to remote "
+                                "NPORT x%x Retried:%d Error:x%x/%x "
+                                "IoTag x%x nflags x%x\n",
+                                cmd, did, cmdiocb->retry, ulp_status,
+                                ulp_word4, cmdiocb->iotag,
+                                (ndlp ? ndlp->nlp_flag : 0));
        }
        return 0;
 }
index bfbc232..46e6f80 100644 (file)
@@ -2995,8 +2995,9 @@ lpfc_sli4_unreg_rpi_cmpl_clr(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
                     LPFC_SLI_INTF_IF_TYPE_2)) {
                        if (ndlp) {
                                lpfc_printf_vlog(
-                                        vport, KERN_INFO, LOG_MBOX | LOG_SLI,
-                                        "0010 UNREG_LOGIN vpi:%x "
+                                        vport, KERN_INFO,
+                                        LOG_MBOX | LOG_SLI | LOG_NODE,
+                                        "0010 UNREG_LOGIN vpi:x%x "
                                         "rpi:%x DID:%x defer x%x flg x%x "
                                         "x%px\n",
                                         vport->vpi, ndlp->nlp_rpi,
@@ -3012,7 +3013,8 @@ lpfc_sli4_unreg_rpi_cmpl_clr(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
                                    (ndlp->nlp_defer_did !=
                                    NLP_EVT_NOTHING_PENDING)) {
                                        lpfc_printf_vlog(
-                                               vport, KERN_INFO, LOG_DISCOVERY,
+                                               vport, KERN_INFO,
+                                               LOG_MBOX | LOG_SLI | LOG_NODE,
                                                "4111 UNREG cmpl deferred "
                                                "clr x%x on "
                                                "NPort x%x Data: x%x x%px\n",
@@ -10144,11 +10146,12 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
        spin_unlock_irqrestore(&phba->hbalock, iflags);
        lpfc_printf_log(phba, KERN_INFO, LOG_MBOX | LOG_SLI,
                        "(%d):0354 Mbox cmd issue - Enqueue Data: "
-                       "x%x (x%x/x%x) x%x x%x x%x\n",
+                       "x%x (x%x/x%x) x%x x%x x%x x%x\n",
                        mboxq->vport ? mboxq->vport->vpi : 0xffffff,
                        bf_get(lpfc_mqe_command, &mboxq->u.mqe),
                        lpfc_sli_config_mbox_subsys_get(phba, mboxq),
                        lpfc_sli_config_mbox_opcode_get(phba, mboxq),
+                       mboxq->u.mb.un.varUnregLogin.rpi,
                        phba->pport->port_state,
                        psli->sli_flag, MBX_NOWAIT);
        /* Wake up worker thread to transport mailbox command from head */