block: remove the bd_block_size field from struct block_device
authorChristoph Hellwig <hch@lst.de>
Fri, 26 Jun 2020 08:01:55 +0000 (10:01 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 1 Jul 2020 14:08:17 +0000 (08:08 -0600)
We can trivially calculate the block size from the inodes i_blkbits
variable.  Use that instead of keeping two redundant copies of the
information in slightly different formats.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/block_dev.c
include/linux/blk_types.h
include/linux/blkdev.h

index 8b7a9c7..06d31e4 100644 (file)
@@ -105,10 +105,7 @@ EXPORT_SYMBOL(invalidate_bdev);
 
 static void set_init_blocksize(struct block_device *bdev)
 {
-       unsigned bsize = bdev_logical_block_size(bdev);
-
-       bdev->bd_block_size = bsize;
-       bdev->bd_inode->i_blkbits = blksize_bits(bsize);
+       bdev->bd_inode->i_blkbits = blksize_bits(bdev_logical_block_size(bdev));
 }
 
 int set_blocksize(struct block_device *bdev, int size)
@@ -122,9 +119,8 @@ int set_blocksize(struct block_device *bdev, int size)
                return -EINVAL;
 
        /* Don't change the size if it is same as current */
-       if (bdev->bd_block_size != size) {
+       if (bdev->bd_inode->i_blkbits != blksize_bits(size)) {
                sync_blockdev(bdev);
-               bdev->bd_block_size = size;
                bdev->bd_inode->i_blkbits = blksize_bits(size);
                kill_bdev(bdev);
        }
@@ -889,7 +885,6 @@ struct block_device *bdget(dev_t dev)
                bdev->bd_contains = NULL;
                bdev->bd_super = NULL;
                bdev->bd_inode = inode;
-               bdev->bd_block_size = i_blocksize(inode);
                bdev->bd_part_count = 0;
                bdev->bd_invalidated = 0;
                inode->i_mode = S_IFBLK;
index a602132..b01cd19 100644 (file)
@@ -33,7 +33,6 @@ struct block_device {
        struct list_head        bd_holder_disks;
 #endif
        struct block_device *   bd_contains;
-       unsigned                bd_block_size;
        u8                      bd_partno;
        struct hd_struct *      bd_part;
        /* number of times partitions within this device have been opened. */
index 1cc913f..408eb66 100644 (file)
@@ -1543,7 +1543,7 @@ static inline unsigned int blksize_bits(unsigned int size)
 
 static inline unsigned int block_size(struct block_device *bdev)
 {
-       return bdev->bd_block_size;
+       return 1 << bdev->bd_inode->i_blkbits;
 }
 
 int kblockd_schedule_work(struct work_struct *work);