target: Make core_tmr_abort_task() skip TMFs
authorBart Van Assche <bart.vanassche@sandisk.com>
Tue, 14 Apr 2015 11:26:06 +0000 (13:26 +0200)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 16 Apr 2015 05:47:21 +0000 (22:47 -0700)
The loop in core_tmr_abort_task() iterates over sess_cmd_list.
That list is a list of regular commands and task management
functions (TMFs). Skip TMFs in this loop instead of letting
the target drivers filter out TMFs in their get_task_tag()
callback function.

(Drop bogus check removal in tcm_qla2xxx_get_task_tag - nab)

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Andy Grover <agrover@redhat.com>
Cc: <qla2xxx-upstream@qlogic.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_tmr.c

index fa5e157..315ec34 100644 (file)
@@ -125,8 +125,8 @@ void core_tmr_abort_task(
                if (dev != se_cmd->se_dev)
                        continue;
 
-               /* skip se_cmd associated with tmr */
-               if (tmr->task_cmd == se_cmd)
+               /* skip task management functions, including tmr->task_cmd */
+               if (se_cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)
                        continue;
 
                ref_tag = se_cmd->se_tfo->get_task_tag(se_cmd);