block: remove the bd_bdi in struct block_device
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>
This commit is contained in:
parent
edb0872f44
commit
a11d7fc2d0
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue