summaryrefslogtreecommitdiffstats
path: root/block/partitions
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2020-04-14 09:28:59 +0200
committerJens Axboe <axboe@kernel.dk>2020-04-20 19:32:59 +0200
commite669c1da03a9dde0e7d43852a5b6ade8312e8701 (patch)
tree4395c31495eb199ae168dfed3300864a3120271b /block/partitions
parentdasd: use blk_drop_partitions instead of badly reimplementing it (diff)
downloadlinux-e669c1da03a9dde0e7d43852a5b6ade8312e8701.tar.xz
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.c7
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)))