On 2/19/24 13:38, Miklos Szeredi wrote: > On Mon, 19 Feb 2024 at 20:05, Antonio SJ Musumeci <trapexit@xxxxxxxxxx> wrote: > >> This is what I see from the kernel: >> >> lookup(nodeid=3, name=.); >> lookup(nodeid=3, name=..); >> lookup(nodeid=1, name=dir2); >> lookup(nodeid=1, name=..); >> forget(nodeid=3); >> forget(nodeid=1); > > This is really weird. It's a kernel bug, no arguments, because kernel > should never send a forget against the root inode. But that > lookup(nodeid=1, name=..); already looks bogus. > > Will try to untangle this by code review, but instructions to > reproduce could be a big help. > > Thanks, > Miklos Thank you. I'll try to build something bespoke against current libfuse. That forget(nodeid=1) is coming in after my code detects that lookup(nodeid=1, name="..") and returns -ENOENT. Which in a way makes sense. Though it seems to happen no matter what I return. Returning the same as lookup(nodeid=1, name=".") results in the same behavior. I've not tried creating a fake node with a new nodeid/generation though.