]> www.infradead.org Git - users/hch/block.git/commitdiff
block: freeze the queue earlier in del_gendisk blk_mq_sched_free_rqs-fix
authorChristoph Hellwig <hch@lst.de>
Tue, 24 May 2022 12:33:09 +0000 (14:33 +0200)
committerChristoph Hellwig <hch@lst.de>
Mon, 13 Jun 2022 17:40:34 +0000 (19:40 +0200)
Freeze the queue earlier in del_gendisk so that the state does not
change while we remove debugfs and sysfs files.

Ming mentioned that being able to observer request in debugfs might
be useful while the queue is being frozen in del_gendisk, which is
made possible by this change.

Signed-off-by: Christoph Hellwig <hch@lst.de>
block/genhd.c

index e0675772178b0163384de34c78be38a2c1a54322..278227ba1d531a561a45ef57f86b684edc6c138e 100644 (file)
@@ -623,6 +623,7 @@ void del_gendisk(struct gendisk *disk)
         * Prevent new I/O from crossing bio_queue_enter().
         */
        blk_queue_start_drain(q);
+       blk_mq_freeze_queue_wait(q);
 
        if (!(disk->flags & GENHD_FL_HIDDEN)) {
                sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi");
@@ -646,8 +647,6 @@ void del_gendisk(struct gendisk *disk)
        pm_runtime_set_memalloc_noio(disk_to_dev(disk), false);
        device_del(disk_to_dev(disk));
 
-       blk_mq_freeze_queue_wait(q);
-
        blk_throtl_cancel_bios(disk->queue);
 
        blk_sync_queue(q);