summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2017-02-21 18:09:46 +0100
committerJens Axboe <axboe@fb.com>2017-02-21 20:51:54 +0100
commit4b8c861a7c79806fb9ee564c87f517dc26fc2d1e (patch)
tree03b4bd4acc1fa2eec199cf5d53928eb6c41639bb
parentnbd: cleanup workqueue on error properly (diff)
downloadlinux-4b8c861a7c79806fb9ee564c87f517dc26fc2d1e.tar.xz
linux-4b8c861a7c79806fb9ee564c87f517dc26fc2d1e.zip
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 <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>
-rw-r--r--block/genhd.c3
1 files changed, 1 insertions, 2 deletions
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);