All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luis Henriques <luis@igalia.com>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Bernd Schubert <bschubert@ddn.com>,
	 Miklos Szeredi <miklos@szeredi.hu>,
	"Darrick J. Wong" <djwong@kernel.org>,
	 Kevin Chen <kchen@ddn.com>,
	Horst Birthelmer <hbirthelmer@ddn.com>,
	 "linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	 Matt Harvey <mharvey@jumptrading.com>,
	"kernel-dev@igalia.com" <kernel-dev@igalia.com>
Subject: Re: [RFC PATCH v2 3/6] fuse: initial infrastructure for FUSE_LOOKUP_HANDLE support
Date: Tue, 16 Dec 2025 10:36:10 +0000	[thread overview]
Message-ID: <87wm2md885.fsf@wotan.olymp> (raw)
In-Reply-To: <CAOQ4uxh-+S_KMSjH6CYRGa--aLfQOeqCTt=22DGSRQUJTJ2bPw@mail.gmail.com> (Amir Goldstein's message of "Mon, 15 Dec 2025 19:09:41 +0100")

On Mon, Dec 15 2025, Amir Goldstein wrote:

> On Mon, Dec 15, 2025 at 6:11 PM Bernd Schubert <bschubert@ddn.com> wrote:
>>
>> On 12/15/25 18:06, Amir Goldstein wrote:
>> > On Mon, Dec 15, 2025 at 2:36 PM Bernd Schubert <bschubert@ddn.com> wrote:
>> >>
>> >> Hi Luis,
>> >>
>> >> I'm really sorry for late review.
>> >>
>> >> On 12/12/25 19:12, Luis Henriques wrote:
>> >>> This patch adds the initial infrastructure to implement the LOOKUP_HANDLE
>> >>> operation.  It simply defines the new operation and the extra fuse_init_out
>> >>> field to set the maximum handle size.
>> >>>
>> >>> Signed-off-by: Luis Henriques <luis@igalia.com>
>> >>> ---
>> >>>    fs/fuse/fuse_i.h          | 4 ++++
>> >>>    fs/fuse/inode.c           | 9 ++++++++-
>> >>>    include/uapi/linux/fuse.h | 8 +++++++-
>> >>>    3 files changed, 19 insertions(+), 2 deletions(-)
>> >>>
>> >>> diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
>> >>> index 1792ee6f5da6..fad05fae7e54 100644
>> >>> --- a/fs/fuse/fuse_i.h
>> >>> +++ b/fs/fuse/fuse_i.h
>> >>> @@ -909,6 +909,10 @@ struct fuse_conn {
>> >>>        /* Is synchronous FUSE_INIT allowed? */
>> >>>        unsigned int sync_init:1;
>> >>>
>> >>> +     /** Is LOOKUP_HANDLE implemented by fs? */
>> >>> +     unsigned int lookup_handle:1;
>> >>> +     unsigned int max_handle_sz;
>> >>> +
>
> The bitwise section better be clearly separated from the non bitwise section,
> but as I wrote, the bitwise one is not needed anyway.
>
>> >>>        /* Use io_uring for communication */
>> >>>        unsigned int io_uring;
>> >>>
>> >>> diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
>> >>> index ef63300c634f..bc84e7ed1e3d 100644
>> >>> --- a/fs/fuse/inode.c
>> >>> +++ b/fs/fuse/inode.c
>> >>> @@ -1465,6 +1465,13 @@ static void process_init_reply(struct fuse_mount *fm, struct fuse_args *args,
>> >>>
>> >>>                        if (flags & FUSE_REQUEST_TIMEOUT)
>> >>>                                timeout = arg->request_timeout;
>> >>> +
>> >>> +                     if ((flags & FUSE_HAS_LOOKUP_HANDLE) &&
>> >>> +                         (arg->max_handle_sz > 0) &&
>> >>> +                         (arg->max_handle_sz <= FUSE_MAX_HANDLE_SZ)) {
>> >>> +                             fc->lookup_handle = 1;
>> >>> +                             fc->max_handle_sz = arg->max_handle_sz;
>> >>
>> >> I don't have a strong opinion on it, maybe
>> >>
>> >> if (flags & FUSE_HAS_LOOKUP_HANDLE) {
>> >>          if (!arg->max_handle_sz || arg->max_handle_sz > FUSE_MAX_HANDLE_SZ) {
>> >>                  pr_info_ratelimited("Invalid fuse handle size %d\n, arg->max_handle_sz)
>> >>          } else {
>> >>                  fc->lookup_handle = 1;
>> >>                  fc->max_handle_sz = arg->max_handle_sz;

Right, having some warning here also makes sense.

>> >
>> > Why do we need both?
>> > This seems redundant.
>> > fc->max_handle_sz != 0 is equivalent to fc->lookup_handle
>> > isnt it?
>>
>> I'm personally always worried that some fuse server implementations just
>> don't zero the entire buffer. I.e. areas they don't know about.
>> If all servers are guaranteed to do that the flag would not be needed.
>>
>
> I did not mean that we should not use the flag FUSE_HAS_LOOKUP_HANDLE
> we should definitely use it, but why do we need both
> bool fc->lookup_handle and unsigned fc->max_handle_sz in fuse_conn?
> The first one seems redundant.

OK, I'll drop the ->lookup_handle.  At some point it seemed to make sense
to have both, but it doesn't anymore (maybe I had max_handle_sz stored
somewhere else, not sure).  Thank you for your comments.

Cheers,
-- 
Luís

  parent reply	other threads:[~2025-12-16 10:36 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-12 18:12 [RFC PATCH v2 0/6] fuse: LOOKUP_HANDLE operation Luis Henriques
2025-12-12 18:12 ` [RFC PATCH v2 1/6] fuse: store index of the variable length argument Luis Henriques
2025-12-12 18:12 ` [RFC PATCH v2 2/6] fuse: move fuse_entry_out structs out of the stack Luis Henriques
2025-12-15 14:03   ` Bernd Schubert
2025-12-16 10:30     ` Luis Henriques
2025-12-12 18:12 ` [RFC PATCH v2 3/6] fuse: initial infrastructure for FUSE_LOOKUP_HANDLE support Luis Henriques
2025-12-15 13:36   ` Bernd Schubert
2025-12-15 17:06     ` Amir Goldstein
2025-12-15 17:11       ` Bernd Schubert
2025-12-15 18:09         ` Amir Goldstein
2025-12-15 18:23           ` Bernd Schubert
2025-12-16 10:36           ` Luis Henriques [this message]
2025-12-16 10:19   ` Miklos Szeredi
2025-12-16 11:33     ` Luis Henriques
2025-12-16 11:46       ` Miklos Szeredi
2025-12-16 12:02         ` Luis Henriques
2025-12-12 18:12 ` [RFC PATCH v2 4/6] fuse: implementation of the FUSE_LOOKUP_HANDLE operation Luis Henriques
2025-12-15 17:39   ` Bernd Schubert
2025-12-16 11:48     ` Luis Henriques
2025-12-17 10:18       ` Amir Goldstein
2025-12-17 14:45         ` Luis Henriques
2025-12-17 15:02       ` Bernd Schubert
2025-12-17 16:53         ` Luis Henriques
2025-12-16  8:49   ` Joanne Koong
2025-12-16  8:54     ` Bernd Schubert
2025-12-17  0:32       ` Joanne Koong
2025-12-17  1:00         ` Darrick J. Wong
2025-12-17  2:48           ` Joanne Koong
2025-12-17  9:38             ` Luis Henriques
2025-12-17 10:08               ` Miklos Szeredi
2025-12-17 16:17                 ` Luis Henriques
2025-12-16 10:39   ` Miklos Szeredi
2025-12-16 10:51     ` Amir Goldstein
2025-12-16 11:07       ` Miklos Szeredi
2026-01-09 11:57     ` Luis Henriques
2026-01-09 12:38       ` Miklos Szeredi
2026-01-09 14:45         ` Luis Henriques
2026-01-09 14:56           ` Horst Birthelmer
2026-01-09 17:07             ` Luis Henriques
2026-01-12  7:43               ` Horst Birthelmer
2026-01-09 15:20           ` Miklos Szeredi
2026-01-09 15:03         ` Amir Goldstein
2026-01-09 15:37           ` Miklos Szeredi
2026-01-09 15:56             ` Bernd Schubert
2026-01-09 16:28               ` Miklos Szeredi
2026-01-09 17:16                 ` Luis Henriques
2026-01-09 18:29               ` Amir Goldstein
2026-01-09 19:01                 ` Miklos Szeredi
2026-01-09 19:28                   ` Amir Goldstein
2026-01-09 19:12                 ` Bernd Schubert
2026-01-09 19:55                   ` Horst Birthelmer
2026-01-21 17:56                     ` Luis Henriques
2026-01-21 18:16                       ` Horst Birthelmer
2026-01-21 18:28                         ` Bernd Schubert
2026-01-21 18:36                           ` Horst Birthelmer
2026-01-21 18:49                             ` Bernd Schubert
2026-01-21 19:00                               ` Horst Birthelmer
2026-01-21 19:03                                 ` Bernd Schubert
2026-01-21 19:12                                   ` Horst Birthelmer
2026-01-22  9:52                                     ` Luis Henriques
2026-01-22 10:20                                       ` Horst Birthelmer
2026-01-22 10:35                                         ` Bernd Schubert
2026-01-22 10:53                                         ` Luis Henriques
2026-01-22 10:59                                           ` Horst Birthelmer
2026-01-22 11:25                                             ` Luis Henriques
2026-01-22 11:32                                               ` Bernd Schubert
2026-01-22 12:34                                               ` Horst Birthelmer
2025-12-12 18:12 ` [RFC PATCH v2 5/6] fuse: factor out NFS export related code Luis Henriques
2025-12-14 15:13   ` Amir Goldstein
2025-12-15 12:05     ` Luis Henriques
2025-12-12 18:12 ` [RFC PATCH v2 6/6] fuse: implementation of export_operations with FUSE_LOOKUP_HANDLE Luis Henriques
2025-12-16 10:58   ` Miklos Szeredi
2025-12-16 17:06     ` Luis Henriques
2025-12-16 20:12       ` Horst Birthelmer
2025-12-17 17:02         ` Luis Henriques
2025-12-17 18:02           ` Horst Birthelmer
2025-12-16 11:01   ` Amir Goldstein
2025-12-16 17:26     ` Luis Henriques
2025-12-14 17:02 ` [RFC PATCH v2 0/6] fuse: LOOKUP_HANDLE operation Askar Safin
2025-12-15 12:08   ` Luis Henriques
2025-12-16  0:33     ` Askar Safin
2025-12-16 17:36       ` Luis Henriques
2025-12-16 18:49       ` Bernd Schubert
2025-12-16 22:45         ` Askar Safin
2025-12-25  7:42         ` Askar Safin
2026-01-04 22:38         ` Askar Safin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wm2md885.fsf@wotan.olymp \
    --to=luis@igalia.com \
    --cc=amir73il@gmail.com \
    --cc=bschubert@ddn.com \
    --cc=djwong@kernel.org \
    --cc=hbirthelmer@ddn.com \
    --cc=kchen@ddn.com \
    --cc=kernel-dev@igalia.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mharvey@jumptrading.com \
    --cc=miklos@szeredi.hu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.