On Wed, Sep 25, 2019 at 3:22 PM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > On Wed, Sep 25, 2019 at 02:59:47PM +0300, Amir Goldstein wrote: > > On Mon, Sep 23, 2019 at 5:34 PM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > > > > > FWIW, #next.dcache has the straight conversion to hlist. > > > > Note that this: > > @@ -108,8 +108,8 @@ struct dentry { > > struct list_head d_lru; /* LRU list */ > > wait_queue_head_t *d_wait; /* in-lookup ones only */ > > }; > > - struct list_head d_child; /* child of parent list */ > > - struct list_head d_subdirs; /* our children */ > > + struct hlist_node d_sibling; /* child of parent list */ > > + struct hlist_head d_children; /* our children */ > > > > Changes the 'standard' struct dentry size from 192 to 184. > > > > Does that matter for cache line alignment? > > > > Should struct dentry be ____cacheline_aligned? > > *shrug* > > DNAME_INLINE_LEN would need to be adjusted; OK. But increasing DNAME_INLINE_LEN will move d_fsdata across cache line. Not sure if that matters, but it seems to be documented as part of the group of struct members touched by Ref lookup. It was intentionally moved by commit 44a7d7a878c9 fs: cache optimise dentry and inode for rcu-walk Anyway, if you end up adding another hlist_head that won't be a problem. Thanks, Amir.