57 lines
2.1 KiB
Diff
57 lines
2.1 KiB
Diff
From ca0b04683be7bba50703eaec260167ec494d80b8 Mon Sep 17 00:00:00 2001
|
|
From: Julian Sun <sunjunchao2870@gmail.com>
|
|
Date: Tue, 12 Aug 2025 23:42:57 +0800
|
|
Subject: block: restore default wbt enablement
|
|
|
|
The commit 245618f8e45f ("block: protect wbt_lat_usec using
|
|
q->elevator_lock") protected wbt_enable_default() with
|
|
q->elevator_lock; however, it also placed wbt_enable_default()
|
|
before blk_queue_flag_set(QUEUE_FLAG_REGISTERED, q);, resulting
|
|
in wbt failing to be enabled.
|
|
|
|
Moreover, the protection of wbt_enable_default() by q->elevator_lock
|
|
was removed in commit 78c271344b6f ("block: move wbt_enable_default()
|
|
out of queue freezing from sched ->exit()"), so we can directly fix
|
|
this issue by placing wbt_enable_default() after
|
|
blk_queue_flag_set(QUEUE_FLAG_REGISTERED, q);.
|
|
|
|
Additionally, this issue also causes the inability to read the
|
|
wbt_lat_usec file, and the scenario is as follows:
|
|
|
|
root@q:/sys/block/sda/queue# cat wbt_lat_usec
|
|
cat: wbt_lat_usec: Invalid argument
|
|
|
|
root@q:/data00/sjc/linux# ls /sys/kernel/debug/block/sda/rqos
|
|
cannot access '/sys/kernel/debug/block/sda/rqos': No such file or directory
|
|
|
|
root@q:/data00/sjc/linux# find /sys -name wbt
|
|
/sys/kernel/debug/tracing/events/wbt
|
|
|
|
After testing with this patch, wbt can be enabled normally.
|
|
|
|
Signed-off-by: Julian Sun <sunjunchao@bytedance.com>
|
|
Cc: stable@vger.kernel.org
|
|
Fixes: 245618f8e45f ("block: protect wbt_lat_usec using q->elevator_lock")
|
|
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
|
|
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
|
|
Reviewed-by: Ming Lei <ming.lei@redhat.com>
|
|
Link: https://lore.kernel.org/r/20250812154257.57540-1-sunjunchao@bytedance.com
|
|
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
---
|
|
block/blk-sysfs.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/block/blk-sysfs.c
|
|
+++ b/block/blk-sysfs.c
|
|
@@ -876,9 +876,9 @@ int blk_register_queue(struct gendisk *d
|
|
|
|
if (queue_is_mq(q))
|
|
elevator_set_default(q);
|
|
- wbt_enable_default(disk);
|
|
|
|
blk_queue_flag_set(QUEUE_FLAG_REGISTERED, q);
|
|
+ wbt_enable_default(disk);
|
|
|
|
/* Now everything is ready and send out KOBJ_ADD uevent */
|
|
kobject_uevent(&disk->queue_kobj, KOBJ_ADD);
|