Skip to content

Commit 2a71e03

Browse files
crates: add new experimental composefs-fuse crate
This allows us to mount a FUSE filesystem from the in-memory filesystem tree. That's useful because using erofs requires CAP_SYS_ADMIN in the root namespace, which we often won't have. This is not particularly complete. It's a sort of minimal-effort first implementation, but already basically works. It's also not particularly efficient. In particular, it doesn't use splice or passthrough fds. Passthrough fds also currently require root (although the FUSE developers are working on easing that restriction) and although the Rust binding layer for FUSE recently gained passthrough fd support, it hasn't been related yet. Splice support is also missing from the Rust binding layer. Signed-off-by: Allison Karlitskaya <[email protected]>
1 parent c6a5195 commit 2a71e03

File tree

3 files changed

+488
-0
lines changed

3 files changed

+488
-0
lines changed

.github/workflows/publish.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ jobs:
1818
- run: cargo publish -p composefs
1919
- run: cargo publish -p composefs-oci
2020
- run: cargo publish -p composefs-boot
21+
- run: cargo publish -p composefs-fuse
2122
- run: cargo publish -p cfsctl
2223
- run: cargo publish -p composefs-setup-root

crates/composefs-fuse/Cargo.toml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
[package]
2+
name = "composefs-fuse"
3+
description = "FUSE backend for composefs"
4+
keywords = ["composefs", "fuse"]
5+
6+
edition.workspace = true
7+
license.workspace = true
8+
readme.workspace = true
9+
repository.workspace = true
10+
rust-version.workspace = true
11+
version.workspace = true
12+
13+
[dependencies]
14+
anyhow = { version = "1.0.98", default-features = false }
15+
composefs = { workspace = true }
16+
fuser = { version = "0.15.1", default-features = false, features = ["abi-7-31"] }
17+
log = { version = "0.4.8", default-features = false }
18+
rustix = { version = "1.0.0", default-features = false, features = ["fs", "mount"] }

0 commit comments

Comments
 (0)