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. :)