From 21837896097a6d141c7ac581500ee648c5b4bb89 Mon Sep 17 00:00:00 2001 From: Eddie Wai Date: Tue, 17 Sep 2013 22:33:10 -0700 Subject: [PATCH] [SCSI] bnx2fc: Fixed a SCSI CMD cmpl race condition between ABTS and CLEANUP In the case when a SCSI_CMD times out, bnx2fc will initiate the sending of the ABTS. However, if the SCSI layer's SCSI command timer also times out, it'll instantiate a task abort of the same xid. The race condition this patch tries to fix is as follows: SCSI_CMD timeout (20s) thread 1 thread 2 send ABTS rx ABTS cmpl task abort_eh explicit LOGO since ABTS was engaged CLEANUP cmpl SCSI_CMD cmpl (ABTS cmpl) instantiate RRQ wait 10s attempt to send RRQ (because of LOGO, it wouldn't continue) Note that there is no call to scsi_done for this SCSI_CMD cmpletion in this path. The patch changes the path of execution to call scsi_done immediately instead of instantiating the RRQ. Signed-off-by: Eddie Wai Signed-off-by: James Bottomley --- Reading git-format-patch failed