diff options
author | Bhanu Prakash Gollapudi <bprakash@broadcom.com> | 2012-04-24 15:26:03 -0700 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-05-22 10:01:26 +0100 |
commit | 92886c9c97fd20dde26a12cd9f43cd3c786bc8ea (patch) | |
tree | f596efc0039eb8db32baa03d9a3f9a2ac09f7dda /drivers/scsi/bnx2fc/bnx2fc_tgt.c | |
parent | c1bb4f33de87ad18ace1cf484ed0c78683d933a1 (diff) |
[SCSI] bnx2fc: cleanup task management IO when it times out.
When the task management IO times out, or a flush operation is performed while
task management IO is pending, driver is not cleaning up the IO. This patch
cleans up the IO for the above cases.
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bnx2fc/bnx2fc_tgt.c')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc_tgt.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc_tgt.c b/drivers/scsi/bnx2fc/bnx2fc_tgt.c index d3ee231a568..082a25c3117 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_tgt.c +++ b/drivers/scsi/bnx2fc/bnx2fc_tgt.c @@ -185,6 +185,16 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) BUG_ON(rc); } + list_for_each_safe(list, tmp, &tgt->active_tm_queue) { + i++; + io_req = (struct bnx2fc_cmd *)list; + list_del_init(&io_req->link); + io_req->on_tmf_queue = 0; + BNX2FC_IO_DBG(io_req, "tm_queue cleanup\n"); + if (io_req->wait_for_comp) + complete(&io_req->tm_done); + } + list_for_each_safe(list, tmp, &tgt->els_queue) { i++; io_req = (struct bnx2fc_cmd *)list; |