block: re-arrange the struct block_device fields for better layout
This moves struct device out-of-line as it's just used at open/close time, so we can keep some of the commonly used fields closer together. On a standard setup, it also reduces the size from 864 bytes to 848 bytes. Yes, struct device is a pig... Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
310e9c85c6
commit
3838c406a5
@ -40,26 +40,25 @@ struct bio_crypt_ctx;
|
||||
struct block_device {
|
||||
sector_t bd_start_sect;
|
||||
sector_t bd_nr_sectors;
|
||||
struct gendisk * bd_disk;
|
||||
struct request_queue * bd_queue;
|
||||
struct disk_stats __percpu *bd_stats;
|
||||
unsigned long bd_stamp;
|
||||
bool bd_read_only; /* read-only policy */
|
||||
u8 bd_partno;
|
||||
bool bd_write_holder;
|
||||
dev_t bd_dev;
|
||||
atomic_t bd_openers;
|
||||
spinlock_t bd_size_lock; /* for bd_inode->i_size updates */
|
||||
struct inode * bd_inode; /* will die */
|
||||
struct super_block * bd_super;
|
||||
void * bd_claiming;
|
||||
struct device bd_device;
|
||||
void * bd_holder;
|
||||
int bd_holders;
|
||||
bool bd_write_holder;
|
||||
struct kobject *bd_holder_dir;
|
||||
u8 bd_partno;
|
||||
spinlock_t bd_size_lock; /* for bd_inode->i_size updates */
|
||||
struct gendisk * bd_disk;
|
||||
struct request_queue * bd_queue;
|
||||
|
||||
/* The counter of freeze processes */
|
||||
int bd_fsfreeze_count;
|
||||
int bd_holders;
|
||||
struct kobject *bd_holder_dir;
|
||||
|
||||
/* Mutex for freeze */
|
||||
struct mutex bd_fsfreeze_mutex;
|
||||
struct super_block *bd_fsfreeze_sb;
|
||||
@ -68,6 +67,11 @@ struct block_device {
|
||||
#ifdef CONFIG_FAIL_MAKE_REQUEST
|
||||
bool bd_make_it_fail;
|
||||
#endif
|
||||
/*
|
||||
* keep this out-of-line as it's both big and not needed in the fast
|
||||
* path
|
||||
*/
|
||||
struct device bd_device;
|
||||
} __randomize_layout;
|
||||
|
||||
#define bdev_whole(_bdev) \
|
||||
|
Loading…
Reference in New Issue
Block a user