On Thu, 13 Jun 2024 at 11:13, Mateusz Guzik <mjguzik@xxxxxxxxx> wrote: > > I would assume the rule is pretty much well known and instead an > indicator where is what (as added in my comments) would be welcome. Oh, the rule is well-known, but I think what is worth pointing out is the different classes of fields, and the name[] field in particular. This ordering was last really updated back in 2011, by commit 44a7d7a878c9 ("fs: cache optimise dentry and inode for rcu-walk"). And it was actually somewhat intentional at the time. Quoting from that commit: We also fit in 8 bytes of inline name in the first 64 bytes, so for short names, only 64 bytes needs to be touched to perform the lookup. We should get rid of the hash->prev pointer from the first 64 bytes, and fit 16 bytes of name in there, which will take care of 81% rather than 32% of the kernel tree. but what has actually really changed - and that I didn't even realize until I now did a 'pahole' on it, was that this was all COMPLETELY broken by seqcount_spinlock_t d_seq; because seqcount_spinlock_t has been entirely broken and went from being 4 bytes back when, to now being 64 bytes. Crazy crazy. How did that happen? Linus