[PATCH V11 8/9] famfs_fuse: Add DAX address_space_operations with noop_dirty_folio

John Groves <[email protected]> Mon, 20 Jul 2026 03:46:47 +0000
Newsgroups dev.linux.lists.fuse-devel,dev.linux.lists.nvdimm,org.kernel.vger.linux-cxl,org.kernel.vger.linux-doc,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel
Message-ID <0100019f7da22a52-50f1e51d-e030-47e8-ad9d-cda5a2a47682-000000@email.amazonses.com>
From: John Groves <[email protected]>=0D=0A=0D=0AFamfs is memory-backed; th=
ere is no place to write back to, and no reason=0D=0Ato mark pages dirty =
at all. Provide an address_space_operations using=0D=0Anoop_dirty_folio s=
o the dax paths have the ops they expect.=0D=0A=0D=0ASigned-off-by: John =
Groves <[email protected]>=0D=0A---=0D=0A fs/fuse/famfs.c | 11 +++++++++++=0D=
=0A 1 file changed, 11 insertions(+)=0D=0A=0D=0Adiff --git a/fs/fuse/famf=
s.c b/fs/fuse/famfs.c=0D=0Aindex 8d13282e8949..aea0bceef774 100644=0D=0A-=
-- a/fs/fuse/famfs.c=0D=0A+++ b/fs/fuse/famfs.c=0D=0A@@ -16,6 +16,7 @@=0D=
=0A #include <linux/dax.h>=0D=0A #include <linux/iomap.h>=0D=0A #include =
<linux/log2.h>=0D=0A+#include <linux/pagemap.h>=0D=0A #include <linux/pat=
h.h>=0D=0A #include <linux/namei.h>=0D=0A #include <linux/string.h>=0D=0A=
@@ -41,6 +42,15 @@ static const struct dax_holder_operations famfs_fuse_d=
ax_holder_ops =3D {=0D=0A =09.notify_failure=09=09=3D famfs_dax_notify_fa=
ilure,=0D=0A };=0D=0A=20=0D=0A+/*=0D=0A+ * DAX address_space_operations f=
or famfs.=0D=0A+ * famfs doesn't need dirty tracking - writes go directly=
 to=0D=0A+ * memory with no writeback required.=0D=0A+ */=0D=0A+static co=
nst struct address_space_operations famfs_dax_aops =3D {=0D=0A+=09.dirty_=
folio=09=3D noop_dirty_folio,=0D=0A+};=0D=0A+=0D=0A /********************=
*********************************************************/=0D=0A=20=0D=0A=
 /*=0D=0A@@ -564,6 +574,7 @@ famfs_file_init_dax(=0D=0A =09if (famfs_meta=
_set(fi, meta) =3D=3D NULL) {=0D=0A =09=09i_size_write(inode, meta->file_=
size);=0D=0A =09=09inode->i_flags |=3D S_DAX;=0D=0A+=09=09inode->i_data.a=
_ops =3D &famfs_dax_aops;=0D=0A =09} else {=0D=0A =09=09pr_debug("%s: fil=
e already had metadata\n", __func__);=0D=0A =09=09__famfs_meta_free(meta)=
;=0D=0A--=20=0D=0A2.53.0=0D=0A=0D=0A