From 8336d18c6b57a603aaa4db76bbf4f8cb08acfa5e Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Thu, 8 May 2025 16:58:04 +0800 Subject: [PATCH] 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 Reviewed-by: Christoph Hellwig Reviewed-by: Nilay Shroff Link: https://lore.kernel.org/r/20250508085807.3175112-2-ming.lei@redhat.com Signed-off-by: Jens Axboe --- block/blk-sysfs.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 386374ff655b..8be2390c3c19 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); -- 2.50.1