Skip to content

Commit 7c09a4e

Browse files
committed
bdev: remove bdev pointer from struct bdev_handle
We can always go directly via: * I_BDEV(bdev_file->f_inode) * I_BDEV(bdev_file->f_mapping->host) So keeping struct bdev in struct bdev_handle is redundant. Link: https://lore.kernel.org/r/20240123-vfs-bdev-file-v2-30-adbd023e19cc@kernel.org Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent a56aefc commit 7c09a4e

File tree

3 files changed

+14
-17
lines changed

3 files changed

+14
-17
lines changed

block/bdev.c

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ EXPORT_SYMBOL(I_BDEV);
5151

5252
struct block_device *file_bdev(struct file *bdev_file)
5353
{
54-
struct bdev_handle *handle = bdev_file->private_data;
55-
return handle->bdev;
54+
return I_BDEV(bdev_file->f_mapping->host);
5655
}
5756
EXPORT_SYMBOL(file_bdev);
5857

@@ -891,15 +890,14 @@ int bdev_open(struct block_device *bdev, blk_mode_t mode, void *holder,
891890

892891
if (unblock_events)
893892
disk_unblock_events(disk);
894-
handle->bdev = bdev;
895893
handle->holder = holder;
896894
handle->mode = mode;
897895

898896
bdev_file->f_flags |= O_LARGEFILE;
899897
bdev_file->f_mode |= FMODE_BUF_RASYNC | FMODE_CAN_ODIRECT;
900898
if (bdev_nowait(bdev))
901899
bdev_file->f_mode |= FMODE_NOWAIT;
902-
bdev_file->f_mapping = handle->bdev->bd_inode->i_mapping;
900+
bdev_file->f_mapping = bdev->bd_inode->i_mapping;
903901
bdev_file->f_wb_err = filemap_sample_wb_err(bdev_file->f_mapping);
904902
bdev_file->private_data = handle;
905903

@@ -985,30 +983,30 @@ struct file *bdev_file_open_by_path(const char *path, blk_mode_t mode,
985983
void *holder,
986984
const struct blk_holder_ops *hops)
987985
{
988-
struct file *bdev_file;
986+
struct file *file;
989987
dev_t dev;
990988
int error;
991989

992990
error = lookup_bdev(path, &dev);
993991
if (error)
994992
return ERR_PTR(error);
995993

996-
bdev_file = bdev_file_open_by_dev(dev, mode, holder, hops);
997-
if (!IS_ERR(bdev_file) && (mode & BLK_OPEN_WRITE)) {
998-
struct bdev_handle *handle = bdev_file->private_data;
999-
if (bdev_read_only(handle->bdev)) {
1000-
fput(bdev_file);
1001-
bdev_file = ERR_PTR(-EACCES);
994+
file = bdev_file_open_by_dev(dev, mode, holder, hops);
995+
if (!IS_ERR(file) && (mode & BLK_OPEN_WRITE)) {
996+
if (bdev_read_only(file_bdev(file))) {
997+
fput(file);
998+
file = ERR_PTR(-EACCES);
1002999
}
10031000
}
10041001

1005-
return bdev_file;
1002+
return file;
10061003
}
10071004
EXPORT_SYMBOL(bdev_file_open_by_path);
10081005

1009-
void bdev_release(struct bdev_handle *handle)
1006+
void bdev_release(struct file *bdev_file)
10101007
{
1011-
struct block_device *bdev = handle->bdev;
1008+
struct block_device *bdev = file_bdev(bdev_file);
1009+
struct bdev_handle *handle = bdev_file->private_data;
10121010
struct gendisk *disk = bdev->bd_disk;
10131011

10141012
/*

block/blk.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ struct blk_flush_queue {
2626
};
2727

2828
struct bdev_handle {
29-
struct block_device *bdev;
3029
void *holder;
3130
blk_mode_t mode;
3231
};
@@ -522,7 +521,7 @@ static inline int req_ref_read(struct request *req)
522521
return atomic_read(&req->ref);
523522
}
524523

525-
void bdev_release(struct bdev_handle *handle);
524+
void bdev_release(struct file *bdev_file);
526525
int bdev_open(struct block_device *bdev, blk_mode_t mode, void *holder,
527526
const struct blk_holder_ops *hops, struct file *bdev_file);
528527
int bdev_permission(dev_t dev, blk_mode_t mode, void *holder);

block/fops.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ static int blkdev_open(struct inode *inode, struct file *filp)
623623
static int blkdev_release(struct inode *inode, struct file *filp)
624624
{
625625
if (filp->private_data)
626-
bdev_release(filp->private_data);
626+
bdev_release(filp);
627627
return 0;
628628
}
629629

0 commit comments

Comments
 (0)