@@ -71,10 +71,6 @@ static int target_check_cdb_and_preempt(struct list_head *list,
static bool __target_check_io_state(struct se_cmd *se_cmd,
struct se_session *tmr_sess, bool tas)
{
- struct se_session *sess = se_cmd->se_sess;
-
- lockdep_assert_held(&sess->sess_cmd_lock);
-
/*
* If command already reached CMD_T_COMPLETE state within
* target_complete_cmd() or CMD_T_FABRIC_STOP due to shutdown,
@@ -137,9 +133,7 @@ void core_tmr_abort_task(
pr_err("ABORT_TASK: Found referenced %s task_tag: %llu\n",
se_cmd->se_tfo->fabric_name, ref_tag);
- spin_lock(&se_sess->sess_cmd_lock);
rc = __target_check_io_state(se_cmd, se_sess, 0);
- spin_unlock(&se_sess->sess_cmd_lock);
if (!rc)
continue;
@@ -206,10 +200,7 @@ static void core_tmr_drain_tmr_list(
if (WARN_ON_ONCE(!sess))
continue;
- spin_lock(&sess->sess_cmd_lock);
rc = __target_check_io_state(cmd, sess, 0);
- spin_unlock(&sess->sess_cmd_lock);
-
if (!rc) {
printk("LUN_RESET TMR: non-zero kref_get_unless_zero\n");
continue;
@@ -310,9 +301,7 @@ static void core_tmr_drain_state_list(
if (WARN_ON_ONCE(!sess))
continue;
- spin_lock(&sess->sess_cmd_lock);
rc = __target_check_io_state(cmd, tmr_sess, tas);
- spin_unlock(&sess->sess_cmd_lock);
if (!rc)
continue;
@@ -277,7 +277,6 @@ void transport_init_session(struct se_session *se_sess)
{
INIT_LIST_HEAD(&se_sess->sess_list);
INIT_LIST_HEAD(&se_sess->sess_acl_list);
- spin_lock_init(&se_sess->sess_cmd_lock);
}
EXPORT_SYMBOL(transport_init_session);
@@ -636,7 +636,6 @@ struct se_session {
void *fabric_sess_ptr;
struct list_head sess_list;
struct list_head sess_acl_list;
- spinlock_t sess_cmd_lock;
void *sess_cmd_map;
struct sbitmap_queue sess_tag_pool;
struct target_cmd_counter *cmd_cnt;
We used to ue the sess_cmd_lock to grab a ref to the se_cmd and add it to the se_cmd_list if the session was not being stopped. And if the cmd was being completed while __target_check_io_state was being run then we held the lock while taking a ref because we were looping over the se_cmd_list and because we didn't remove the cmd from the list until after the last ref was released in target_release_cmd_kref. In: Commit 6f55b06f9b07 ("scsi: target: Drop sess_cmd_lock from I/O path") we switched from the sess list and lock use to the per cpu session cmd_count, so the lock was no longer needed, but it didn't get removed from __target_check_io_state. This patch removes the last target uses of sess_cmd_lock. Signed-off-by: Mike Christie <michael.christie@oracle.com> --- drivers/target/target_core_tmr.c | 11 ----------- drivers/target/target_core_transport.c | 1 - include/target/target_core_base.h | 1 - 3 files changed, 13 deletions(-)