From: Ming Lei Date: Thu, 8 May 2025 08:58:04 +0000 (+0800) Subject: block: don't quiesce queue for calling elevator_set_none() X-Git-Tag: v6.16-rc1~216^2~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8336d18c6b57a603aaa4db76bbf4f8cb08acfa5e;p=thirdparty%2Fkernel%2Flinux.git 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 --- 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);