From: Bernd Schubert <bernd@bsbernd.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Horst Birthelmer <horst@birthelmer.com>,
Bernd Schubert <bschubert@ddn.com>,
Joanne Koong <joannelkoong@gmail.com>,
Luis Henriques <luis@igalia.com>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
Horst Birthelmer <hbirthelmer@ddn.com>
Subject: Re: [PATCH v5 1/3] fuse: add compound command to combine multiple requests
Date: Thu, 12 Feb 2026 10:48:47 +0100 [thread overview]
Message-ID: <bb5bf6c8-22b2-4ca8-808b-4a3c00ec72fd@bsbernd.com> (raw)
In-Reply-To: <CAJfpegscqhGikqZsaAKiujWyAy6wusdVCCQ1jirnKiGX9bE5oQ@mail.gmail.com>
On 2/12/26 10:07, Miklos Szeredi wrote:
> On Wed, 11 Feb 2026 at 21:36, Bernd Schubert <bernd@bsbernd.com> wrote:
>
>> With simple request and a single request per buffer, one can re-use the
>> existing buffer for the reply in fuse-server
>>
>> - write: Do the write operation, then store the result into the io-buffer
>> - read: Copy the relatively small header, store the result into the
>> io-buffer
>>
>> - Meta-operations: Same as read
>
> Reminds me of the header/payload separation in io-uring.
>
> We could actually do that on the /dev/fuse interface as well, just
> never got around to implementing it: first page reserved for
> header(s), payload is stored at PAGE_SIZE offset in the supplied
> buffer.
Yeah, same here, I never came around to that during the past year.
>
> That doesn't solve the overwriting problem, since in theory we could
> have a compound with a READ and a WRITE but in practice we can just
> disallow such combinations.
>
> In fact I'd argue that most/all practical compounds will not even have
> a payload and can fit into a page sized buffer.
That is what Horst had said as well, until I came up with a use case -
write and immediately fetch updated attributes.
A bit side tracking background, I disabled auto-invalidate in the DDN
file system, because we use DLM anyway (additional patches for
background writes and mmap in our branches, should be published to the
list asap). And then that disabled auto-invalidation introduced another
xfstest failure, I think generic/323, but I would need to look it up. I
didn't have time for the details yet, but I think page read beyond EOF.
And that made me think that all operations that change file size and
time stamps could immediately return the updates attributes, if the file
system supports it - with our DLM we would support that.
>
> So as a first iteration can we just limit compounds to small in/out sizes?
Even without write payload, there is still FUSE_NAME_MAX, that can be up
to PATH_MAX -1. Let's say there is LOOKUP, CREATE/OPEN, GETATTR. Lookup
could take >4K, CREATE/OPEN another 4K. Copying that pro-actively out of
the buffer seems a bit overhead? Especially as libfuse needs to iterate
over each compound first and figure out the exact size.
Thanks,
Bernd
next prev parent reply other threads:[~2026-02-12 9:48 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-10 8:46 [PATCH v5 0/3] fuse: compound commands Horst Birthelmer
2026-02-10 8:46 ` [PATCH v5 1/3] fuse: add compound command to combine multiple requests Horst Birthelmer
2026-02-11 14:59 ` Luis Henriques
2026-02-11 16:18 ` Horst Birthelmer
2026-02-11 16:13 ` Miklos Szeredi
2026-02-11 16:35 ` Horst Birthelmer
2026-02-12 9:38 ` Miklos Szeredi
2026-02-12 9:53 ` Horst Birthelmer
2026-02-12 10:23 ` Miklos Szeredi
2026-02-12 10:48 ` Horst Birthelmer
2026-02-12 12:10 ` Miklos Szeredi
2026-02-12 12:33 ` Horst Birthelmer
2026-02-14 1:04 ` Joanne Koong
2026-02-11 20:36 ` Bernd Schubert
2026-02-12 9:07 ` Miklos Szeredi
2026-02-12 9:48 ` Bernd Schubert [this message]
2026-02-12 10:16 ` Miklos Szeredi
2026-02-12 10:43 ` Bernd Schubert
2026-02-12 11:44 ` Horst Birthelmer
2026-02-14 1:35 ` Joanne Koong
2026-02-14 12:54 ` Bernd Schubert
2026-02-14 17:50 ` Re: " Horst Birthelmer
2026-02-16 11:43 ` Miklos Szeredi
2026-02-16 15:22 ` Miklos Szeredi
2026-02-17 7:26 ` Horst Birthelmer
2026-02-17 7:28 ` Horst Birthelmer
2026-03-06 0:52 ` Joanne Koong
2026-03-06 8:17 ` Horst Birthelmer
2026-02-12 11:55 ` Miklos Szeredi
2026-02-10 8:46 ` [PATCH v5 2/3] fuse: create helper functions for filling in fuse args for open and getattr Horst Birthelmer
2026-02-10 8:46 ` [PATCH v5 3/3] fuse: add an implementation of open+getattr Horst Birthelmer
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=bb5bf6c8-22b2-4ca8-808b-4a3c00ec72fd@bsbernd.com \
--to=bernd@bsbernd.com \
--cc=bschubert@ddn.com \
--cc=hbirthelmer@ddn.com \
--cc=horst@birthelmer.com \
--cc=joannelkoong@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luis@igalia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome