Linux filesystem development
 help / color / mirror / Atom feed
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

      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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox