Skip to content

Commit

Permalink
scst_lib: Avoid holding scst_mutex during sess_tgt_dev_list access
Browse files Browse the repository at this point in the history
In a previous commit, we introduced the use of RCU protection
when accessing sess_tgt_dev_list in scst_get_max_lun_commands().
As a result, we can now eliminate the use of scst_mutex when
accessing the list.
  • Loading branch information
lnocturno committed Apr 17, 2023
1 parent 8bd0f5f commit 87999af
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions scst/src/scst_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -14084,11 +14084,11 @@ int scst_get_max_lun_commands(struct scst_session *sess, uint64_t lun)

TRACE_ENTRY();

mutex_lock(&scst_mutex);

if (sess == NULL) {
struct scst_device *dev;

mutex_lock(&scst_mutex);

list_for_each_entry(dev, &scst_dev_list, dev_list_entry) {
if (dev->handler == &scst_null_devtype)
continue;
Expand All @@ -14097,7 +14097,10 @@ int scst_get_max_lun_commands(struct scst_session *sess, uint64_t lun)
if (res > dev->max_tgt_dev_commands)
res = dev->max_tgt_dev_commands;
}
goto out_unlock;

mutex_unlock(&scst_mutex);

goto out;
}

if (lun != NO_SUCH_LUN) {
Expand All @@ -14118,7 +14121,7 @@ int scst_get_max_lun_commands(struct scst_session *sess, uint64_t lun)
}
rcu_read_unlock();

goto out_unlock;
goto out;
}

rcu_read_lock();
Expand All @@ -14133,10 +14136,9 @@ int scst_get_max_lun_commands(struct scst_session *sess, uint64_t lun)
}
rcu_read_unlock();

out_unlock:
mutex_unlock(&scst_mutex);

out:
TRACE_EXIT_RES(res);

return res;
}
EXPORT_SYMBOL(scst_get_max_lun_commands);
Expand Down

0 comments on commit 87999af

Please sign in to comment.