[SCSI] libfc: handle RRQ exch timeout
authorVasu Dev <vasu.dev@intel.com>
Fri, 27 Feb 2009 18:54:46 +0000 (10:54 -0800)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 6 Mar 2009 21:36:56 +0000 (15:36 -0600)
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>
drivers/scsi/libfc/fc_exch.c

index a09416fd843c0c28867ddf0ade408d914947dd22..e874e77b740c1f6d9769bdac032e05a9ffc28ef8 100644 (file)
@@ -1608,7 +1608,7 @@ static void fc_exch_rrq_resp(struct fc_seq *sp, struct fc_frame *fp, void *arg)
        if (IS_ERR(fp)) {
                int err = PTR_ERR(fp);
 
-               if (err == -FC_EX_CLOSED)
+               if (err == -FC_EX_CLOSED || err == -FC_EX_TIMEOUT)
                        goto cleanup;
                FC_DBG("Cannot process RRQ, because of frame error %d\n", err);
                return;