From: "Darrick J. Wong" <djwong@kernel.org>
To: John Groves <John@groves.net>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
Dan Williams <dan.j.williams@intel.com>,
Bernd Schubert <bschubert@ddn.com>,
John Groves <jgroves@micron.com>,
Jonathan Corbet <corbet@lwn.net>,
Vishal Verma <vishal.l.verma@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Matthew Wilcox <willy@infradead.org>, Jan Kara <jack@suse.cz>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>,
Randy Dunlap <rdunlap@infradead.org>,
Jeff Layton <jlayton@kernel.org>,
Kent Overstreet <kent.overstreet@linux.dev>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org,
linux-fsdevel@vger.kernel.org,
Amir Goldstein <amir73il@gmail.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Stefan Hajnoczi <shajnocz@redhat.com>,
Joanne Koong <joannelkoong@gmail.com>,
Josef Bacik <josef@toxicpanda.com>,
Aravind Ramesh <arramesh@micron.com>,
Ajay Joshi <ajayjoshi@micron.com>
Subject: Re: [RFC V2 12/18] famfs_fuse: Plumb the GET_FMAP message/response
Date: Tue, 19 Aug 2025 14:55:10 -0700 [thread overview]
Message-ID: <20250819215510.GD7942@frogsfrogsfrogs> (raw)
In-Reply-To: <hd3tancdc6pgjka44nwhk6laawnasob44jqagwxawrmxtevihe@2orrcse6xyjx>
On Fri, Aug 15, 2025 at 10:06:01AM -0500, John Groves wrote:
> On 25/08/14 11:20AM, Darrick J. Wong wrote:
> > On Thu, Aug 14, 2025 at 04:36:57PM +0200, Miklos Szeredi wrote:
> > > On Thu, 14 Aug 2025 at 15:36, Miklos Szeredi <miklos@szeredi.hu> wrote:
> > >
> > > > I'm still hoping some common ground would benefit both interfaces.
> > > > Just not sure what it should be.
> > >
> > > Something very high level:
> > >
> > > - allow several map formats: say a plain one with a list of extents
> > > and a famfs one
> >
> > Yes, I think that's needed.
>
> Agreed
>
> >
> > > - allow several types of backing files: say regular and dax dev
> >
> > "block device", for iomap.
> >
> > > - querying maps has a common protocol, format of maps is opaque to this
> > > - maps are cached by a common facility
> >
> > I've written such a cache already. :)
>
> I guess I need to take a look at that. Can you point me to the right place?
>
> >
> > > - each type of mapping has a decoder module
> >
> > I don't know that you need much "decoding" -- for famfs, the regular
> > mappings correspond to FUSE_IOMAP_TYPE_MAPPED. The one goofy part is
> > the device cookie in each IO mapping: fuse-iomap maps each block device
> > you give it to a device cookie, so I guess famfs will have to do the
> > same.
> >
> > OTOH you can then have a famfs backed by many persistent memory
> > devices.
>
> That's handled in the famfs fmaps already. When an fmap is ingested,
> if it references any previously-unknown daxdevs, they get retrieved
> (FUSE_GET_DAXDEV).
>
> Oversimplifying a bit, I assume that famfs fmaps won't really change,
> they'll just be retrieved by a more flexible method and be preceded
> by a header that identifies the payload as a famfs fmap.
<nod> Well, I suppose fmaps aren't supposed to change much, but I get
the strong sense that Miklos would rather we both use the
FUSE_DEV_IOC_BACKING_OPEN interface...
> >
> > > - each type of backing file has a module for handling I/O
> > >
> > > Does this make sense?
> >
> > More or less.
>
> I'm nervous about going for too much generalization too soon here,
> but otherwise yeah.
...and I've tried to make it simple for famfs to pick up the interface.
From the new fuse_backing_open:
/*
* Each _backing_open function should either:
*
* 1. Take a ref to fb if it wants the file and return 0.
* 2. Return 0 without taking a ref if the backing file isn't needed.
* 3. Return an errno explaining why it couldn't attach.
*
* If at least one subsystem bumps the reference count to open it,
* we'll install it into the index and return the index. If nobody
* opens the file, the error code will be passed up. EPERM is the
* default.
*/
passthrough_res = fuse_passthrough_backing_open(fc, fb);
iomap_res = fuse_iomap_backing_open(fc, fb);
if (refcount_read(&fb->count) < 2)
/* drop the fuse_backing and return one of the res */
So all your famfs_backing_open function has to do is check that fb->file
points to a pmem device. If so, it sets fb->famfs = 1 and bumps the
fb->count refcount.
Full code here:
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/log/?h=fuse-iomap-attrs_2025-08-19
I'll let the build robots find any facepalm problems and post this whole
series tomorrow.
> > > This doesn't have to be implemented in one go, but for example
> > > GET_FMAP could be renamed to GET_READ_MAP with an added offset and
> > > size parameter. For famfs the offset/size would be set to zero/inf.
> > > I'd be content with that for now.
> >
> > I'll try to cough up a RFC v4 next week.
>
> Darrick, let's try to chat next week to compare notes.
>
> Based on this thinking, I will keep my rework of GET_FMAP to a minimum
> since that will likely be a new shared message/response. I think that
> part can be merged later in the cycle...
<nod>
--D
next prev parent reply other threads:[~2025-08-19 21:55 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-03 18:50 [RFC V2 00/18] famfs: port into fuse John Groves
2025-07-03 18:50 ` [RFC V2 01/18] dev_dax_iomap: Move dax_pgoff_to_phys() from device.c to bus.c John Groves
2025-07-03 18:50 ` [RFC V2 02/18] dev_dax_iomap: Add fs_dax_get() func to prepare dax for fs-dax usage John Groves
2025-07-04 10:39 ` Jonathan Cameron
2025-07-04 12:54 ` John Groves
2025-07-03 18:50 ` [RFC V2 03/18] dev_dax_iomap: Save the kva from memremap John Groves
2025-07-04 11:11 ` Jonathan Cameron
2025-07-03 18:50 ` [RFC V2 04/18] dev_dax_iomap: Add dax_operations for use by fs-dax on devdax John Groves
2025-07-04 12:47 ` Jonathan Cameron
2025-07-05 22:56 ` John Groves
2025-07-03 18:50 ` [RFC V2 05/18] dev_dax_iomap: export dax_dev_get() John Groves
2025-07-03 18:50 ` [RFC V2 06/18] dev_dax_iomap: (ignore!) Drop poisoned page warning in fs/dax.c John Groves
2025-07-03 18:50 ` [RFC V2 07/18] famfs_fuse: magic.h: Add famfs magic numbers John Groves
2025-07-03 18:50 ` [RFC V2 08/18] famfs_fuse: Kconfig John Groves
2025-07-03 18:50 ` [RFC V2 09/18] famfs_fuse: Update macro s/FUSE_IS_DAX/FUSE_IS_VIRTIO_DAX/ John Groves
2025-07-04 8:44 ` Amir Goldstein
2025-07-03 18:50 ` [RFC V2 10/18] famfs_fuse: Basic fuse kernel ABI enablement for famfs John Groves
2025-07-03 22:45 ` John Groves
2025-07-07 17:32 ` Darrick J. Wong
2025-07-04 7:54 ` Amir Goldstein
2025-07-04 13:39 ` John Groves
2025-07-07 17:39 ` Darrick J. Wong
2025-07-08 12:02 ` John Groves
2025-07-09 1:53 ` Darrick J. Wong
2025-07-11 1:32 ` John Groves
2025-07-12 4:49 ` Darrick J. Wong
2025-08-11 18:30 ` John Groves
2025-08-12 16:37 ` Darrick J. Wong
2025-08-13 13:07 ` John Groves
2025-08-14 17:16 ` Darrick J. Wong
2025-07-03 18:50 ` [RFC V2 11/18] famfs_fuse: Basic famfs mount opts John Groves
2025-07-09 3:59 ` Darrick J. Wong
2025-07-11 15:28 ` John Groves
2025-07-12 5:54 ` Darrick J. Wong
2025-08-14 10:37 ` Miklos Szeredi
2025-08-14 14:39 ` John Groves
2025-08-14 15:19 ` Miklos Szeredi
2025-08-14 23:52 ` John Groves
2025-07-03 18:50 ` [RFC V2 12/18] famfs_fuse: Plumb the GET_FMAP message/response John Groves
2025-07-04 8:54 ` Amir Goldstein
2025-07-04 20:30 ` John Groves
2025-07-05 0:06 ` John Groves
2025-07-05 7:58 ` Amir Goldstein
2025-07-05 19:17 ` John Groves
2025-07-09 4:27 ` Darrick J. Wong
2025-07-11 13:46 ` John Groves
2025-08-14 13:36 ` Miklos Szeredi
2025-08-14 14:36 ` Miklos Szeredi
2025-08-14 18:20 ` Darrick J. Wong
2025-08-15 15:06 ` John Groves
2025-08-19 21:55 ` Darrick J. Wong [this message]
2025-08-15 16:53 ` John Groves
2025-08-19 22:13 ` Darrick J. Wong
2025-08-14 18:05 ` Darrick J. Wong
2025-08-16 15:00 ` John Groves
2025-08-19 22:17 ` Darrick J. Wong
2025-08-15 0:38 ` John Groves
2025-07-03 18:50 ` [RFC V2 13/18] famfs_fuse: Create files with famfs fmaps John Groves
2025-07-04 9:01 ` Amir Goldstein
2025-07-05 19:27 ` John Groves
2025-07-03 18:50 ` [RFC V2 14/18] famfs_fuse: GET_DAXDEV message and daxdev_table John Groves
2025-07-04 13:20 ` Jonathan Cameron
2025-07-06 17:07 ` John Groves
2025-08-14 13:58 ` Miklos Szeredi
2025-08-14 17:19 ` Darrick J. Wong
2025-08-14 18:25 ` Miklos Szeredi
2025-08-14 18:55 ` Darrick J. Wong
2025-08-14 19:19 ` Miklos Szeredi
2025-08-16 16:22 ` John Groves
2025-08-19 22:32 ` Darrick J. Wong
2025-08-15 16:38 ` John Groves
2025-08-19 22:34 ` Darrick J. Wong
2025-07-03 18:50 ` [RFC V2 15/18] famfs_fuse: Plumb dax iomap and fuse read/write/mmap John Groves
2025-07-04 9:13 ` Amir Goldstein
2025-07-05 19:44 ` John Groves
2025-07-03 18:50 ` [RFC V2 16/18] famfs_fuse: Add holder_operations for dax notify_failure() John Groves
2025-07-03 18:50 ` [RFC V2 17/18] famfs_fuse: Add famfs metadata documentation John Groves
2025-07-03 18:50 ` [RFC V2 18/18] famfs_fuse: Add documentation John Groves
2025-07-04 0:27 ` Bagas Sanjaya
2025-07-04 2:22 ` Jonathan Corbet
2025-07-04 3:53 ` Bagas Sanjaya
2025-07-04 18:58 ` Matthew Wilcox
2025-07-04 23:29 ` Bagas Sanjaya
2025-07-04 23:43 ` Matthew Wilcox
2025-07-05 1:11 ` Bagas Sanjaya
2025-07-04 6:09 ` Randy Dunlap
2025-07-04 8:27 ` Amir Goldstein
2025-07-04 23:36 ` Bagas Sanjaya
2025-07-03 18:56 ` [RFC V2 00/18] famfs: port into fuse John Groves
2025-07-09 3:26 ` Miklos Szeredi
2025-07-11 1:18 ` John Groves
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=20250819215510.GD7942@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=John@groves.net \
--cc=Jonathan.Cameron@huawei.com \
--cc=ajayjoshi@micron.com \
--cc=amir73il@gmail.com \
--cc=arramesh@micron.com \
--cc=brauner@kernel.org \
--cc=bschubert@ddn.com \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=jack@suse.cz \
--cc=jgroves@micron.com \
--cc=jlayton@kernel.org \
--cc=joannelkoong@gmail.com \
--cc=josef@toxicpanda.com \
--cc=kent.overstreet@linux.dev \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=nvdimm@lists.linux.dev \
--cc=rdunlap@infradead.org \
--cc=shajnocz@redhat.com \
--cc=viro@zeniv.linux.org.uk \
--cc=vishal.l.verma@intel.com \
--cc=willy@infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).