Re: [resend PATCH v2 2/2] fuse: ensure that submounts lookup their parent

From: Krister Johansen
Date: Tue Oct 17 2023 - 21:34:06 EST


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