@@ -51,8 +51,7 @@ EXPORT_SYMBOL(I_BDEV);
51
51
52
52
struct block_device * file_bdev (struct file * bdev_file )
53
53
{
54
- struct bdev_handle * handle = bdev_file -> private_data ;
55
- return handle -> bdev ;
54
+ return I_BDEV (bdev_file -> f_mapping -> host );
56
55
}
57
56
EXPORT_SYMBOL (file_bdev );
58
57
@@ -891,15 +890,14 @@ int bdev_open(struct block_device *bdev, blk_mode_t mode, void *holder,
891
890
892
891
if (unblock_events )
893
892
disk_unblock_events (disk );
894
- handle -> bdev = bdev ;
895
893
handle -> holder = holder ;
896
894
handle -> mode = mode ;
897
895
898
896
bdev_file -> f_flags |= O_LARGEFILE ;
899
897
bdev_file -> f_mode |= FMODE_BUF_RASYNC | FMODE_CAN_ODIRECT ;
900
898
if (bdev_nowait (bdev ))
901
899
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 ;
903
901
bdev_file -> f_wb_err = filemap_sample_wb_err (bdev_file -> f_mapping );
904
902
bdev_file -> private_data = handle ;
905
903
@@ -985,30 +983,30 @@ struct file *bdev_file_open_by_path(const char *path, blk_mode_t mode,
985
983
void * holder ,
986
984
const struct blk_holder_ops * hops )
987
985
{
988
- struct file * bdev_file ;
986
+ struct file * file ;
989
987
dev_t dev ;
990
988
int error ;
991
989
992
990
error = lookup_bdev (path , & dev );
993
991
if (error )
994
992
return ERR_PTR (error );
995
993
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 );
1002
999
}
1003
1000
}
1004
1001
1005
- return bdev_file ;
1002
+ return file ;
1006
1003
}
1007
1004
EXPORT_SYMBOL (bdev_file_open_by_path );
1008
1005
1009
- void bdev_release (struct bdev_handle * handle )
1006
+ void bdev_release (struct file * bdev_file )
1010
1007
{
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 ;
1012
1010
struct gendisk * disk = bdev -> bd_disk ;
1013
1011
1014
1012
/*
0 commit comments