block: create the bdi link earlier in device_add_disk
authorChristoph Hellwig <hch@lst.de>
Wed, 18 Aug 2021 14:45:35 +0000 (16:45 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 23 Aug 2021 18:55:45 +0000 (12:55 -0600)
This will simplify error handling going forward.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20210818144542.19305-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/genhd.c

index ab455f1..f05e58f 100644 (file)
@@ -518,8 +518,13 @@ void device_add_disk(struct device *parent, struct gendisk *disk,
                                   disk->major, disk->first_minor);
                WARN_ON(ret);
                bdi_set_owner(disk->bdi, ddev);
-               bdev_add(disk->part0, ddev->devt);
+               if (disk->bdi->dev) {
+                       ret = sysfs_create_link(&ddev->kobj,
+                                               &disk->bdi->dev->kobj, "bdi");
+                       WARN_ON(ret);
+               }
 
+               bdev_add(disk->part0, ddev->devt);
                disk_scan_partitions(disk);
 
                /*
@@ -528,12 +533,6 @@ void device_add_disk(struct device *parent, struct gendisk *disk,
                 */
                dev_set_uevent_suppress(ddev, 0);
                disk_uevent(disk, KOBJ_ADD);
-
-               if (disk->bdi->dev) {
-                       ret = sysfs_create_link(&ddev->kobj,
-                                               &disk->bdi->dev->kobj, "bdi");
-                       WARN_ON(ret);
-               }
        }
 
        blk_register_queue(disk);