diff options
author | Christoph Hellwig <hch@lst.de> | 2020-04-14 09:28:59 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-04-20 11:32:59 -0600 |
commit | e669c1da03a9dde0e7d43852a5b6ade8312e8701 (patch) | |
tree | 4395c31495eb199ae168dfed3300864a3120271b /block/partitions | |
parent | 21be6cdc00954b5e5e5842b69ec8e83fb3cb0816 (diff) | |
download | linux-e669c1da03a9dde0e7d43852a5b6ade8312e8701.tar.gz linux-e669c1da03a9dde0e7d43852a5b6ade8312e8701.tar.bz2 linux-e669c1da03a9dde0e7d43852a5b6ade8312e8701.zip |
block: don't call invalidate_partition from blk_drop_partitions
Given that the device must not be busy, most of the calls from
invalidate_partition that are related to file system metadata are
guranteed to not happen. Just open code the calls to sync_blockdev
and invalidate_bdev instead.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/partitions')
-rw-r--r-- | block/partitions/core.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/block/partitions/core.c b/block/partitions/core.c index 8c5295ca8ea6..a94d296d7aed 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -607,15 +607,14 @@ int blk_drop_partitions(struct block_device *bdev) { struct disk_part_iter piter; struct hd_struct *part; - int res; if (!disk_part_scan_enabled(bdev->bd_disk)) return 0; if (bdev->bd_part_count || bdev->bd_openers > 1) return -EBUSY; - res = invalidate_partition(bdev->bd_disk, 0); - if (res) - return res; + + sync_blockdev(bdev); + invalidate_bdev(bdev); disk_part_iter_init(&piter, bdev->bd_disk, DISK_PITER_INCL_EMPTY); while ((part = disk_part_iter_next(&piter))) |