>From 48d28d18ad0ccfc950cf9b3ff71033ae03b3a171 Mon Sep 17 00:00:00 2001
From: John Groves <[email protected]>
Date: Sun, 11 Oct 2026 15:06:48 -0500
Subject: [PATCH 0/1] fuse: resolve extent maps in O(1) when possible

This patch applies on top of Miklos' v4 "fuse: DAX device based extent
maps (famfs)" series and replaces the rbtree of extents with a sorted,
packed array hung off the extmap backing.

The extent resolver runs on every mapping fault of a DAX extent-mapped
file and on every chunk of every read/write.  Unlike a conventional
page fault there is no I/O to amortize it against; the fault only
installs page table entries for memory that is already there, so each
rbtree level is a potential LLC miss added to an otherwise cheap fault.
With a packed, sorted array a uniform map (including every cyclic map)
resolves with one divide and an array index, and an irregular map
bisects the array.  famfs always produces uniform maps today.  The
commit message has the full rationale.

Logically this folds into the last three patches of v4 (extent map data
structure, extent map I/O support, striped backing).  I'm happy to send
it pre-split if that is easier than folding it yourself.

With this patch on top of v4 the famfs test suite passes; that tree is
at [2].  The famfs userspace master branch [1] now works with v4.  If
the next revision needs further userspace changes, please base them on
that branch or send them my way so the two don't diverge.

[1] https://github.com/jagalactic/famfs.git master
[2] https://github.com/jagalactic/linux.git famfs-extmap

John Groves (1):
  fuse: resolve extent maps in O(1) when possible

 fs/fuse/backing.c |   7 +-
 fs/fuse/ext_map.c | 219 +++++++++++++++++++++++++++++-----------------
 fs/fuse/fuse_i.h  |   8 +-
 3 files changed, 147 insertions(+), 87 deletions(-)

-- 
2.55.0


Reply via email to