Re: [PATCH] fuse: fix conversion of fuse_reverse_inval_entry() to start_removing()

Christian Brauner <[email protected]>
Newsgroups org.kernel.vger.ecryptfs,dev.linux.lists.netfs,org.kernel.vger.linux-cifs,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-security-module,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs,org.kernel.vger.selinux
Message-ID <20251215-immens-hurtig-1f0b23aa4bf3@brauner>
On Fri, Dec 05, 2025 at 02:09:41PM +0100, Christian Brauner wrote:
> On Mon, Dec 01, 2025 at 03:03:08PM +0100, Miklos Szeredi wrote:
> > On Mon, 1 Dec 2025 at 09:33, Al Viro <[email protected]> wrote:
> > >
> > > On Mon, Dec 01, 2025 at 09:22:54AM +0100, Amir Goldstein wrote:
> > >
> > > > I don't think there is a point in optimizing parallel dir operations
> > > > with FUSE server cache invalidation, but maybe I am missing
> > > > something.
> > >
> > > The interesting part is the expected semantics of operation;
> > > d_invalidate() side definitely doesn't need any of that cruft,
> > > but I would really like to understand what that function
> > > is supposed to do.
> > >
> > > Miklos, could you post a brain dump on that?
> > 
> > This function is supposed to invalidate a dentry due to remote changes
> > (FUSE_NOTIFY_INVAL_ENTRY).  Originally it was supplied a parent ID and
> > a name and called d_invalidate() on the looked up dentry.
> > 
> > Then it grew a variant (FUSE_NOTIFY_DELETE) that was also supplied a
> > child ID, which was matched against the looked up inode.  This was
> > commit 451d0f599934 ("FUSE: Notifying the kernel of deletion."),
> > Apparently this worked around the fact that at that time
> > d_invalidate() returned -EBUSY if the target was still in use and
> > didn't unhash the dentry in that case.
> > 
> > That was later changed by commit bafc9b754f75 ("vfs: More precise
> > tests in d_invalidate") to unconditionally unhash the target, which
> > effectively made FUSE_NOTIFY_INVAL_ENTRY and FUSE_NOTIFY_DELETE
> > equivalent and the code in question unnecessary.
> > 
> > For the future, we could also introduce FUSE_NOTIFY_MOVE, that would
> > differentiate between a delete and a move, while
> > FUSE_NOTIFY_INVAL_ENTRY would continue to be the common (deleted or
> > moved) notification.
> > 
> > Attaching untested patch to remove this cruft.
> 
> Should we revert the fuse specific bits of c9ba789dad15 ("VFS: introduce
> start_creating_noperm() and start_removing_noperm()") and then apply
> your changes afterwards?

I think we shouldn't have this sitting around indefinitely so it would
be good if we'd get a nod that this is ok or someone sending revert +
fix that I can pick up. :)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.