Commit 473338be authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: move more syncing and invalidation to delete_partition



Move the calls to fsync_bdev and __invalidate_device from del_gendisk to
delete_partition.  For the other two callers that check that there are
no openers for the delete partitions(s) the callouts are a no-op as no
file system can be mounted, but this keeps all the cleanup in one
place.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210406062303.811835-4-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 45611837
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -686,11 +686,8 @@ void del_gendisk(struct gendisk *disk)

	/* invalidate stuff */
	disk_part_iter_init(&piter, disk, DISK_PITER_INCL_EMPTY);
	while ((part = disk_part_iter_next(&piter))) {
		fsync_bdev(part);
		__invalidate_device(part, true);
	while ((part = disk_part_iter_next(&piter)))
		delete_partition(part);
	}
	disk_part_iter_exit(&piter);

	fsync_bdev(disk->part0);
+3 −3
Original line number Diff line number Diff line
@@ -287,6 +287,9 @@ struct device_type part_type = {
 */
void delete_partition(struct block_device *part)
{
	fsync_bdev(part);
	__invalidate_device(part, true);

	xa_erase(&part->bd_disk->part_tbl, part->bd_partno);
	kobject_put(part->bd_holder_dir);
	device_del(&part->bd_device);
@@ -468,9 +471,6 @@ int bdev_del_partition(struct block_device *bdev, int partno)
	if (part->bd_openers)
		goto out_unlock;

	sync_blockdev(part);
	invalidate_bdev(part);

	delete_partition(part);
	ret = 0;
out_unlock: