diff options
author | Ming Lei <ming.lei@redhat.com> | 2025-05-08 16:58:04 +0800 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2025-05-08 09:03:44 -0600 |
commit | 8336d18c6b57a603aaa4db76bbf4f8cb08acfa5e (patch) | |
tree | 145bf6cfeb3b94c59a8ac50b2c568219d3cfceaf | |
parent | 037af793557ed192b2c10cf2379ac97abacedf55 (diff) |
block: don't quiesce queue for calling elevator_set_none()
blk_mq_freeze_queue() can't be called on quiesced queue, otherwise it may
never return if there is any queued requests.
Fix it by removing quiesce queue around elevator_set_none() because
elevator_switch() does quiesce queue in case that we need to switch
to none really.
Fixes: 1e44bedbc921 ("block: unifying elevator change")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Link: https://lore.kernel.org/r/20250508085807.3175112-2-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | block/blk-sysfs.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 386374ff655b9..8be2390c3c195 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -948,11 +948,8 @@ void blk_unregister_queue(struct gendisk *disk) blk_mq_sysfs_unregister(disk); blk_crypto_sysfs_unregister(disk); - if (queue_is_mq(q)) { - blk_mq_quiesce_queue(q); + if (queue_is_mq(q)) elevator_set_none(q); - blk_mq_unquiesce_queue(q); - } mutex_lock(&q->sysfs_lock); disk_unregister_independent_access_ranges(disk); |