diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index 5dae4d306758..72eef7e4a891 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c @@ -1071,8 +1071,10 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) * Catch race where our node has transitioned, but the * transport is still transitioning. */ - if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) - goto out_target_busy; + if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) { + cmnd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, 0); + goto out_fail_command; + } lpfc_cmd = lpfc_get_scsi_buf(phba); if (lpfc_cmd == NULL) { @@ -1118,8 +1120,6 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) lpfc_release_scsi_buf(phba, lpfc_cmd); out_host_busy: return SCSI_MLQUEUE_HOST_BUSY; - out_target_busy: - return SCSI_MLQUEUE_TARGET_BUSY; out_fail_command: done(cmnd);