Re: [RFC PATCH v2 4/6] fuse: implementation of the FUSE_LOOKUP_HANDLE operation
From: Amir Goldstein
Date: Fri Jan 09 2026 - 10:05:07 EST
On Fri, Jan 9, 2026 at 1:38 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>
> On Fri, 9 Jan 2026 at 12:57, Luis Henriques <luis@xxxxxxxxxx> wrote:
>
> > I've been trying to wrap my head around all the suggested changes, and
> > experimenting with a few options. Since there are some major things that
> > need to be modified, I'd like to confirm that I got them right:
> >
> > 1. In the old FUSE_LOOKUP, the args->in_args[0] will continue to use the
> > struct fuse_entry_out, which won't be changed and will continue to have
> > a static size.
>
> Yes.
>
> > 2. FUSE_LOOKUP_HANDLE will add a new out_arg, which will be dynamically
> > allocated (using your suggestion: 'args->out_var_alloc'). This will be
> > a new struct fuse_entry_handle_out, similar to fuse_entry_out, but
> > replacing the struct fuse_attr by a struct fuse_statx, and adding the
> > file handle struct.
>
> Another idea: let's simplify the interface by removing the attributes
> from the lookup reply entirely. To get back the previous
> functionality, compound requests can be used: LOOKUP_HANDLE + STATX.
What about FUSE_CREATE? FUSE_TMPFILE?
and more importantly READDIRPLUS dirents?
How do you envision the protocol extension for those if fuse_entry_handle
does not contain fuse_statx?
Thanks,
Amir.
>
> > 3. FUSE_LOOKUP_HANDLE will use the args->in_args[0] as an extension header
>
> No, extensions go after the regular request data: headers, payload,
> extension(s).
>
> We could think about changing that for uring, where it would make
> sense to put the extensions after the regular headers, but currently
> it doesn't work that way and goes into the payload section.
>
> In any case LOOKUP_HANDLE should follow the existing practice.
>
> > (FUSE_EXT_HANDLE). Note that other operations (e.g. those in function
> > create_new_entry()) will actually need to *add* an extra extension
> > header, as extension headers are already being used there.
>
> Right.
>
> > This extension header will use the new struct fuse_entry_handle_out.
>
> Why _out?
>
> It should just be a struct fuse_ext_header followed by a struct
> fuse_file_handle.
>
> Thanks,
> Miklos