Repository navigation
OpenVMM prerequisite: attach aggregate virtio-fs to a dormant platform snapshot slot #540
Copy link
Copy link
Open
Description
Parent: #535. Parallel OpenVMM prerequisite 6a. Implementation/review belongs in nanvix/openvmm; this VMM prerequisite closes on the slot/layout contract and VMM tests. #543 owns the combined source pin and RPC-era guest-activated NVX proof before #544; that later proof does not block this prerequisite. Builds on completed multiple mappings #281 and merged OpenVMM #127 (and #130 for file children), which support cold aggregates and restoring an aggregate already present at capture.
Missing VMM contract
A platform snapshot captured with a dormant fs:microvm0 slot currently accepts only one --mount on restore. It rejects --mount-aggregate/--mount-child. Extending this slot must not hotplug a device or weaken existing snapshots' exact attachment/policy checks.
- Version only the platform-template restore contract to attach one validated aggregate to the preexisting dormant filesystem slot. Coordinate one compatible template ABI with the sole-image-slot, OpenVMM prerequisite: verify and receipt opened host attachments #548 opened-attachment receipt and fixed-NIC changes; nvx-rs: reuse a platform template across mapped paths and network policies #543 pins their integrated revision. Preserve stable device ID, tag, MMIO/IRQ/features and owner, bound child count, file/directory type, RO/RW modes, host-path identities and denied/allowed/write policies.
- A dormant capture lacks
virtfs_aggregate=1; restored VMs use the saved effective kernel command line. Define a versioned aggregate-capable slot/layout discovery path through the device's config or a reserved read-only metadata node, with the OpenVMM prerequisite: verify and receipt opened host attachments #548 host attachment receipt delivered through the authenticated RPC-era activation. This must work before nvx-rs: replace activation RPC delivery with an uncaptured VMM configuration region #544's region exists; do not claim a restore CLI flag modifies captured boot arguments or smuggle the layout through a future region. - Permit zero mappings by leaving the slot dormant. A guest
HostMaptable (delivered later by the control protocol) describes binds, not VMM export attachment or file contents. - Reject substituted roots, mismatched access modes, incompatible topology and older snapshot contracts with explicit errors; do not fallback to an unvalidated single-root export. No device hotplug.
Acceptance
- VMM tests cover cold aggregates, unchanged restore of a captured aggregate, dormant-to-aggregate with different children, and negative identity/policy/geometry cases; old/workload snapshots retain exact-match behavior.
- VMM exposes a versioned guest-observable layout (tag, child indices, kind and modes) without changing the snapshot's saved command line. Its OpenVMM prerequisite: verify and receipt opened host attachments #548 host attachment receipt binds actual opened objects to the authenticated activation identity; the guest cannot independently attest host inodes. nvx-rs: reuse a platform template across mapped paths and network policies #543 tests guest discovery and safe binds.
- VMM tests restore a dormant-slot template without a captured
virtfs_aggregate=1token, expose the selected layout and keep a zero-map slot dormant; neither case relies on changing the saved command line. nvx-rs: reuse a platform template across mapped paths and network policies #543 requires the corresponding real RPC-activated guest mount, child/mode and host-receipt checks before nvx-rs: replace activation RPC delivery with an uncaptured VMM configuration region #544. - Track the reviewed OpenVMM PR and its exact source-bound test revision. nvx-rs: reuse a platform template across mapped paths and network policies #543 pins the combined NVX/VMM bundle and runs real guest-activated restore tests for zero/one/multiple RO/RW/file children.
- Record the VMM change separately from nvx-rs: replace the guest C programs with Rust binaries #358/nvx-rs: make the nvx-rs CLI the backend of nvx.py sandbox, egress, and artifact lookup #359: neither Rust guest port nor host CLI port implements it.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
WIP: aggregate virtio-fs on the dormant slot at restore (not for merge)