On Fri, Oct 07, 2022 at 12:38:25PM -0700, Keith Busch wrote: > From: Keith Busch <kbusch@xxxxxxxxxx> > > The major/minor of a hidden gendisk is not propagated to the block > device. This is required to suppress it from being visible. For these > disks, we need to handle freeing the dynamic minor directly when it's > released since bdev_free_inode() won't be able to. This now leads to a different lifetime. I think the proper fix is the one below (untested): diff --git a/block/genhd.c b/block/genhd.c index d36fabf0abc1f..1752ce356484e 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -507,6 +507,8 @@ int __must_check device_add_disk(struct device *parent, struct gendisk *disk, */ dev_set_uevent_suppress(ddev, 0); disk_uevent(disk, KOBJ_ADD); + } else { + disk->part0->bd_dev = ddev->devt; } disk_update_readahead(disk);