On Mon, 24 Feb 2025 at 02:06, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > PS: turns out that set_default_d_op() is slightly more interesting > than I expected - fuse has separate dentry_operations for its > root dentry. I don't see the point, TBH - the only difference is > that root one lacks > * ->d_delete() (never even called for root dentry; it's > only called if d_unhashed() is false) > * ->d_revalidate() (never called for root) > * ->d_automount() (not even looked at unless you have > S_AUTOMOUNT set on the inode). > What's wrong with using fuse_dentry_operations for root dentry? > Am I missing something subtle here? Miklos? Looks like a historical accident: - initial version only had .d_revalidate and only set d_op in .loookup. - then it grew .d_init/.d_release - then, as a bugfix, the separate fuse_root_dentry_operations was added Will fix. Thanks, Miklos