public inbox for linux-fsdevel@vger.kernel.org
 help / color / mirror / Atom feed
From: John Groves <John@groves.net>
To: Ira Weiny <ira.weiny@intel.com>
Cc: Jonathan Cameron <jonathan.cameron@huawei.com>,
	 John Groves <john@jagalactic.com>,
	Miklos Szeredi <miklos@szeredi.hu>,
	 Dan Williams <dan.j.williams@intel.com>,
	Bernd Schubert <bschubert@ddn.com>,
	 Alison Schofield <alison.schofield@intel.com>,
	John Groves <jgroves@micron.com>,
	 Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	 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>,
	David Hildenbrand <david@kernel.org>,
	 Christian Brauner <brauner@kernel.org>,
	"Darrick J . Wong" <djwong@kernel.org>,
	 Randy Dunlap <rdunlap@infradead.org>,
	Jeff Layton <jlayton@kernel.org>,
	 Amir Goldstein <amir73il@gmail.com>,
	Stefan Hajnoczi <shajnocz@redhat.com>,
	 Joanne Koong <joannelkoong@gmail.com>,
	Josef Bacik <josef@toxicpanda.com>,
	 Bagas Sanjaya <bagasdotme@gmail.com>,
	Chen Linxuan <chenlinxuan@uniontech.com>,
	 James Morse <james.morse@arm.com>, Fuad Tabba <tabba@google.com>,
	 Sean Christopherson <seanjc@google.com>,
	Shivank Garg <shivankg@amd.com>,
	 Ackerley Tng <ackerleytng@google.com>,
	Gregory Price <gourry@gourry.net>,
	 Aravind Ramesh <arramesh@micron.com>,
	Ajay Joshi <ajayjoshi@micron.com>,
	 "venkataravis@micron.com" <venkataravis@micron.com>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"nvdimm@lists.linux.dev" <nvdimm@lists.linux.dev>,
	 "linux-cxl@vger.kernel.org" <linux-cxl@vger.kernel.org>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH V9 3/8] dax: add fsdev.c driver for fs-dax on character dax
Date: Thu, 26 Mar 2026 19:56:03 -0500	[thread overview]
Message-ID: <acXMdEKG7kO11OtH@groves.net> (raw)
In-Reply-To: <69c5b7411999c_14003310089@iweiny-mobl.notmuch>

