1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// FUSE-over-virtio wire protocol types.
//
// virtio-fs reuses the Linux FUSE protocol verbatim — every guest fs
// syscall on a virtiofs mount serializes to a FUSE request, gets
// shoved into the virtio request queue, and the device replies with a
// FUSE response in the same descriptor chain. The protocol is defined
// at `include/uapi/linux/fuse.h` in the kernel tree.
//
// What lives here:
// - opcodes (`Opcode`) — the FUSE_* operation enum
// - flags + status constants
// - wire-format structs (`InHeader`, `OutHeader`, `InitIn`, `InitOut`,
// `LookupIn`, etc.) marked `#[repr(C)]` so they decode from raw
// guest-memory byte slices via std::mem::transmute or pointer
// reads.
//
// What deliberately doesn't live here:
// - the request dispatcher (lives in `fuse::server`)
// - the virtio-fs device emulation (lives in `devices::virtio::fs`)
// - the host filesystem backend (lives in `fuse::backend`)
//
// We target FUSE protocol version 7.36 — the version Linux 6.12 ships
// with, which is what the guest will negotiate. SETUPMAPPING /
// REMOVEMAPPING for DAX were added in 7.31, so 7.36 covers everything
// we need.
pub use ;
pub use ;
pub use ;
pub use PosixFs;
pub use *;
pub use ;