On 13.10.21 07:10, Christoph Hellwig wrote:
Use the proper helper to read the block device size. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- drivers/target/target_core_iblock.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c index 31df20abe141f..ab7f5678ebc44 100644 --- a/drivers/target/target_core_iblock.c +++ b/drivers/target/target_core_iblock.c @@ -232,8 +232,9 @@ static unsigned long long iblock_emulate_read_cap_with_block_size( struct block_device *bd, struct request_queue *q) { - unsigned long long blocks_long = (div_u64(i_size_read(bd->bd_inode), - bdev_logical_block_size(bd)) - 1); + loff_t size = bdev_nr_sectors(bd) << SECTOR_SHIFT; + unsigned long long blocks_long = + div_u64(size, bdev_logical_block_size(bd)) - 1; u32 block_size = bdev_logical_block_size(bd);
To enhance readability, would it make sense to shift the new lines behind "u32 block_size = ...", so block_size can be used in div_u64 instead of using bdev_logical_block_size twice?
if (block_size == dev->dev_attrib.block_size)