scsi: lpfc: Fix up log messages and stats counters in IO submit code path
Fix up log messages and add an fcp error stat counter in the IO submit code path to make diagnosing problems easier Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <james.smart@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committad av
Martin K. Petersen

förälder
d38f33b304
incheckning
44c2757b76
@@ -1451,8 +1451,9 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
||||
vport = lport->vport;
|
||||
|
||||
if (unlikely(!hw_queue_handle)) {
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_ABTS,
|
||||
"6117 Fail Abort, NULL hw_queue_handle\n");
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR,
|
||||
"6117 Fail IO, NULL hw_queue_handle\n");
|
||||
atomic_inc(&lport->xmt_fcp_err);
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
}
|
||||
@@ -1465,12 +1466,18 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
||||
}
|
||||
|
||||
if (vport->load_flag & FC_UNLOADING) {
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR,
|
||||
"6124 Fail IO, Driver unload\n");
|
||||
atomic_inc(&lport->xmt_fcp_err);
|
||||
ret = -ENODEV;
|
||||
goto out_fail;
|
||||
}
|
||||
|
||||
freqpriv = pnvme_fcreq->private;
|
||||
if (unlikely(!freqpriv)) {
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR,
|
||||
"6158 Fail IO, NULL request data\n");
|
||||
atomic_inc(&lport->xmt_fcp_err);
|
||||
ret = -EINVAL;
|
||||
goto out_fail;
|
||||
}
|
||||
@@ -1488,29 +1495,22 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
||||
*/
|
||||
ndlp = rport->ndlp;
|
||||
if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_NODE | LOG_NVME_IOERR,
|
||||
"6053 rport %p, ndlp %p, DID x%06x "
|
||||
"ndlp not ready.\n",
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE | LOG_NVME_IOERR,
|
||||
"6053 Fail IO, ndlp not ready: rport %p "
|
||||
"ndlp %p, DID x%06x\n",
|
||||
rport, ndlp, pnvme_rport->port_id);
|
||||
|
||||
ndlp = lpfc_findnode_did(vport, pnvme_rport->port_id);
|
||||
if (!ndlp) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_NVME_IOERR,
|
||||
"6066 Missing node for DID %x\n",
|
||||
pnvme_rport->port_id);
|
||||
atomic_inc(&lport->xmt_fcp_bad_ndlp);
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
}
|
||||
atomic_inc(&lport->xmt_fcp_err);
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
}
|
||||
|
||||
/* The remote node has to be a mapped target or it's an error. */
|
||||
if ((ndlp->nlp_type & NLP_NVME_TARGET) &&
|
||||
(ndlp->nlp_state != NLP_STE_MAPPED_NODE)) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_NODE | LOG_NVME_IOERR,
|
||||
"6036 rport %p, DID x%06x not ready for "
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE | LOG_NVME_IOERR,
|
||||
"6036 Fail IO, DID x%06x not ready for "
|
||||
"IO. State x%x, Type x%x Flg x%x\n",
|
||||
rport, pnvme_rport->port_id,
|
||||
pnvme_rport->port_id,
|
||||
ndlp->nlp_state, ndlp->nlp_type,
|
||||
ndlp->upcall_flags);
|
||||
atomic_inc(&lport->xmt_fcp_bad_ndlp);
|
||||
@@ -1535,6 +1535,10 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
||||
*/
|
||||
if ((atomic_read(&ndlp->cmd_pending) >= ndlp->cmd_qdepth) &&
|
||||
!expedite) {
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR,
|
||||
"6174 Fail IO, ndlp qdepth exceeded: "
|
||||
"idx %d DID %x\n",
|
||||
lpfc_queue_info->index, ndlp->nlp_DID);
|
||||
atomic_inc(&lport->xmt_fcp_qdepth);
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
@@ -1544,8 +1548,9 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
||||
if (lpfc_ncmd == NULL) {
|
||||
atomic_inc(&lport->xmt_fcp_noxri);
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR,
|
||||
"6065 driver's buffer pool is empty, "
|
||||
"IO failed\n");
|
||||
"6065 Fail IO, driver buffer pool is empty: "
|
||||
"idx %d DID %x\n",
|
||||
lpfc_queue_info->index, ndlp->nlp_DID);
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
}
|
||||
@@ -1585,6 +1590,11 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
||||
lpfc_nvme_prep_io_cmd(vport, lpfc_ncmd, ndlp, cstat);
|
||||
ret = lpfc_nvme_prep_io_dma(vport, lpfc_ncmd);
|
||||
if (ret) {
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR,
|
||||
"6175 Fail IO, Prep DMA: "
|
||||
"idx %d DID %x\n",
|
||||
lpfc_queue_info->index, ndlp->nlp_DID);
|
||||
atomic_inc(&lport->xmt_fcp_err);
|
||||
ret = -ENOMEM;
|
||||
goto out_free_nvme_buf;
|
||||
}
|
||||
@@ -1600,7 +1610,7 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
||||
atomic_inc(&lport->xmt_fcp_wqerr);
|
||||
atomic_dec(&ndlp->cmd_pending);
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR,
|
||||
"6113 FCP could not issue WQE err %x "
|
||||
"6113 Fail IO, Could not issue WQE err %x "
|
||||
"sid: x%x did: x%x oxid: x%x\n",
|
||||
ret, vport->fc_myDID, ndlp->nlp_DID,
|
||||
lpfc_ncmd->cur_iocbq.sli4_xritag);
|
||||
@@ -2477,6 +2487,7 @@ lpfc_nvme_create_localport(struct lpfc_vport *vport)
|
||||
atomic_set(&lport->xmt_fcp_noxri, 0);
|
||||
atomic_set(&lport->xmt_fcp_bad_ndlp, 0);
|
||||
atomic_set(&lport->xmt_fcp_qdepth, 0);
|
||||
atomic_set(&lport->xmt_fcp_err, 0);
|
||||
atomic_set(&lport->xmt_fcp_wqerr, 0);
|
||||
atomic_set(&lport->xmt_fcp_abort, 0);
|
||||
atomic_set(&lport->xmt_ls_abort, 0);
|
||||
|
Referens i nytt ärende
Block a user