On 26/03/26 05:46PM, Ira Weiny wrote:
> John Groves wrote:
> > On 26/03/25 11:04AM, Ira Weiny wrote:
> > > John Groves wrote:
> > > > On 26/03/24 02:39PM, Jonathan Cameron wrote:
> > > > > On Tue, 24 Mar 2026 00:38:31 +0000
> > > > > John Groves <john@jagalactic.com> wrote:
> > > > > 
> > > > > > From: John Groves <john@groves.net>
> > > > > > 
> > > > > > The new fsdev driver provides pages/folios initialized compatibly with
> > > > > > fsdax - normal rather than devdax-style refcounting, and starting out
> > > > > > with order-0 folios.
> > > > > > 
> > > > > > When fsdev binds to a daxdev, it is usually (always?) switching from the
> > > > > > devdax mode (device.c), which pre-initializes compound folios according
> > > > > > to its alignment. Fsdev uses fsdev_clear_folio_state() to switch the
> > > > > > folios into a fsdax-compatible state.
> > > > > > 
> > > > > > A side effect of this is that raw mmap doesn't (can't?) work on an fsdev
> > > > > > dax instance. Accordingly, The fsdev driver does not provide raw mmap -
> > > > > > devices must be put in 'devdax' mode (drivers/dax/device.c) to get raw
> > > > > > mmap capability.
> > > > > > 
> > > > > > In this commit is just the framework, which remaps pages/folios compatibly
> > > > > > with fsdax.
> > > > > > 
> > > > > > Enabling dax changes:
> > > > > > 
> > > > > > - bus.h: add DAXDRV_FSDEV_TYPE driver type
> > > > > > - bus.c: allow DAXDRV_FSDEV_TYPE drivers to bind to daxdevs
> > > > > > - dax.h: prototype inode_dax(), which fsdev needs
> > > > > > 
> > > > > > Suggested-by: Dan Williams <dan.j.williams@intel.com>
> > > > > > Suggested-by: Gregory Price <gourry@gourry.net>
> > > > > > Signed-off-by: John Groves <john@groves.net>
> > > > > 
> > > > > I was kind of thinking you'd go with a hidden KCONFIG option with default
> > > > > magic to do the same build condition to you had in the Makefil, but one the
> > > > > user can opt in or out for is also fine.
> > > > > 
> > > > > Comments on that below. Meh, I think this is better anyway :)
> > > > > 
> > > > > Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
> > > > > 
> > > > > 
> > > > > 
> > > > > > diff --git a/drivers/dax/Kconfig b/drivers/dax/Kconfig
> > > > > > index d656e4c0eb84..7051b70980d5 100644
> > > > > > --- a/drivers/dax/Kconfig
> > > > > > +++ b/drivers/dax/Kconfig
> > > > > > @@ -61,6 +61,17 @@ config DEV_DAX_HMEM_DEVICES
> > > > > >  	depends on DEV_DAX_HMEM && DAX
> > > > > >  	def_bool y
> > > > > >  
> > > > > > +config DEV_DAX_FSDEV
> > > > > > +	tristate "FSDEV DAX: fs-dax compatible devdax driver"
> > > > > > +	depends on DEV_DAX && FS_DAX
> > > > > > +	help
> > > > > > +	  Support fs-dax access to DAX devices via a character device
> > > > > > +	  interface. Unlike device_dax (which pre-initializes compound folios
> > > > > > +	  based on device alignment), this driver leaves folios at order-0 so
> > > > > > +	  that fs-dax filesystems can manage folio order dynamically.
> > > > > > +
> > > > > > +	  Say M if unsure.
> > > > > Fine like this, but if you wanted to hide it in interests of not
> > > > > confusing users...
> > > > > 
> > > > > config DEV_DAX_FSDEV
> > > > > 	tristate
> > > > > 	depends on DEV_DAX && FS_DAX
> > > > > 	default DEV_DAX
> > > > 
> > > > I like this better. I see no reason not to default to including fsdev.
> > > > It does nothing other than frustrating famfs users if it's off - since
> > > > building it still has no effect unless you put a daxdev in famfs mode.
> > > > 
> > > > Ira, it's kinda in your hands at the moment. Do you feel like making this
> > > > change?
> > > 
> > > I don't mind making this change.  But we have to deal with the breakage to
> > > current device dax users.
> > > 
> > > https://lore.kernel.org/all/69c36921255b6_e9d8d1009b@iweiny-mobl.notmuch/
> > > 
> > > What am I missing?
> > > 
> > > Ira
> > 
> > OK, I can reproduce that failure with kernel 7.0.0-rc5 and 
> > straight ndctl v84. So it's not famfs.
> 
> No it is the fsdev_dax driver which causes the issue.
> 
> I can reload the driver and effectively change the order the drivers are
> searched.
> 
> I can prove this with a simple print.  With my test system (where
> fsdev_dax _happens_ to be the first driver searched) the failure happens.
> 
> [  526.564232] IKW searching drv type 0 ; type 1
> [  526.564515] IKW searching drv type 2 ; type 1
> 
> If I remove your driver (modprobe -r fsdev_dax) prior to running the test
> I get.
> 
> [   59.748171] IKW searching drv type 0 ; type 1
> [   59.749127] IKW searching drv type 1 ; type 1
> 
> And it passes.  I can continue by loading fsdev_dax back and it will
> continue to work.  If you are getting this to pass it must be because in
> your system that driver gets loaded first...  not sure how.
> 
> This is with the same exact kernel just with your module removed at run
> time.
> 
> dax_match_type() needs some other way of matching when the fsdev_dax
> driver should be used.

I think the correct answer is that fsdev/famfs should never automatically 
match and bind. Weird that I haven't seen it do that (or maybe it did but
I didn't notice?)

If one does a mkfs.famfs or 'famfs mount', the famfs tools already try to 
bind fsdev/famfs mode if necessary and fail if they can't.

> 
> I'm not seeing a clear path ATM.

I do, but I need to test it out. If it works I'll send a v10 patch set
in a day or two.

Also, I am definitely seeing ndctl/dax test failures from the device-dax 
and dm.sh tests at rc5 with no famfs code (dax or otherwise) at all; I'm 
puzzled that you don't see any ndctl test failures in that situation. If 
I understood Allison correctly, she saw something similar to what I saw). 
But no worries, we'll get it sorted.

If my strategy works, the next version won't ever automatically bind fsdev,
but it will be explicitly bindable via daxctl or famfs tools. Famfs does not 
need fsdev to ever be automatically bound do dax mem...

> 
> > 
> > I also studied the verbose logs trying to figure out if famfs
> > could cause it (while running a famfs kernel and ndctl), but
> > I don't see it.
> > 
> > Then I tried non-famfs kernel and ndctl and it's the same with
> > or without famfs kernel and famfs ndctl.
> 
> :-/  I'm not seeing any failures with rc5.
> 
> Also I'm not running with famfs.  Just the dax changes.

Right - if fsdev ever gets automatically bound instead of 
drivers/dax/device.c, that's my bad. Weird that I haven't seen that happen, 
but that's why we review and test :D

> 
> Ira

