block: invoke blk_mq_exit_sched no matter whether have .exit_sched
authorYufen Yu <yuyufen@huawei.com>
Fri, 9 Oct 2020 03:26:27 +0000 (23:26 -0400)
committerJens Axboe <axboe@kernel.dk>
Fri, 9 Oct 2020 18:34:06 +0000 (12:34 -0600)
We will register debugfs for scheduler no matter whether it have
defined callback funciton .exit_sched. So, blk_mq_exit_sched()
is always needed to unregister debugfs. Also, q->elevator should
be set as NULL after exiting scheduler.

For now, since all register scheduler have defined .exit_sched,
it will not cause any actual problem. But It will be more reasonable
to do this change.

Signed-off-by: Yufen Yu <yuyufen@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-sysfs.c
block/elevator.c

index 76b54c7750b07ee1b0b634e459be9d1c24101ef1..e35eb1a05ad23c1ebf964a5520f524467acc66e2 100644 (file)
@@ -740,7 +740,6 @@ static void blk_exit_queue(struct request_queue *q)
        if (q->elevator) {
                ioc_clear_queue(q);
                __elevator_exit(q, q->elevator);
-               q->elevator = NULL;
        }
 
        /*
index 90ed7a28c21d36db8b0ad02df8f4ac8880321c11..7d76b61e157a4e0f7124f65732711f11f249cc75 100644 (file)
@@ -191,8 +191,7 @@ static void elevator_release(struct kobject *kobj)
 void __elevator_exit(struct request_queue *q, struct elevator_queue *e)
 {
        mutex_lock(&e->sysfs_lock);
-       if (e->type->ops.exit_sched)
-               blk_mq_exit_sched(q, e);
+       blk_mq_exit_sched(q, e);
        mutex_unlock(&e->sysfs_lock);
 
        kobject_put(&e->kobj);