scsi: lpfc: Change IO submit return to EBUSY if remote port is recovering
I/O submission paths in the lpfc nvme path are rejecting the io with an error code that reflects back to the callee as a hard io failure. Many of these conditions are transient and would likely resolve if retried. Correct by returning -EBUSY, which the FC transport triggers off of to return busy status codes to the blk-mq layer. 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:
Родитель
ab7ad49d01
Коммит
cd2400715c
|
@ -1452,8 +1452,8 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
|||
|
||||
if (unlikely(!hw_queue_handle)) {
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_ABTS,
|
||||
"6129 Fail Abort, NULL hw_queue_handle\n");
|
||||
ret = -EINVAL;
|
||||
"6117 Fail Abort, NULL hw_queue_handle\n");
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
}
|
||||
|
||||
|
@ -1499,7 +1499,7 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
|||
"6066 Missing node for DID %x\n",
|
||||
pnvme_rport->port_id);
|
||||
atomic_inc(&lport->xmt_fcp_bad_ndlp);
|
||||
ret = -ENODEV;
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
}
|
||||
}
|
||||
|
@ -1509,11 +1509,12 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
|
|||
(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 "
|
||||
"IO. State x%x, Type x%x\n",
|
||||
"IO. State x%x, Type x%x Flg x%x\n",
|
||||
rport, pnvme_rport->port_id,
|
||||
ndlp->nlp_state, ndlp->nlp_type);
|
||||
ndlp->nlp_state, ndlp->nlp_type,
|
||||
ndlp->upcall_flags);
|
||||
atomic_inc(&lport->xmt_fcp_bad_ndlp);
|
||||
ret = -ENODEV;
|
||||
ret = -EBUSY;
|
||||
goto out_fail;
|
||||
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче