From: Mike Christie Date: Sun, 17 Aug 2008 20:24:41 +0000 (-0500) Subject: [SCSI] lpfc: use SCSI_MLQUEUE_TARGET_BUSY when catching the rport transition race X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=a93ce0244f2e94dd48e0b4a2742a4e3bf196ab53;p=linux-beck.git [SCSI] lpfc: use SCSI_MLQUEUE_TARGET_BUSY when catching the rport transition race We do want to call right back into the queuecommand during the race, so we can just use SCSI_MLQUEUE_TARGET_BUSY. Signed-off-by: Mike Christie Acked-by: James Smart Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index 1bcebbd3dfac..a22bdf9548a6 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c @@ -966,10 +966,9 @@ 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)) { - cmnd->result = ScsiResult(DID_BUS_BUSY, 0); - goto out_fail_command; - } + if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) + goto out_target_busy; + lpfc_cmd = lpfc_get_scsi_buf(phba); if (lpfc_cmd == NULL) { lpfc_adjust_queue_depth(phba); @@ -1014,6 +1013,8 @@ 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);