@@ -43,6 +43,11 @@ static inline struct bdev_inode *BDEV_I(struct inode *inode)
43
43
return container_of (inode , struct bdev_inode , vfs_inode );
44
44
}
45
45
46
+ static inline struct inode * BD_INODE (struct block_device * bdev )
47
+ {
48
+ return & container_of (bdev , struct bdev_inode , bdev )-> vfs_inode ;
49
+ }
50
+
46
51
struct block_device * I_BDEV (struct inode * inode )
47
52
{
48
53
return & BDEV_I (inode )-> bdev ;
@@ -57,7 +62,7 @@ EXPORT_SYMBOL(file_bdev);
57
62
58
63
static void bdev_write_inode (struct block_device * bdev )
59
64
{
60
- struct inode * inode = bdev -> bd_inode ;
65
+ struct inode * inode = BD_INODE ( bdev ) ;
61
66
int ret ;
62
67
63
68
spin_lock (& inode -> i_lock );
@@ -134,14 +139,14 @@ int truncate_bdev_range(struct block_device *bdev, blk_mode_t mode,
134
139
static void set_init_blocksize (struct block_device * bdev )
135
140
{
136
141
unsigned int bsize = bdev_logical_block_size (bdev );
137
- loff_t size = i_size_read (bdev -> bd_inode );
142
+ loff_t size = i_size_read (BD_INODE ( bdev ) );
138
143
139
144
while (bsize < PAGE_SIZE ) {
140
145
if (size & bsize )
141
146
break ;
142
147
bsize <<= 1 ;
143
148
}
144
- bdev -> bd_inode -> i_blkbits = blksize_bits (bsize );
149
+ BD_INODE ( bdev ) -> i_blkbits = blksize_bits (bsize );
145
150
}
146
151
147
152
int set_blocksize (struct file * file , int size )
@@ -437,29 +442,30 @@ struct block_device *bdev_alloc(struct gendisk *disk, u8 partno)
437
442
void bdev_set_nr_sectors (struct block_device * bdev , sector_t sectors )
438
443
{
439
444
spin_lock (& bdev -> bd_size_lock );
440
- i_size_write (bdev -> bd_inode , (loff_t )sectors << SECTOR_SHIFT );
445
+ i_size_write (BD_INODE ( bdev ) , (loff_t )sectors << SECTOR_SHIFT );
441
446
bdev -> bd_nr_sectors = sectors ;
442
447
spin_unlock (& bdev -> bd_size_lock );
443
448
}
444
449
445
450
void bdev_add (struct block_device * bdev , dev_t dev )
446
451
{
452
+ struct inode * inode = BD_INODE (bdev );
447
453
if (bdev_stable_writes (bdev ))
448
454
mapping_set_stable_writes (bdev -> bd_mapping );
449
455
bdev -> bd_dev = dev ;
450
- bdev -> bd_inode -> i_rdev = dev ;
451
- bdev -> bd_inode -> i_ino = dev ;
452
- insert_inode_hash (bdev -> bd_inode );
456
+ inode -> i_rdev = dev ;
457
+ inode -> i_ino = dev ;
458
+ insert_inode_hash (inode );
453
459
}
454
460
455
461
void bdev_unhash (struct block_device * bdev )
456
462
{
457
- remove_inode_hash (bdev -> bd_inode );
463
+ remove_inode_hash (BD_INODE ( bdev ) );
458
464
}
459
465
460
466
void bdev_drop (struct block_device * bdev )
461
467
{
462
- iput (bdev -> bd_inode );
468
+ iput (BD_INODE ( bdev ) );
463
469
}
464
470
465
471
long nr_blockdev_pages (void )
@@ -987,13 +993,13 @@ struct file *bdev_file_open_by_dev(dev_t dev, blk_mode_t mode, void *holder,
987
993
return ERR_PTR (- ENXIO );
988
994
989
995
flags = blk_to_file_flags (mode );
990
- bdev_file = alloc_file_pseudo_noaccount (bdev -> bd_inode ,
996
+ bdev_file = alloc_file_pseudo_noaccount (BD_INODE ( bdev ) ,
991
997
blockdev_mnt , "" , flags | O_LARGEFILE , & def_blk_fops );
992
998
if (IS_ERR (bdev_file )) {
993
999
blkdev_put_no_open (bdev );
994
1000
return bdev_file ;
995
1001
}
996
- ihold (bdev -> bd_inode );
1002
+ ihold (BD_INODE ( bdev ) );
997
1003
998
1004
ret = bdev_open (bdev , mode , holder , hops , bdev_file );
999
1005
if (ret ) {
@@ -1270,13 +1276,13 @@ void bdev_statx_dioalign(struct inode *inode, struct kstat *stat)
1270
1276
1271
1277
bool disk_live (struct gendisk * disk )
1272
1278
{
1273
- return !inode_unhashed (disk -> part0 -> bd_inode );
1279
+ return !inode_unhashed (BD_INODE ( disk -> part0 ) );
1274
1280
}
1275
1281
EXPORT_SYMBOL_GPL (disk_live );
1276
1282
1277
1283
unsigned int block_size (struct block_device * bdev )
1278
1284
{
1279
- return 1 << bdev -> bd_inode -> i_blkbits ;
1285
+ return 1 << BD_INODE ( bdev ) -> i_blkbits ;
1280
1286
}
1281
1287
EXPORT_SYMBOL_GPL (block_size );
1282
1288
0 commit comments