diff options
author | Vasu Dev <vasu.dev@intel.com> | 2009-02-27 13:54:46 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-03-06 16:36:56 -0500 |
commit | 78342da3682ec843e3e6301af5c723c88a46c408 (patch) | |
tree | 0390655e7f80617db0948e830574de23aef12e1d /drivers/scsi | |
parent | 571f824c3cd7b7f5a40ba100f7e576b6b0fe826a (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')
-rw-r--r-- | drivers/scsi/libfc/fc_exch.c | 2 |
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; |