From: Jan Kara Date: Tue, 21 Feb 2017 17:09:46 +0000 (+0100) Subject: block: Move bdev_unhash_inode() after invalidate_partition() X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=4b8c861a7c79806fb9ee564c87f517dc26fc2d1e;p=openwrt%2Fstaging%2Fblogic.git block: Move bdev_unhash_inode() after invalidate_partition() Move bdev_unhash_inode() after invalidate_partition() as invalidate_partition() looks up bdev and it cannot find the right bdev inode after bdev_unhash_inode() is called. Thus invalidate_partition() would not invalidate page cache of the previously used bdev. Also use part_devt() when calling bdev_unhash_inode() instead of manually creating the device number. Tested-by: Lekshmi Pillai Acked-by: Tejun Heo Signed-off-by: Jan Kara Signed-off-by: Jens Axboe --- diff --git a/block/genhd.c b/block/genhd.c index 3631cd480295..15b3c18d8337 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -669,9 +669,8 @@ 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);