summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBart Van Assche <bvanassche@acm.org>2019-01-25 21:34:45 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2019-02-05 05:26:24 +0300
commit2281c95fe751325874d135b237ecdcd3bc34cc26 (patch)
treeb81ddaf55e0ed65aba6bfea3e408ef53cbe64957 /drivers
parent3f0661a492a199b7de2fb63eceba8c79039bff83 (diff)
downloadlinux-2281c95fe751325874d135b237ecdcd3bc34cc26.tar.xz
scsi: target/core: Simplify the LUN RESET implementation
Due to the task management handling rework it is safe to wait for a TMF that is not in the active state. Hence remove the CMD_T_ACTIVE test from core_tmr_drain_tmr_list(). Additionally, call __target_check_io_state() instead of open coding it. Reviewed-by: Hannes Reinecke <hare@suse.com> Cc: Nicholas Bellinger <nab@linux-iscsi.org> Cc: Mike Christie <mchristi@redhat.com> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/target/target_core_tmr.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c
index df1ca827de68..3a1bb799a9ab 100644
--- a/drivers/target/target_core_tmr.c
+++ b/drivers/target/target_core_tmr.c
@@ -217,23 +217,13 @@ static void core_tmr_drain_tmr_list(
continue;
spin_lock(&sess->sess_cmd_lock);
- spin_lock(&cmd->t_state_lock);
- if (!(cmd->transport_state & CMD_T_ACTIVE) ||
- (cmd->transport_state & CMD_T_FABRIC_STOP)) {
- spin_unlock(&cmd->t_state_lock);
- spin_unlock(&sess->sess_cmd_lock);
- continue;
- }
- cmd->transport_state |= CMD_T_ABORTED;
- spin_unlock(&cmd->t_state_lock);
+ rc = __target_check_io_state(cmd, sess, 0);
+ spin_unlock(&sess->sess_cmd_lock);
- rc = kref_get_unless_zero(&cmd->cmd_kref);
if (!rc) {
printk("LUN_RESET TMR: non-zero kref_get_unless_zero\n");
- spin_unlock(&sess->sess_cmd_lock);
continue;
}
- spin_unlock(&sess->sess_cmd_lock);
list_move_tail(&tmr_p->tmr_list, &drain_tmr_list);
}