Thank you,
John


  reply	other threads:[~2026-03-27  0:56 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260324003630.4930-1-john@jagalactic.com>
2026-03-24  0:36 ` [PATCH BUNDLE v9] famfs: Fabric-Attached Memory File System John Groves
2026-03-24  0:37   ` [PATCH V9 0/8] dax: prepare for famfs John Groves
2026-03-24  0:37     ` [PATCH V9 1/8] dax: move dax_pgoff_to_phys from [drivers/dax/] device.c to bus.c John Groves
2026-03-24 14:18       ` Jonathan Cameron
2026-03-24 23:44         ` Ira Weiny
2026-03-25 11:55           ` Jonathan Cameron
2026-03-24  0:38     ` [PATCH V9 2/8] dax: Factor out dax_folio_reset_order() helper John Groves
2026-03-24 14:23       ` Jonathan Cameron
2026-03-24  0:38     ` [PATCH V9 3/8] dax: add fsdev.c driver for fs-dax on character dax John Groves
2026-03-24 14:39       ` Jonathan Cameron
2026-03-25 12:43         ` John Groves
2026-03-25 16:04           ` Ira Weiny
2026-03-26 14:33             ` John Groves
2026-03-26 22:46               ` Ira Weiny
2026-03-27  0:56                 ` John Groves [this message]
2026-03-24 15:19       ` Dave Jiang
2026-03-25  4:48       ` Ira Weiny
2026-03-24  0:38     ` [PATCH V9 4/8] dax: Save the kva from memremap John Groves
2026-03-24 14:40       ` Jonathan Cameron
2026-03-24  0:39     ` [PATCH V9 5/8] dax: Add dax_operations for use by fs-dax on fsdev dax John Groves
2026-03-24 14:51       ` Jonathan Cameron
2026-03-24 15:23       ` Dave Jiang
2026-03-25 21:28       ` Dave Jiang
2026-03-25 22:40       ` Dave Jiang
2026-03-24  0:39     ` [PATCH V9 6/8] dax: Add dax_set_ops() for setting dax_operations at bind time John Groves
2026-03-24 14:53       ` Jonathan Cameron
2026-03-24  0:39     ` [PATCH V9 7/8] dax: Add fs_dax_get() func to prepare dax for fs-dax usage John Groves
2026-03-24 15:05       ` Jonathan Cameron
2026-03-24 15:25       ` Dave Jiang
2026-03-24  0:39     ` [PATCH V9 8/8] dax: export dax_dev_get() John Groves
2026-03-24 15:06       ` Jonathan Cameron
2026-03-24  0:39   ` [PATCH V9 00/10] famfs: port into fuse John Groves
2026-03-24  0:40     ` [PATCH V9 01/10] famfs_fuse: Update macro s/FUSE_IS_DAX/FUSE_IS_VIRTIO_DAX/ John Groves
2026-03-24 15:12       ` Jonathan Cameron
2026-03-24  0:40     ` [PATCH V9 02/10] famfs_fuse: Basic fuse kernel ABI enablement for famfs John Groves
2026-03-24  0:40     ` [PATCH V9 03/10] famfs_fuse: Plumb the GET_FMAP message/response John Groves
2026-03-24  0:41     ` [PATCH V9 04/10] famfs_fuse: Create files with famfs fmaps John Groves
2026-03-24  0:41     ` [PATCH V9 05/10] famfs_fuse: GET_DAXDEV message and daxdev_table John Groves
2026-03-24  0:41     ` [PATCH V9 06/10] famfs_fuse: Plumb dax iomap and fuse read/write/mmap John Groves
2026-03-24  0:41     ` [PATCH V9 07/10] famfs_fuse: Add holder_operations for dax notify_failure() John Groves
2026-03-24  0:41     ` [PATCH V9 08/10] famfs_fuse: Add DAX address_space_operations with noop_dirty_folio John Groves
2026-03-24  0:42     ` [PATCH V9 09/10] famfs_fuse: Add famfs fmap metadata documentation John Groves
2026-03-24  0:42     ` [PATCH V9 10/10] famfs_fuse: Add documentation 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=acXMdEKG7kO11OtH@groves.net \
    --to=john@groves.net \
    --cc=ackerleytng@google.com \
    --cc=ajayjoshi@micron.com \
    --cc=alison.schofield@intel.com \
    --cc=amir73il@gmail.com \
    --cc=arramesh@micron.com \
    --cc=bagasdotme@gmail.com \
    --cc=brauner@kernel.org \
    --cc=bschubert@ddn.com \
    --cc=chenlinxuan@uniontech.com \
    --cc=corbet@lwn.net \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=david@kernel.org \
    --cc=djwong@kernel.org \
    --cc=gourry@gourry.net \
    --cc=ira.weiny@intel.com \
    --cc=jack@suse.cz \
    --cc=james.morse@arm.com \
    --cc=jgroves@micron.com \
    --cc=jlayton@kernel.org \
    --cc=joannelkoong@gmail.com \
    --cc=john@jagalactic.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=josef@toxicpanda.com \
    --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=seanjc@google.com \
    --cc=shajnocz@redhat.com \
    --cc=shivankg@amd.com \
    --cc=skhan@linuxfoundation.org \
    --cc=tabba@google.com \
    --cc=venkataravis@micron.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