[PATCH 02/24] loop: remove loop_set_size
From: Christoph Hellwig <hch@lst.de>
Date: 2020-11-11 08:29:35
Also in:
ceph-devel, dm-devel, linux-block, linux-fsdevel, linux-nvme, linux-scsi, xen-devel
Subsystem:
block layer, the rest · Maintainers:
Jens Axboe, Linus Torvalds
Just use set_capacity_revalidate_and_notify directly, as this function can update the block device size as well when the last parameter is set to true. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/block/loop.c | 37 +++++++------------------------------ 1 file changed, 7 insertions(+), 30 deletions(-)
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index cb1191d6e945f2..86eb7e0691eef5 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c@@ -241,23 +241,6 @@ loop_validate_block_size(unsigned short bsize) return 0; } -/** - * loop_set_size() - sets device size and notifies userspace - * @lo: struct loop_device to set the size for - * @size: new size of the loop device - * - * Callers must validate that the size passed into this function fits into - * a sector_t, eg using loop_validate_size() - */ -static void loop_set_size(struct loop_device *lo, loff_t size) -{ - struct block_device *bdev = lo->lo_device; - - bd_set_nr_sectors(bdev, size); - - set_capacity_revalidate_and_notify(lo->lo_disk, size, false); -} - static inline int lo_do_transfer(struct loop_device *lo, int cmd, struct page *rpage, unsigned roffs,
@@ -1076,7 +1059,6 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, struct address_space *mapping; struct block_device *claimed_bdev = NULL; int error; - loff_t size; bool partscan; unsigned short bsize;
@@ -1164,9 +1146,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, loop_update_dio(lo); loop_sysfs_init(lo); - size = get_loop_size(lo, file); - loop_set_size(lo, size); - + set_capacity_revalidate_and_notify(lo->lo_disk, get_loop_size(lo, file), + true); set_blocksize(bdev, S_ISBLK(inode->i_mode) ? block_size(inode->i_bdev) : PAGE_SIZE);
@@ -1402,9 +1383,9 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info) lo->lo_flags |= prev_lo_flags & ~LOOP_SET_STATUS_CLEARABLE_FLAGS; if (size_changed) { - loff_t new_size = get_size(lo->lo_offset, lo->lo_sizelimit, - lo->lo_backing_file); - loop_set_size(lo, new_size); + set_capacity_revalidate_and_notify(lo->lo_disk, + get_size(lo->lo_offset, lo->lo_sizelimit, + lo->lo_backing_file), true); } loop_config_discard(lo);
@@ -1580,14 +1561,10 @@ loop_get_status64(struct loop_device *lo, struct loop_info64 __user *arg) { static int loop_set_capacity(struct loop_device *lo) { - loff_t size; - if (unlikely(lo->lo_state != Lo_bound)) return -ENXIO; - - size = get_loop_size(lo, lo->lo_backing_file); - loop_set_size(lo, size); - + set_capacity_revalidate_and_notify(lo->lo_disk, + get_loop_size(lo, lo->lo_backing_file), true); return 0; }
--
2.28.0