On Tue, Oct 04, 2022 at 10:00:10PM -0700, Chaitanya Kulkarni wrote:
+void init_disk(struct gendisk *disk, int major, int first_minor, + int minors, sector_t sectors, void *private_data, + const struct block_device_operations *fops) +{ + disk->major = major; + disk->first_minor = first_minor; + disk->minors = minors; + set_capacity(disk, sectors); + disk->private_data = private_data; + disk->fops = fops;
I don't like this at all. For one major/first_minor/minors are optional and discouraged for new drivers. Setting the capacity is a different thing and is done by helpers also used for revalidation in many drivers. It might make sense to pass the fops (and maybe private_data) to blk_mq_alloc_disk / blk_alloc_disk, but even then I'm not quite sure it is worth the churn.