summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorBart Van Assche <bart.vanassche@wdc.com>2018-01-17 11:48:09 -0800
committerJason Liu <jason.hui.liu@nxp.com>2019-02-12 10:33:24 +0800
commitad64bdbb0fd576d335106c2df508fd10b744c02c (patch)
tree2b6385eb550464340cca529dd5837322a80252e3 /block
parentb6d3fae20bf3ccbe3a60d3addaa9cf04f6e876f2 (diff)
block: Document scheduler modification locking requirements
This patch does not change any functionality. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk> (cherry picked from commit 14a23498ba97683c6790b1bcd8b2cdfe9ad99797)
Diffstat (limited to 'block')
-rw-r--r--block/elevator.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/block/elevator.c b/block/elevator.c
index f041605d030c..d39315efd510 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -859,6 +859,8 @@ int elv_register_queue(struct request_queue *q)
struct elevator_queue *e = q->elevator;
int error;
+ lockdep_assert_held(&q->sysfs_lock);
+
error = kobject_add(&e->kobj, &q->kobj, "%s", "iosched");
if (!error) {
struct elv_fs_entry *attr = e->type->elevator_attrs;
@@ -879,6 +881,8 @@ int elv_register_queue(struct request_queue *q)
void elv_unregister_queue(struct request_queue *q)
{
+ lockdep_assert_held(&q->sysfs_lock);
+
if (q) {
struct elevator_queue *e = q->elevator;
@@ -955,6 +959,8 @@ static int elevator_switch_mq(struct request_queue *q,
{
int ret;
+ lockdep_assert_held(&q->sysfs_lock);
+
blk_mq_freeze_queue(q);
if (q->elevator) {
@@ -998,6 +1004,8 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e)
bool old_registered = false;
int err;
+ lockdep_assert_held(&q->sysfs_lock);
+
if (q->mq_ops)
return elevator_switch_mq(q, new_e);