mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
fs: switch f_iocb_flags and f_ra
Now that we shrank struct file by 24 bytes we still have a 4 byte hole.
If we move struct file_ra_state into the union and f_iocb_flags out of
the union we close that whole and bring down struct file to 192 bytes.
Which means struct file is 3 cachelines and we managed to shrink it by
40 bytes this cycle.
I've tried to audit all codepaths that use f_ra and none of them seem to
rely on it in file->f_op->release() and never have since commit
1da177e4c3 ("Linux-2.6.12-rc2").
Link: https://lore.kernel.org/r/20240823-luftdicht-berappen-d69a2166a0db@brauner
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
1934b21261
commit
a55d1cbd17
|
|
@ -999,9 +999,9 @@ struct file {
|
|||
struct callback_head f_task_work;
|
||||
/* fput() must use workqueue (most kernel threads). */
|
||||
struct llist_node f_llist;
|
||||
unsigned int f_iocb_flags;
|
||||
/* Invalid after last fput(). */
|
||||
struct file_ra_state f_ra;
|
||||
};
|
||||
|
||||
/*
|
||||
* Protects f_ep, f_flags.
|
||||
* Must not be taken from IRQ context.
|
||||
|
|
@ -1012,9 +1012,9 @@ struct file {
|
|||
struct mutex f_pos_lock;
|
||||
loff_t f_pos;
|
||||
unsigned int f_flags;
|
||||
unsigned int f_iocb_flags;
|
||||
struct fown_struct *f_owner;
|
||||
const struct cred *f_cred;
|
||||
struct file_ra_state f_ra;
|
||||
struct path f_path;
|
||||
struct inode *f_inode; /* cached value */
|
||||
const struct file_operations *f_op;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user