From: Bernd Schubert <bernd@bsbernd.com>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
Miklos Szeredi <mszeredi@redhat.com>,
fuse-devel@lists.linux.dev, linux-fsdevel@vger.kernel.org,
Horst Birthelmer <horst@birthelmer.de>,
"Darrick J. Wong" <djwong@kernel.org>
Subject: Re: [PATCH] fuse: add fusex filesystem
Date: Tue, 12 May 2026 23:26:10 +0200 [thread overview]
Message-ID: <a1092e7a-e24a-4262-8e54-449bd0e26c8e@bsbernd.com> (raw)
In-Reply-To: <CAOQ4uxj7tZ1gcfRDPTiwgGgDR8DBXpL++=go+AeMOFvUBEjLZA@mail.gmail.com>
On 5/12/26 23:07, Amir Goldstein wrote:
> On Tue, May 12, 2026 at 3:46 PM Bernd Schubert <bernd@bsbernd.com> wrote:
>>
>>
>>
>> On 5/12/26 15:08, Amir Goldstein wrote:
>>> On Tue, May 12, 2026 at 10:18 AM Miklos Szeredi <miklos@szeredi.hu> wrote:
>>>>
>>>>> I see no reason for fusex to not support lookup by ".", which is
>>>>> anyway needed for "reconnect", so a fresh FUSEX_NFS_EXPORT opt-in
>>>>> for "re-export to NFS" may make more sense.
>>>>
>>>> Why add reconnect? If server supports persistent file handles, and
>>>> all req's get the file handle, then no state (nodeid) needs to be
>>>> stored by the server.
>>>>
>>>
>>> Yes, we are saying the same thing.
>>> What I am saying is that legacy fuse has FUSE_EXPORT_SUPPORT
>>> which means server supports lookup of "." which libfuse always enabled
>>> and then we added FUSE_NO_EXPORT_SUPPORT to opt-out of nfs export.
>>>
>>> I am saying that in FUSEX, lookup "." support is implied.
>>> And that nfs export should always be opt-in (FUSEX_NFS_EXPORT).
>>
>> I'm confused here, why do we need lookup of "." without NFS export? And
>> which file system actually supports lookup of "."?
>> Shouldn't all that be scratched in favor of LOOKUP_HANDLE?
>
> Yes. This is exactly what I meant by lookup "." support is implied.
>
> AFAICT, libfuse sets CAP_EXPORT_SUPPORT unconditionally:
>
> fuse_set_feature_flag(conn, FUSE_CAP_EXPORT_SUPPORT);
>
> ALL of the high level fuse fs are allowed to be exported by NFS,
> which is often a very bad idea.
I think that predates me and is in the came category as
FUSE_CAP_AUTO_INVAL_DATA. Initially I thought it gets really complicated
and I need to add another ABI/API compat layer to encode into struct
fuse_session which FUSE_USE_VERSION the application uses, but then in
the discussion with Darrick we got the idea to put it into the existing
padding
fuse_session_new_fn(struct fuse_args *args, const struct
fuse_lowlevel_ops *op,
size_t op_size, void *userdata)
{
struct libfuse_version version = {
.major = FUSE_MAJOR_VERSION,
.minor = FUSE_MINOR_VERSION,
.hotfix = FUSE_HOTFIX_VERSION,
.padding = 0
};
return fuse_session_new_versioned(args, op, op_size, &version,
userdata);
}
So idea and suggestion Miklos for FUSE_CAP_AUTO_INVAL_DATA was to chage
the default based on FUSE_USE_VERSION. We can do the same for
FUSE_CAP_EXPORT_SUPPORT.
The initial patch to add in that version into libfuse as another
function argument got really complex in the high level layer and then QA
team at DDN figure out that disabling FUSE_CAP_AUTO_INVAL_DATA actually
triggers another data corruption related xftest error (reproducible with
passthrough_hp) and I didn't have time to follow up that chain of issues
- got stalled for now, but I need to resume it (unless someone else
wants to work on it).
Thanks,
Bernd
next prev parent reply other threads:[~2026-05-12 21:26 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-29 10:20 [PATCH] fuse: add fusex filesystem Miklos Szeredi
2026-05-07 8:31 ` Horst Birthelmer
2026-05-08 13:01 ` Amir Goldstein
2026-05-12 8:17 ` Miklos Szeredi
2026-05-12 13:08 ` Amir Goldstein
2026-05-12 13:46 ` Bernd Schubert
2026-05-12 21:07 ` Amir Goldstein
2026-05-12 21:26 ` Bernd Schubert [this message]
2026-05-12 8:11 ` Miklos Szeredi
2026-05-12 10:29 ` Horst Birthelmer
2026-05-08 17:29 ` Horst Birthelmer
2026-05-12 8:20 ` Miklos Szeredi
2026-05-11 8:50 ` Horst Birthelmer
2026-05-12 8:34 ` Miklos Szeredi
2026-05-12 5:05 ` Joanne Koong
2026-05-12 9:18 ` Miklos Szeredi
2026-05-12 13:22 ` Amir Goldstein
2026-05-12 19:22 ` Joanne Koong
2026-05-12 21:28 ` Amir Goldstein
2026-05-12 17:33 ` Joanne Koong
2026-05-12 20:37 ` Darrick J. Wong
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=a1092e7a-e24a-4262-8e54-449bd0e26c8e@bsbernd.com \
--to=bernd@bsbernd.com \
--cc=amir73il@gmail.com \
--cc=djwong@kernel.org \
--cc=fuse-devel@lists.linux.dev \
--cc=horst@birthelmer.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=mszeredi@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox