X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=block%2Fgenhd.c;h=b26a5ea115d00b51f20c8e59f09a420b2dbadc9f;hb=2ddaa6762696db4bb35726063b421782a9e0436f;hp=3631cd4802955247d27316c10b172744700e6340;hpb=5bcbe22ca47da04cda3a858cef67f55b550c1d13;p=karo-tx-linux.git diff --git a/block/genhd.c b/block/genhd.c index 3631cd480295..b26a5ea115d0 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -669,18 +669,23 @@ void del_gendisk(struct gendisk *disk) disk_part_iter_init(&piter, disk, DISK_PITER_INCL_EMPTY | DISK_PITER_REVERSE); while ((part = disk_part_iter_next(&piter))) { - bdev_unhash_inode(MKDEV(disk->major, - disk->first_minor + part->partno)); invalidate_partition(disk, part->partno); + bdev_unhash_inode(part_devt(part)); delete_partition(disk, part->partno); } disk_part_iter_exit(&piter); invalidate_partition(disk, 0); + bdev_unhash_inode(disk_devt(disk)); set_capacity(disk, 0); disk->flags &= ~GENHD_FL_UP; sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi"); + /* + * Unregister bdi before releasing device numbers (as they can get + * reused and we'd get clashes in sysfs). + */ + bdi_unregister(disk->queue->backing_dev_info); blk_unregister_queue(disk); blk_unregister_region(disk_devt(disk), disk->minors);