summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2024-01-10 08:28:16 -1000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-01-30 15:53:59 -0800
commit1c9f2c7606afe149800986182638f636646dd824 (patch)
tree9041abf8401940f3922ec9d5dfdbbcccdcaf0f0d
parent41bccc98fb7931d63d03f326a746ac4d429c1dd3 (diff)
downloadlinux-stable-1c9f2c7606afe149800986182638f636646dd824.tar.gz
linux-stable-1c9f2c7606afe149800986182638f636646dd824.tar.bz2
linux-stable-1c9f2c7606afe149800986182638f636646dd824.zip
kernfs: Rearrange kernfs_node fields to reduce its size on 64bit
Moving .flags and .mode right below .hash makes kernfs_node smaller by 8 bytes on 64bit. To avoid creating a hole from 8 bytes alignment on 32bit archs, .priv is moved below so that there are two 32bit pointers after the 64bit .id field. v2: Updated to avoid size increase on 32bit noticed by Geert. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Link: https://lore.kernel.org/r/ZZ7hwA18nfmFjYpj@slm.duckdns.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--include/linux/kernfs.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
index 99aaa050ccb7..82e1ce79a70c 100644
--- a/include/linux/kernfs.h
+++ b/include/linux/kernfs.h
@@ -206,22 +206,22 @@ struct kernfs_node {
const void *ns; /* namespace tag */
unsigned int hash; /* ns + name hash */
+ unsigned short flags;
+ umode_t mode;
+
union {
struct kernfs_elem_dir dir;
struct kernfs_elem_symlink symlink;
struct kernfs_elem_attr attr;
};
- void *priv;
-
/*
* 64bit unique ID. On 64bit ino setups, id is the ino. On 32bit,
* the low 32bits are ino and upper generation.
*/
u64 id;
- unsigned short flags;
- umode_t mode;
+ void *priv;
struct kernfs_iattrs *iattr;
};