]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
block: call blk_register_queue earlier in device_add_disk
authorChristoph Hellwig <hch@lst.de>
Wed, 18 Aug 2021 14:45:37 +0000 (16:45 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 23 Aug 2021 18:55:45 +0000 (12:55 -0600)
Ensure that all the sysfs bits are set up before bdev_add is called,
as that will make the upcomding error handling much easier.  However
this means the call to disk_update_readahead has to be split as that
requires a bdi.  Also remove various sanity checks that don't make
sense now that blk_register_queue only has a single caller.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210818144542.19305-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-sysfs.c
block/genhd.c

index 7fd99487300cb8c77b18f84346d221fac0146cc6..614d9d47de36b0873596ba14876328a17387f613 100644 (file)
@@ -856,15 +856,6 @@ int blk_register_queue(struct gendisk *disk)
        struct device *dev = disk_to_dev(disk);
        struct request_queue *q = disk->queue;
 
-       if (WARN_ON(!q))
-               return -ENXIO;
-
-       WARN_ONCE(blk_queue_registered(q),
-                 "%s is registering an already registered queue\n",
-                 kobject_name(&dev->kobj));
-
-       disk_update_readahead(disk);
-
        ret = blk_trace_init_sysfs(dev);
        if (ret)
                return ret;
index 75d900e4c82fcb7c96ff5a57d7ac2edba94ad79f..a54b4849242c41dfd1a032aab676406acee0685c 100644 (file)
@@ -508,6 +508,8 @@ void device_add_disk(struct device *parent, struct gendisk *disk,
                disk->slave_dir = NULL;
        }
 
+       blk_register_queue(disk);
+
        if (disk->flags & GENHD_FL_HIDDEN) {
                /*
                 * Don't let hidden disks show up in /proc/partitions,
@@ -537,8 +539,7 @@ void device_add_disk(struct device *parent, struct gendisk *disk,
                disk_uevent(disk, KOBJ_ADD);
        }
 
-       blk_register_queue(disk);
-
+       disk_update_readahead(disk);
        disk_add_events(disk);
 }
 EXPORT_SYMBOL(device_add_disk);