elevator: add new field flags in struct elevator_queue
authorYu Kuai <yukuai3@huawei.com>
Wed, 19 Oct 2022 12:15:17 +0000 (20:15 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 24 Oct 2022 00:59:17 +0000 (18:59 -0600)
There are only one flag to indicate that elevator is registered currently,
prepare to add a flag to disable wbt if default elevator is bfq.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221019121518.3865235-6-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/elevator.c
block/elevator.h

index 20e70fd3f77f9ca1150f2b50026db0b65af9f781..9e12706e8d8cbbe586d8a9d67b7fbc2fd3272447 100644 (file)
@@ -512,7 +512,7 @@ int elv_register_queue(struct request_queue *q, bool uevent)
                if (uevent)
                        kobject_uevent(&e->kobj, KOBJ_ADD);
 
-               e->registered = 1;
+               set_bit(ELEVATOR_FLAG_REGISTERED, &e->flags);
        }
        return error;
 }
@@ -523,11 +523,9 @@ void elv_unregister_queue(struct request_queue *q)
 
        lockdep_assert_held(&q->sysfs_lock);
 
-       if (e && e->registered) {
+       if (e && test_and_clear_bit(ELEVATOR_FLAG_REGISTERED, &e->flags)) {
                kobject_uevent(&e->kobj, KOBJ_REMOVE);
                kobject_del(&e->kobj);
-
-               e->registered = 0;
        }
 }
 
index 3f0593b3bf9d3715f3809dfc9a394a6967abc5f8..ed574bf3e629e15b6a0bc4b030fb4a992dc28fd2 100644 (file)
@@ -100,10 +100,12 @@ struct elevator_queue
        void *elevator_data;
        struct kobject kobj;
        struct mutex sysfs_lock;
-       unsigned int registered:1;
+       unsigned long flags;
        DECLARE_HASHTABLE(hash, ELV_HASH_BITS);
 };
 
+#define ELEVATOR_FLAG_REGISTERED 0
+
 /*
  * block elevator interface
  */