[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