Hi Miklos, On Wed, Oct 11, 2023 at 08:27:34PM +0200, Miklos Szeredi wrote: > On Wed, 11 Oct 2023 at 18:32, Krister Johansen <kjlx@xxxxxxxxxxxxxxxxxx> wrote: > > > > On Wed, Oct 11, 2023 at 09:07:33AM +0200, Miklos Szeredi wrote: > > > On Wed, 11 Oct 2023 at 03:26, Krister Johansen <kjlx@xxxxxxxxxxxxxxxxxx> wrote: > > > > > > > I am curious what you have in mind in order to move this towards a > > > > proper fix? I shied away from the approach of stealing a nlookup from > > > > mp_fi beacuse it wasn't clear that I could always count on the nlookup > > > > in the parent staying positive. E.g. I was afraid I was either going to > > > > not have enough nlookups to move to submounts, or trigger a forget from > > > > an exiting container that leads to an EBADF from the initial mount > > > > namespace. > > > > > > One idea is to transfer the nlookup to a separately refcounted object > > > that is referenced from mp_fi as well as all the submounts. > > > > That seems possible. Would the idea be to move all tracking of nlookup > > to a separate refcounted object for the particular nodeid, or just do > > this for the first lookup of a submount? > > Just for submounts. And yes, it should work if the count from the > first lookup is transferred to this object (fuse_iget()) and > subsequent counts (fuse_dentry_revalidate()) go to the mountpoint > inode as usual. This will result in more than one FORGET in most > cases, but that's okay. > > > Would you like me to put together a v3 that heads this direction? > > That would be great, thanks. Thanks for the pointers here. I started over and followed the approach that you suggested. It condensed to a single patch, so I'll send it as a follow-up to this thread. -K