diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2011-02-25 15:04:27 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-02-28 12:17:44 -0500 |
commit | f55ca84d92d0c249ce4f4b8d493657a59c359c5d (patch) | |
tree | 40bec986cc1f783efbb932c014ea146655b206a0 | |
parent | 76f0c37a26b48522a1f4051a7b8d091fc3e545d5 (diff) |
[SCSI] lpfc: force retry in queuecommand when port is transitioning
If the port takes a while to transition we could exhaust
the retries when using DID_TRANSPORT_DISRUPTED. For this
case we do not want to use any of the cmd's
retries, because if the command was running then when
it got failed the retry counter was already incremented.
And if this is the first time we are seeing the command,
(it got queued because it slipped through during the race)
then it should not have its retries incremented. The
fc class will decide the correct handling later.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Acked-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
-rw-r--r-- | drivers/scsi/lpfc/lpfc_scsi.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index 1255b9d1b1b0..ff20abdc5095 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c | |||
@@ -3058,7 +3058,7 @@ lpfc_queuecommand_lck(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) | |||
3058 | * transport is still transitioning. | 3058 | * transport is still transitioning. |
3059 | */ | 3059 | */ |
3060 | if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) { | 3060 | if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) { |
3061 | cmnd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, 0); | 3061 | cmnd->result = ScsiResult(DID_IMM_RETRY, 0); |
3062 | goto out_fail_command; | 3062 | goto out_fail_command; |
3063 | } | 3063 | } |
3064 | if (atomic_read(&ndlp->cmd_pending) >= ndlp->cmd_qdepth) | 3064 | if (atomic_read(&ndlp->cmd_pending) >= ndlp->cmd_qdepth) |