Re: [PATCH V9 3/8] dax: add fsdev.c driver for fs-dax on character dax
From: John Groves
Date: Wed Mar 25 2026 - 08:53:30 EST
On 26/03/24 02:39PM, Jonathan Cameron wrote:
> On Tue, 24 Mar 2026 00:38:31 +0000
> John Groves <john@xxxxxxxxxxxxxx> wrote:
>
> > From: John Groves <john@xxxxxxxxxx>
> >
> > 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@xxxxxxxxx>
> > Suggested-by: Gregory Price <gourry@xxxxxxxxxx>
> > Signed-off-by: John Groves <john@xxxxxxxxxx>
>
> 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@xxxxxxxxxx>
>
>
>
> > 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?
>
> > +
> > config DEV_DAX_KMEM
> > tristate "KMEM DAX: map dax-devices as System-RAM"
> > default DEV_DAX
>
> > +}
>