Commit a55d1cbd authored by Christian Brauner's avatar Christian Brauner

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
1da177e4 ("Linux-2.6.12-rc2").

Link: https://lore.kernel.org/r/20240823-luftdicht-berappen-d69a2166a0db@braunerReviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Reviewed-by: default avatarJens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 1934b212
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment