Commit a11d7fc2 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

block: remove the bd_bdi in struct block_device

Just retrieve the bdi from the disk.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20210809141744.1203023-6-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent edb0872f
...@@ -506,7 +506,7 @@ static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode, ...@@ -506,7 +506,7 @@ static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode,
case BLKFRASET: case BLKFRASET:
if(!capable(CAP_SYS_ADMIN)) if(!capable(CAP_SYS_ADMIN))
return -EACCES; return -EACCES;
bdev->bd_bdi->ra_pages = (arg * 512) / PAGE_SIZE; bdev->bd_disk->bdi->ra_pages = (arg * 512) / PAGE_SIZE;
return 0; return 0;
case BLKRRPART: case BLKRRPART:
return blkdev_reread_part(bdev, mode); return blkdev_reread_part(bdev, mode);
...@@ -556,7 +556,8 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, ...@@ -556,7 +556,8 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
case BLKFRAGET: case BLKFRAGET:
if (!argp) if (!argp)
return -EINVAL; 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: case BLKGETSIZE:
size = i_size_read(bdev->bd_inode); size = i_size_read(bdev->bd_inode);
if ((size >> 9) > ~0UL) if ((size >> 9) > ~0UL)
...@@ -628,7 +629,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg) ...@@ -628,7 +629,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
if (!argp) if (!argp)
return -EINVAL; return -EINVAL;
return compat_put_long(argp, return compat_put_long(argp,
(bdev->bd_bdi->ra_pages * PAGE_SIZE) / 512); (bdev->bd_disk->bdi->ra_pages * PAGE_SIZE) / 512);
case BLKGETSIZE: case BLKGETSIZE:
size = i_size_read(bdev->bd_inode); size = i_size_read(bdev->bd_inode);
if ((size >> 9) > ~0UL) if ((size >> 9) > ~0UL)
......
...@@ -801,7 +801,6 @@ static struct inode *bdev_alloc_inode(struct super_block *sb) ...@@ -801,7 +801,6 @@ static struct inode *bdev_alloc_inode(struct super_block *sb)
if (!ei) if (!ei)
return NULL; return NULL;
memset(&ei->bdev, 0, sizeof(ei->bdev)); memset(&ei->bdev, 0, sizeof(ei->bdev));
ei->bdev.bd_bdi = &noop_backing_dev_info;
return &ei->vfs_inode; return &ei->vfs_inode;
} }
...@@ -826,16 +825,11 @@ static void init_once(void *data) ...@@ -826,16 +825,11 @@ static void init_once(void *data)
static void bdev_evict_inode(struct inode *inode) static void bdev_evict_inode(struct inode *inode)
{ {
struct block_device *bdev = &BDEV_I(inode)->bdev;
truncate_inode_pages_final(&inode->i_data); truncate_inode_pages_final(&inode->i_data);
invalidate_inode_buffers(inode); /* is it needed here? */ invalidate_inode_buffers(inode); /* is it needed here? */
clear_inode(inode); clear_inode(inode);
/* Detach inode from wb early as bdi_put() may free bdi->wb */ /* Detach inode from wb early as bdi_put() may free bdi->wb */
inode_detach_wb(inode); 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 = { static const struct super_operations bdev_sops = {
...@@ -1084,11 +1078,8 @@ static int blkdev_get_whole(struct block_device *bdev, fmode_t mode) ...@@ -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); 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)) if (test_bit(GD_NEED_PART_SCAN, &disk->state))
bdev_disk_changed(disk, false); bdev_disk_changed(disk, false);
bdev->bd_openers++; bdev->bd_openers++;
...@@ -1121,8 +1112,6 @@ static int blkdev_get_part(struct block_device *part, fmode_t mode) ...@@ -1121,8 +1112,6 @@ static int blkdev_get_part(struct block_device *part, fmode_t mode)
disk->open_partitions++; disk->open_partitions++;
set_init_blocksize(part); set_init_blocksize(part);
if (part->bd_bdi == &noop_backing_dev_info)
part->bd_bdi = bdi_get(disk->bdi);
done: done:
part->bd_openers++; part->bd_openers++;
return 0; return 0;
......
...@@ -1053,7 +1053,7 @@ nilfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1053,7 +1053,7 @@ nilfs_fill_super(struct super_block *sb, void *data, int silent)
sb->s_time_gran = 1; sb->s_time_gran = 1;
sb->s_max_links = NILFS_LINK_MAX; 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); err = load_nilfs(nilfs, sb);
if (err) if (err)
......
...@@ -1203,7 +1203,7 @@ static int set_bdev_super(struct super_block *s, void *data) ...@@ -1203,7 +1203,7 @@ static int set_bdev_super(struct super_block *s, void *data)
{ {
s->s_bdev = data; s->s_bdev = data;
s->s_dev = s->s_bdev->bd_dev; 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)) if (blk_queue_stable_writes(s->s_bdev->bd_disk->queue))
s->s_iflags |= SB_I_STABLE_WRITES; s->s_iflags |= SB_I_STABLE_WRITES;
......
...@@ -844,7 +844,7 @@ xfs_buf_readahead_map( ...@@ -844,7 +844,7 @@ xfs_buf_readahead_map(
{ {
struct xfs_buf *bp; struct xfs_buf *bp;
if (bdi_read_congested(target->bt_bdev->bd_bdi)) if (bdi_read_congested(target->bt_bdev->bd_disk->bdi))
return; return;
xfs_buf_read_map(target, map, nmaps, xfs_buf_read_map(target, map, nmaps,
......
...@@ -143,7 +143,7 @@ static inline struct backing_dev_info *inode_to_bdi(struct inode *inode) ...@@ -143,7 +143,7 @@ static inline struct backing_dev_info *inode_to_bdi(struct inode *inode)
sb = inode->i_sb; sb = inode->i_sb;
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
if (sb_is_blkdev_sb(sb)) if (sb_is_blkdev_sb(sb))
return I_BDEV(inode)->bd_bdi; return I_BDEV(inode)->bd_disk->bdi;
#endif #endif
return sb->s_bdi; return sb->s_bdi;
} }
......
...@@ -38,7 +38,6 @@ struct block_device { ...@@ -38,7 +38,6 @@ struct block_device {
u8 bd_partno; u8 bd_partno;
spinlock_t bd_size_lock; /* for bd_inode->i_size updates */ spinlock_t bd_size_lock; /* for bd_inode->i_size updates */
struct gendisk * bd_disk; struct gendisk * bd_disk;
struct backing_dev_info *bd_bdi;
/* The counter of freeze processes */ /* The counter of freeze processes */
int bd_fsfreeze_count; int bd_fsfreeze_count;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment