]> git.baikalelectronics.ru Git - kernel.git/commitdiff
block: remove the bd_bdi in struct block_device
authorChristoph Hellwig <hch@lst.de>
Mon, 9 Aug 2021 14:17:44 +0000 (16:17 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 9 Aug 2021 17:53:26 +0000 (11:53 -0600)
Just retrieve the bdi from the disk.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20210809141744.1203023-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/ioctl.c
fs/block_dev.c
fs/nilfs2/super.c
fs/super.c
fs/xfs/xfs_buf.c
include/linux/backing-dev.h
include/linux/blk_types.h

index 0c3a4a53fa11822e160cd107376471b02bf5d901..fff161eaab42ebb826f2317bbc7efabbdabf1053 100644 (file)
@@ -506,7 +506,7 @@ static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode,
        case BLKFRASET:
                if(!capable(CAP_SYS_ADMIN))
                        return -EACCES;
-               bdev->bd_bdi->ra_pages = (arg * 512) / PAGE_SIZE;
+               bdev->bd_disk->bdi->ra_pages = (arg * 512) / PAGE_SIZE;
                return 0;
        case BLKRRPART:
                return blkdev_reread_part(bdev, mode);
@@ -556,7 +556,8 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
        case BLKFRAGET:
                if (!argp)
                        return -EINVAL;
-               return put_long(argp, (bdev->bd_bdi->ra_pages*PAGE_SIZE) / 512);
+               return put_long(argp,
+                       (bdev->bd_disk->bdi->ra_pages * PAGE_SIZE) / 512);
        case BLKGETSIZE:
                size = i_size_read(bdev->bd_inode);
                if ((size >> 9) > ~0UL)
@@ -628,7 +629,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
                if (!argp)
                        return -EINVAL;
                return compat_put_long(argp,
-                              (bdev->bd_bdi->ra_pages * PAGE_SIZE) / 512);
+                       (bdev->bd_disk->bdi->ra_pages * PAGE_SIZE) / 512);
        case BLKGETSIZE:
                size = i_size_read(bdev->bd_inode);
                if ((size >> 9) > ~0UL)
index 43be5463a4c4872de702f94775e4a5b45a60cabd..e1c14c2e0504d4f9ea23b1ba08deb31598dc9df6 100644 (file)
@@ -801,7 +801,6 @@ static struct inode *bdev_alloc_inode(struct super_block *sb)
        if (!ei)
                return NULL;
        memset(&ei->bdev, 0, sizeof(ei->bdev));
-       ei->bdev.bd_bdi = &noop_backing_dev_info;
        return &ei->vfs_inode;
 }
 
@@ -826,16 +825,11 @@ static void init_once(void *data)
 
 static void bdev_evict_inode(struct inode *inode)
 {
-       struct block_device *bdev = &BDEV_I(inode)->bdev;
        truncate_inode_pages_final(&inode->i_data);
        invalidate_inode_buffers(inode); /* is it needed here? */
        clear_inode(inode);
        /* Detach inode from wb early as bdi_put() may free bdi->wb */
        inode_detach_wb(inode);
-       if (bdev->bd_bdi != &noop_backing_dev_info) {
-               bdi_put(bdev->bd_bdi);
-               bdev->bd_bdi = &noop_backing_dev_info;
-       }
 }
 
 static const struct super_operations bdev_sops = {
@@ -1084,11 +1078,8 @@ static int blkdev_get_whole(struct block_device *bdev, fmode_t mode)
                }
        }
 
-       if (!bdev->bd_openers) {
+       if (!bdev->bd_openers)
                set_init_blocksize(bdev);
-               if (bdev->bd_bdi == &noop_backing_dev_info)
-                       bdev->bd_bdi = bdi_get(disk->bdi);
-       }
        if (test_bit(GD_NEED_PART_SCAN, &disk->state))
                bdev_disk_changed(disk, false);
        bdev->bd_openers++;
@@ -1121,8 +1112,6 @@ static int blkdev_get_part(struct block_device *part, fmode_t mode)
 
        disk->open_partitions++;
        set_init_blocksize(part);
-       if (part->bd_bdi == &noop_backing_dev_info)
-               part->bd_bdi = bdi_get(disk->bdi);
 done:
        part->bd_openers++;
        return 0;
index 4abd928b0bc839db191e75d4dff935bee6ab7e29..f6b2d280aab5a3b75d9f4caaf768a7950acb6a11 100644 (file)
@@ -1053,7 +1053,7 @@ nilfs_fill_super(struct super_block *sb, void *data, int silent)
        sb->s_time_gran = 1;
        sb->s_max_links = NILFS_LINK_MAX;
 
-       sb->s_bdi = bdi_get(sb->s_bdev->bd_bdi);
+       sb->s_bdi = bdi_get(sb->s_bdev->bd_disk->bdi);
 
        err = load_nilfs(nilfs, sb);
        if (err)
index 91b7f156735bbd44e7d67ef9ea81ef94ae685f68..bcef3a6f4c4b586ad559c67c90cc61d262a9a21f 100644 (file)
@@ -1203,7 +1203,7 @@ static int set_bdev_super(struct super_block *s, void *data)
 {
        s->s_bdev = data;
        s->s_dev = s->s_bdev->bd_dev;
-       s->s_bdi = bdi_get(s->s_bdev->bd_bdi);
+       s->s_bdi = bdi_get(s->s_bdev->bd_disk->bdi);
 
        if (blk_queue_stable_writes(s->s_bdev->bd_disk->queue))
                s->s_iflags |= SB_I_STABLE_WRITES;
index 8ff42b3585e0fc9eb52d33e3371ef90e4df4d03d..3ab73567a0f5b2921e6e4971688ce743bf80e9d6 100644 (file)
@@ -844,7 +844,7 @@ xfs_buf_readahead_map(
 {
        struct xfs_buf          *bp;
 
-       if (bdi_read_congested(target->bt_bdev->bd_bdi))
+       if (bdi_read_congested(target->bt_bdev->bd_disk->bdi))
                return;
 
        xfs_buf_read_map(target, map, nmaps,
index 44df4fcef65c1ebaa2610ddec2fc93c03750c21a..29530859d9ffa50ef7b1b58c2c1560214a2ff2f5 100644 (file)
@@ -143,7 +143,7 @@ static inline struct backing_dev_info *inode_to_bdi(struct inode *inode)
        sb = inode->i_sb;
 #ifdef CONFIG_BLOCK
        if (sb_is_blkdev_sb(sb))
-               return I_BDEV(inode)->bd_bdi;
+               return I_BDEV(inode)->bd_disk->bdi;
 #endif
        return sb->s_bdi;
 }
index e927356556848553989114424520abbe58ca7372..1335efa8a1db0fac84cd634e6fc623af3c28356d 100644 (file)
@@ -38,7 +38,6 @@ struct block_device {
        u8                      bd_partno;
        spinlock_t              bd_size_lock; /* for bd_inode->i_size updates */
        struct gendisk *        bd_disk;
-       struct backing_dev_info *bd_bdi;
 
        /* The counter of freeze processes */
        int                     bd_fsfreeze_count;