volume-manager: load the mount map; pick binary by signature, compose the id-path (S2)

The volume manager reads its policy from configuration at boot (loadTables,
mirroring the device-manager registry load): filesystems.csv (content signature
-> service binary) and volumes.csv (optional id -> mount-prefix override), each
held in a static source buffer with declared bounds. On probe it picks the
binary from the volume's signature (unserved + logged if no row matches, like an
unbound device) and composes the mount path — a volumes.csv override, else the
default /volumes/<id> from volume-map.idString — then spawns that binary with
argv {volume-id, mount-prefix}. Behavior-preserving: fat still ignores argv[2..]
and uses its hardcoded mounts, the binary resolves to /system/services/fat, so
the FULL suite stays green (127/127); the flip to argv-driven mounts and the
/volumes/usb -> id-path migration land in step 5.
This commit is contained in:
Daniel Samson
2026-08-10 00:12:33 +01:00
parent 5bfdb75e12
commit 167e9c7a9e
5 changed files with 123 additions and 10 deletions
+4 -3
View File
@@ -10,9 +10,10 @@ pub fn build(b: *std.Build) void {
.name = "volume-manager",
.root_source_file = b.path("volume-manager.zig"),
.imports = &.{
"block", "channel", "device-manager-protocol", "driver",
"envelope", "ipc", "logging", "memory",
"process", "service", "time", "volume-manager-protocol",
"block", "channel", "csv", "device-manager-protocol",
"driver", "envelope", "file-system", "ipc",
"logging", "memory", "process", "service",
"time", "volume-manager-protocol",
},
});
b.installArtifact(exe);