[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87tswuq1z2.fsf@wotan.olymp>
Date: Fri, 09 Jan 2026 14:45:21 +0000
From: Luis Henriques <luis@...lia.com>
To: Miklos Szeredi <miklos@...redi.hu>
Cc: Amir Goldstein <amir73il@...il.com>, "Darrick J. Wong"
<djwong@...nel.org>, Bernd Schubert <bschubert@....com>, Kevin Chen
<kchen@....com>, Horst Birthelmer <hbirthelmer@....com>,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org, Matt
Harvey <mharvey@...ptrading.com>, kernel-dev@...lia.com
Subject: Re: [RFC PATCH v2 4/6] fuse: implementation of the
FUSE_LOOKUP_HANDLE operation
On Fri, Jan 09 2026, Miklos Szeredi wrote:
> On Fri, 9 Jan 2026 at 12:57, Luis Henriques <luis@...lia.com> 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.
OK, interesting idea. So, in that case we would have:
struct fuse_entry_handle_out {
uint64_t nodeid;
uint64_t generation;
uint64_t entry_valid;
struct fuse_file_handle fh;
}
I'll then need to have a look at the compound requests closely. (I had
previously skimmed through the patches that add open+getattr but didn't
gone too deep into it.)
>> 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.
Hmm... I _think_ I had it right in my head, but totally messed up my text.
English is hard. What I meant was that args->ext_idx would be set to the
in_args[] index that would describe the extension (for the lookup
operation, that would be '3', not '0' as I mentioned above).
And then the extension header would be created similarly to what's being
done for FUSE_EXT_GROUPS, using the same helper extend_arg(). That way, I
think we would have: headers - payload - extensions.
>> (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.
Yes, of course. My English was totally messed-up. And I meant
'fuse_file_handle', not 'fuse_entry_handle_out'.
Cheer,
--
Luís
Powered by blists - more mailing lists