On 2/19/24 20:58, Miklos Szeredi wrote: > On Mon, 19 Feb 2024 at 20:55, Bernd Schubert <bernd.schubert@xxxxxxxxxxx> wrote: >> >> >> >> On 2/19/24 20: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. >> >> Why exactly bogus? >> >> reconnect_path() >> if (IS_ROOT(dentry)) >> parent = reconnect_one(mnt, dentry, nbuf); > > It's only getting this far if (dentry->d_flags & DCACHE_DISCONNECTED), > but that doesn't make sense on the root dentry. It does happen, > though, I'm just not seeing yet how. I see the BUG_ON(), but on the other the "if IS_ROOT(dentry)" condition triggers.