diff options
author | Tejun Heo <tj@kernel.org> | 2024-01-10 08:28:16 -1000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-01-30 15:53:59 -0800 |
commit | 1c9f2c7606afe149800986182638f636646dd824 (patch) | |
tree | 9041abf8401940f3922ec9d5dfdbbcccdcaf0f0d | |
parent | 41bccc98fb7931d63d03f326a746ac4d429c1dd3 (diff) | |
download | linux-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.h | 8 |
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; }; |