>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
