From: "Darrick J. Wong" <djwong@kernel.org>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
fuse-devel <fuse-devel@lists.linux.dev>,
linux-fsdevel@vger.kernel.org, John Groves <John@groves.net>,
Joanne Koong <joannelkoong@gmail.com>,
Bernd Schubert <bernd@bsbernd.com>,
Horst Birthelmer <horst@birthelmer.de>,
Luis Henriques <luis@igalia.com>
Subject: Re: [post LSFMM summary] where is fuse going?
Date: Wed, 20 May 2026 13:52:01 -0700 [thread overview]
Message-ID: <20260520205201.GF9531@frogsfrogsfrogs> (raw)
In-Reply-To: <CAOQ4uxg7mkmE+Y+2rrYodwng1ZZZ6PycbwaBufATH4KLOcRnXw@mail.gmail.com>
On Wed, May 20, 2026 at 09:24:05PM +0200, Amir Goldstein wrote:
> On Wed, May 20, 2026 at 12:04 AM Darrick J. Wong <djwong@kernel.org> wrote:
> >
> > On Tue, May 19, 2026 at 11:01:18AM +0200, Miklos Szeredi wrote:
> > > On Tue, 12 May 2026 at 22:23, Darrick J. Wong <djwong@kernel.org> wrote:
> > >
> > > > As for fuse-iomap I'm not sure how to proceed
> > >
> > > I will try to dedicate this week to reviewing fuse-iomap, hopefully
> > > without too many distractions.
> >
> > Well gosh I had better get going on posting v9 then.
> >
> > Since 30 April I've:
> >
> > * Ripped out the BPF stuff after all the shouting
> > * Added a simplistic iomap filesystem striping mechanism
> > * Tightened some of the checking of the iomaps being given to the kernel
> > * Made it so that you can remove backing devices
> > * Actually check read/write access with the iomap bdevs
> > * Improved inline data write handling to be less flakey
> > * Amended iomap writeback so that you can run a standard ->iomap_begin
> > to collect mappings
> > * Banned freeze except on iomap filesystems
> >
> > * Fixed some integer truncation issues
> > * Add some iomap helpers to libfuse to make it easier for fuse server
> > authors
> >
> > > > -- in the long run I think
> > > > it would be cleaner if each file IO path (virtiofs dax, passthrough,
> > > > writeback_cache, iomap, and whatever we call the original one) had its
> > > > own file_operations. But that would require us to refactor the common
> > > > code chunks from each file operation function into a bunch of smaller
> > > > functions, which I think would sharply increase the review backlog.
> > >
> > > And so the plan is rather to basically start from scratch and do that
> > > form the beginning in fusex code.
> >
> > Heh. In reading through the fuse code to figure out how I'd get that
> > done, I came to a few realizations:
> >
> > 1. It really *is* easier if the server can set FUSE_CAP_IOMAP and from
> > then on every file on the filesystem does things the iomap way.
> >
> > 2. Many of the random weird callers of fuse_inode_has_iomap() outside of
> > the regular file IO path are *actually* looking for "is this an
> > exclusive-mode inode"? That's pretty much all of the file attribute and
> > ACL handling code.
> >
>
> When you use the term "exclusive mode" you mean the same thing as
> "local" filesystem as opposed to "remote" (or clustered) filesystem that
> can have attribute changes on the server and needs to implement revalidate.
> Is that right?
Right. A local filesystem driver knows it has exclusive ownership over
the disk contents, and hence the filesystem. It doesn't have to worry
about external changes to the filesystem metadata.
> Can we maybe stick to the "local"/"remote" terminology?
> Or am I missing something subtle?
>
> > 3. iomap and exclusive mode are mostly orthogonal concepts. One deals
> > with plumbing, the other deals with attributes.
> >
> > 3a: iomap without exclusive: This is a clustered filesystem client.
> > The client grabs a file layout lease from the server, and uses that
> > to populate the iomappings. Timestamp updates are forced out after
> > each write, but otherwise it's the same attr cache and timeout that
> > regular fuse uses
> >
> > 3b: iomap with exclusive: This is basically fuse4fs and all the other
> > local filesystems. The kernel knows that the fuse server isn't going
> > to change the file attrs out from underneath it, so it can cache
> > timestamp updates in the kernel and only flush them periodically.
> >
> > 4. Figure out how all the attribute handling works in fuse is really
> > really complicated.
> >
> > But there are questions here -- I'd like it if the fuse server could set
> > FUSE_CAP_IOMAP and all files are iomap. All the weird userspace inode
> > flags setup setup code goes away. It'd be even nicer for 3b if you
> > could declare at mount time (or FUSE_IOMAP_CONFIG time) whether you want
> > exclusive mode or not, at which point all files *also* become exclusive
> > files.
> >
> > The problem with 3a is that I don't have a client or any way to test
> > that. If I just don't allow iomap && !exclusive, how sad would anyone
> > be?
> >
>
> My view is that as long as you keep the design sufficiently extensible
> to support iomap && !exclusive in the future,
> let those who care enough about iomap && !exclusive step forward
> to code and review and test it if they care enough.
Heh. Disentangling all the existing file attr and caching code is going
to take me a long time...
--D
prev parent reply other threads:[~2026-05-20 20:52 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 15:12 [post LSFMM summary] where is fuse going? Miklos Szeredi
2026-05-11 16:43 ` Luis Henriques
2026-05-11 19:17 ` Horst Birthelmer
2026-05-12 8:46 ` Luis Henriques
2026-05-12 9:57 ` Miklos Szeredi
2026-05-12 9:38 ` Miklos Szeredi
2026-05-11 17:18 ` Amir Goldstein
2026-05-12 3:20 ` Gao Xiang
2026-05-12 7:53 ` Amir Goldstein
2026-05-12 10:00 ` Miklos Szeredi
2026-05-12 21:40 ` Amir Goldstein
2026-05-13 6:57 ` Gao Xiang
2026-05-12 9:52 ` Miklos Szeredi
2026-05-12 20:33 ` Darrick J. Wong
2026-05-12 20:23 ` Darrick J. Wong
2026-05-19 9:01 ` Miklos Szeredi
2026-05-19 11:23 ` Horst Birthelmer
2026-05-19 22:03 ` Darrick J. Wong
2026-05-20 19:24 ` Amir Goldstein
2026-05-20 20:52 ` Darrick J. Wong [this message]
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=20260520205201.GF9531@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=John@groves.net \
--cc=amir73il@gmail.com \
--cc=bernd@bsbernd.com \
--cc=fuse-devel@lists.linux.dev \
--cc=horst@birthelmer.de \
--cc=joannelkoong@gmail.com \
--cc=linux-fsdevel@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 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.