On Fri, May 21, 2021 at 07:50:51AM +0200, Christoph Hellwig wrote: > diff --git a/block/genhd.c b/block/genhd.c > index 39ca97b0edc6..2c00bc3261d9 100644 > --- a/block/genhd.c > +++ b/block/genhd.c > @@ -335,52 +335,22 @@ static int blk_mangle_minor(int minor) <-- snip --> > -int blk_alloc_devt(struct block_device *bdev, dev_t *devt) > +int blk_alloc_ext_minor(void) > { > - struct gendisk *disk = bdev->bd_disk; > int idx; > > - /* in consecutive minor range? */ > - if (bdev->bd_partno < disk->minors) { > - *devt = MKDEV(disk->major, disk->first_minor + bdev->bd_partno); > - return 0; > - } > - It is not obviously clear to me, why this was part of add_disk() path, and ... > diff --git a/block/partitions/core.c b/block/partitions/core.c > index dc60ecf46fe6..504297bdc8bf 100644 > --- a/block/partitions/core.c > +++ b/block/partitions/core.c > @@ -379,9 +380,15 @@ static struct block_device *add_partition(struct gendisk *disk, int partno, > pdev->type = &part_type; > pdev->parent = ddev; > > - err = blk_alloc_devt(bdev, &devt); > - if (err) > - goto out_put; > + /* in consecutive minor range? */ > + if (bdev->bd_partno < disk->minors) { > + devt = MKDEV(disk->major, disk->first_minor + bdev->bd_partno); > + } else { > + err = blk_alloc_ext_minor(); > + if (err < 0) > + goto out_put; > + devt = MKDEV(BLOCK_EXT_MAJOR, err); > + } > pdev->devt = devt; > > /* delay uevent until 'holders' subdir is created */ ... and why we only add this here now. Other than that, this looks like a super nice cleanup! Reviewed-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> Luis