Skip to content

Commit 0262e1e

Browse files
committed
fuse: Update fuser dependency 0.15.1 → 0.17.0
fuser 0.17 is needed to support multithreaded FUSE sessions: the new API requires `Filesystem: Send + Sync + 'static`, which forces proper Arc-based ownership of the filesystem state and makes it possible to safely hand the implementation to multiple worker threads. The breaking API changes and how they are addressed: - `&self` instead of `&mut self` on all trait methods: the only mutable state (open file handles) is now protected by a Mutex. - New newtypes (INodeNo, FileHandle, LockOwner, Generation) and bitflags (OpenFlags, FopenFlags) — updated at call sites. - readdir/read offsets changed from i64 to u64. - Session::from_fd now takes SessionACL + Config separately. - Session::run() is no longer public; replaced by spawn().join(). - reply.error() takes fuser::Errno instead of raw i32. To satisfy the `'static` bound, serve_tree_fuse() now takes `Arc<FileSystem>` and `Arc<Repository>`. A pre-built flat Vec<InodeData> (indexed by ino-1) replaces the old HashMap<Ino, InodeRef<'a>>, removing the lifetime that was incompatible with `'static`. An InodeLookup index (path→ino for dirs, LeafId→ino for leaves) handles child ino resolution without raw pointers. Assisted-by: OpenCode (claude-sonnet-4-6) Signed-off-by: Colin Walters <walters@verbum.org>
1 parent 4c3e68f commit 0262e1e

2 files changed

Lines changed: 507 additions & 309 deletions

File tree

crates/composefs-fuse/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ version.workspace = true
1313
[dependencies]
1414
anyhow = { version = "1.0.98", default-features = false }
1515
composefs = { workspace = true }
16-
fuser = { version = "0.15.1", default-features = false, features = ["abi-7-31"] }
16+
fuser = { version = "0.17.0", default-features = false }
1717
log = { version = "0.4.8", default-features = false }
1818
rustix = { version = "1.0.0", default-features = false, features = ["fs", "mount"] }

0 commit comments

Comments
 (0)