]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
block: don't quiesce queue for calling elevator_set_none()
authorMing Lei <ming.lei@redhat.com>
Thu, 8 May 2025 08:58:04 +0000 (16:58 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 8 May 2025 15:03:44 +0000 (09:03 -0600)
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>
block/blk-sysfs.c

index 386374ff655b9cb0e735c95c6d6aed27e7486108..8be2390c3c195754fac8cdaeb0e16b2d5732eb5b 100644 (file)
@@ -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);