mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
3f0661a492
commit
2281c95fe7
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue