Commit 8336d18c authored by Ming Lei's avatar Ming Lei Committed by Jens Axboe
Browse files

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: 1e44bedb ("block: unifying elevator change")
Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarNilay Shroff <nilay@linux.ibm.com>
Link: https://lore.kernel.org/r/20250508085807.3175112-2-ming.lei@redhat.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 037af793
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -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);