]> www.infradead.org Git - users/jedix/linux-maple.git/commit
qla2xxx: cleanup cmd in qla workqueue before processing TMR
authorSwapnil Nagle <swapnil.nagle@purestorage.com>
Wed, 13 Sep 2017 08:02:42 +0000 (13:32 +0530)
committerBrian Maly <brian.maly@oracle.com>
Thu, 2 Nov 2017 18:14:12 +0000 (14:14 -0400)
commit550fed11030fc159fde610be1bbca29697ad8b32
tree50f1d19128de98a5fd2e64f19ddb8ed049ae5007
parent933927d5e36f100d18a42de56db45f178adf708a
qla2xxx: cleanup cmd in qla workqueue before processing TMR

Orabug: 2684419726923029

Since cmds go into qla_tgt_wq and TMRs don't, it's possible that TMR
like TASK_ABORT can be queued over the cmd for which it was meant.
To avoid this race, use a per-port list to keep track of cmds that
are enqueued to qla_tgt_wq but not yet processed. When a TMR arrives,
iterate through this list and remove any cmds that match the TMR.
This patch supports TASK_ABORT and LUN_RESET.

Cc: <stable@vger.kernel.org> # v3.18+
Signed-off-by: Swapnil Nagle <swapnil.nagle@purestorage.com>
Signed-off-by: Alexei Potashnik <alexei@purestorage.com>
Acked-by: Quinn Tran <quinn.tran@qlogic.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
drivers/scsi/qla2xxx/qla_dbg.c
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla2xxx/qla_target.c
drivers/scsi/qla2xxx/qla_target.h
drivers/scsi/qla2xxx/tcm_qla2xxx.c