block: Unhash also block device inode for the whole device
authorJan Kara <jack@suse.cz>
Tue, 21 Feb 2017 17:09:47 +0000 (18:09 +0100)
committerJens Axboe <axboe@fb.com>
Tue, 21 Feb 2017 19:51:54 +0000 (12:51 -0700)
Iteration over partitions in del_gendisk() omits part0. Add
bdev_unhash_inode() call for the whole device. Otherwise if the device
number gets reused, bdev inode will be still associated with the old
(stale) bdi.

Tested-by: Lekshmi Pillai <lekshmicpillai@in.ibm.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/genhd.c

index 15b3c18d83379a6fc27f1393366c03d19b83262b..2f444b87a5f244db1bd65fea29eea1daae265c1a 100644 (file)
@@ -676,6 +676,7 @@ void del_gendisk(struct gendisk *disk)
        disk_part_iter_exit(&piter);
 
        invalidate_partition(disk, 0);
+       bdev_unhash_inode(disk_devt(disk));
        set_capacity(disk, 0);
        disk->flags &= ~GENHD_FL_UP;