Re: [PATCH V9 3/8] dax: add fsdev.c driver for fs-dax on character dax

From: Jonathan Cameron

Date: Tue Mar 24 2026 - 10:46:36 EST


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

> +
> config DEV_DAX_KMEM
> tristate "KMEM DAX: map dax-devices as System-RAM"
> default DEV_DAX

> +}