aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libfc
diff options
context:
space:
mode:
authorVasu Dev <vasu.dev@intel.com>2009-02-27 13:54:46 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-03-06 16:36:56 -0500
commit78342da3682ec843e3e6301af5c723c88a46c408 (patch)
tree0390655e7f80617db0948e830574de23aef12e1d /drivers/scsi/libfc
parent571f824c3cd7b7f5a40ba100f7e576b6b0fe826a (diff)
[SCSI] libfc: handle RRQ exch timeout
Cleanup exchange held due to RRQ when RRQ exch times out, in this case the ABTS is already done causing RRQ req therefore proceeding with cleanup in fc_exch_rrq_resp should be okay to restore exch resource. Signed-off-by: Vasu Dev <vasu.dev@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/libfc')
-rw-r--r--drivers/scsi/libfc/fc_exch.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
index a09416fd843c..e874e77b740c 100644
--- a/drivers/scsi/libfc/fc_exch.c
+++ b/drivers/scsi/libfc/fc_exch.c
@@ -1608,7 +1608,7 @@ static void fc_exch_rrq_resp(struct fc_seq *sp, struct fc_frame *fp, void *arg)
1608 if (IS_ERR(fp)) { 1608 if (IS_ERR(fp)) {
1609 int err = PTR_ERR(fp); 1609 int err = PTR_ERR(fp);
1610 1610
1611 if (err == -FC_EX_CLOSED) 1611 if (err == -FC_EX_CLOSED || err == -FC_EX_TIMEOUT)
1612 goto cleanup; 1612 goto cleanup;
1613 FC_DBG("Cannot process RRQ, because of frame error %d\n", err); 1613 FC_DBG("Cannot process RRQ, because of frame error %d\n", err);
1614 return; 1614 return;