scsi: lpfc: Revise message when stuck due to unresponsive adapter
authorJames Smart <jsmart2021@gmail.com>
Wed, 22 May 2019 00:48:54 +0000 (17:48 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 18 Jun 2019 23:46:21 +0000 (19:46 -0400)
Revise a stalled adapter message to also include the number of jobs that
are stalling the thread.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_nvme.c

index 9d99cb9..39514d4 100644 (file)
@@ -2143,7 +2143,9 @@ lpfc_nvme_lport_unreg_wait(struct lpfc_vport *vport,
                           struct completion *lport_unreg_cmp)
 {
        u32 wait_tmo;
-       int ret;
+       int ret, i, pending = 0;
+       struct lpfc_sli_ring  *pring;
+       struct lpfc_hba  *phba = vport->phba;
 
        /* Host transport has to clean up and confirm requiring an indefinite
         * wait. Print a message if a 10 second wait expires and renew the
@@ -2153,10 +2155,18 @@ lpfc_nvme_lport_unreg_wait(struct lpfc_vport *vport,
        while (true) {
                ret = wait_for_completion_timeout(lport_unreg_cmp, wait_tmo);
                if (unlikely(!ret)) {
+                       pending = 0;
+                       for (i = 0; i < phba->cfg_hdw_queue; i++) {
+                               pring = phba->sli4_hba.hdwq[i].nvme_wq->pring;
+                               if (!pring)
+                                       continue;
+                               if (pring->txcmplq_cnt)
+                                       pending += pring->txcmplq_cnt;
+                       }
                        lpfc_printf_vlog(vport, KERN_ERR, LOG_NVME_IOERR,
                                         "6176 Lport %p Localport %p wait "
-                                        "timed out. Renewing.\n",
-                                        lport, vport->localport);
+                                        "timed out. Pending %d. Renewing.\n",
+                                        lport, vport->localport, pending);
                        continue;
                }
                break;