block: call blk_register_queue earlier in device_add_disk
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>
This commit is contained in:
committed by
Jens Axboe
parent
bab53f6b61
commit
75f4dca596
@@ -856,15 +856,6 @@ int blk_register_queue(struct gendisk *disk)
|
|||||||
struct device *dev = disk_to_dev(disk);
|
struct device *dev = disk_to_dev(disk);
|
||||||
struct request_queue *q = disk->queue;
|
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);
|
ret = blk_trace_init_sysfs(dev);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -508,6 +508,8 @@ void device_add_disk(struct device *parent, struct gendisk *disk,
|
|||||||
disk->slave_dir = NULL;
|
disk->slave_dir = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
blk_register_queue(disk);
|
||||||
|
|
||||||
if (disk->flags & GENHD_FL_HIDDEN) {
|
if (disk->flags & GENHD_FL_HIDDEN) {
|
||||||
/*
|
/*
|
||||||
* Don't let hidden disks show up in /proc/partitions,
|
* 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);
|
disk_uevent(disk, KOBJ_ADD);
|
||||||
}
|
}
|
||||||
|
|
||||||
blk_register_queue(disk);
|
disk_update_readahead(disk);
|
||||||
|
|
||||||
disk_add_events(disk);
|
disk_add_events(disk);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(device_add_disk);
|
EXPORT_SYMBOL(device_add_disk);
|
||||||
|
|||||||
Reference in New Issue
Block a user