Repository navigation
Support filesystem-only streamed microVM snapshots - #417
Closed
Enrique Saurez (esaurez) wants to merge 3 commits into
Closed
Enrique Saurez (esaurez) wants to merge 3 commits into
Enrique Saurez (esaurez) wants to merge 3 commits into
Conversation
Enrique Saurez (esaurez)
force-pushed
the
esaurez/streamed-snapshot-preprofile-20261006
branch
from
October 7, 2026 21:31
e276525 to
5cbfe06
Compare
Enrique Saurez (esaurez)
force-pushed
the
esaurez/snapshot-generation-integrity-20260929
branch
from
October 7, 2026 21:31
9b04259 to
20a4bac
Compare
Enrique Saurez (esaurez)
changed the base branch from
esaurez/snapshot-generation-integrity-20260929
to
dev
October 7, 2026 21:31
This was referenced Oct 8, 2026
A filesystem-only workload-start clone has no persistent workload PID or per-workload machine ID. Permit those identities to be absent only for the explicit flat-ext4 boot format while retaining its mandatory runtime hook and the existing quiesce boundary. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The previous OpenVMM source rejects streamed distro block devices because its snapshot-capable path admits only regular files. Pin the separate no-follow, read-only distro exception without changing scratch or the native snapshot format. The pinned revision applies that change on top of the egress protocol selector revision that dev already pins, so no egress change is dropped. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
A read-only external distro uses a no-follow block node and stays outside the portable snapshot. The caller must authenticate and lease the immutable generation, resolve the current device on each attach, and reject recycled paths; writable scratch remains file-backed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Enrique Saurez (esaurez)
force-pushed
the
esaurez/streamed-snapshot-preprofile-20261006
branch
from
October 9, 2026 18:36
5cbfe06 to
a28a04a
Compare
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
It combines restore-boundary changes with an exact OpenVMM pin whose upstream dependencies remain unmerged and whose current-head CI is still running.
0 open findings
What changed in this PR
Adds filesystem-only streamed microVM snapshot support while preserving fail-closed restore behavior.
Changes:
- Allows flat-ext4 restores without workload process identity.
- Pins OpenVMM’s read-only distro block-device support.
- Documents the native snapshot and external distro contracts.
| File | Description |
|---|---|
guest/common/nvx-snapshot |
Relaxes identity requirements only for flat-ext4. |
scripts/test_microvm_tests.py |
Tests filesystem-only identity handling. |
doc/design/snapshot-and-restore.md |
Documents filesystem-only and external block contracts. |
openvmm |
Pins revision 4b8e9bae. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This was referenced Oct 9, 2026
Pedro Henrique Penna (ppenna)
marked this pull request as draft
October 13, 2026 01:43
Contributor
Author
|
Closing for now: the plan in #535 doesn't need snapshots of streamed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A filesystem-only, agent-ready guest has no persistent workload PID, while a streamed immutable distro is attached as a read-only block device. Neither a host save RPC nor a guessed scratch or distro path is an acceptable substitute for guest-triggered capture.
Change
dev's time ABI restore, and fail closed on other modes.4b8e9baefor no-follow, read-only distro block attachment while keeping scratch file-backed. It is Accept read-only streamed distro blocks for microVM snapshots nanvix/openvmm#120's two commits applied unchanged to Harden source provenance integrity #124's head3796991d, whichdevalready pins, sodev's egress protocol selectors are kept. Its tree equals the three-way merge of microvm: integrate MP-table boot and restore #120's heade7eed1e3and3796991d. Re-pin tomainafter both OpenVMM PRs merge.Base
Rebased onto
dev57b4a428. #261 has merged, so its copied commit was dropped and this PR now contains only its own three commits. The filesystem-only and documentation commits applied unchanged; only the pin commit changed, fromfae502e8to the revision above.fae502e8remains reachable atesaurez/nvx-streamed-block-snapshot-pre-main-rebase-20261009.Validation
nvx.py verify, shellcheck, shfmt, ruff check and format, pyright for Linux and Windows, the Specula tests (25), the validate-nvx unit tests (826 run, 13 skipped), the host-connect tests, and the CLI help checks passed in a non-root Python 3.10 container. In that container onescripts/test_adversarial.pysubtest (test_contained_native_process_preserves_child_signal_status,sigkill) fails with1 != -9; it fails identically on unmodifieddev75f5ba35, so it is environmental and left to CI.4b8e9bae, Linux, Rust 1.95.0: clippy with-D warningsand rustdoc fordisk_blockdevice,openvmm_entry,openvmm_helpers, andnet_backend_resources; theopenvmm_entry(220) andnet_backend_resources(18) unit tests passed. Accept read-only streamed distro blocks for microVM snapshots nanvix/openvmm#120 lists its own Linux and Windows results.dev8e1b6115with OpenVMMfae502e8) passed all 7 streamed-distro runs, and all 8 file-backed GPT runs, of a 15-run guest-triggered capture and restore matrix on an isolated MSHV host. Streamed runs attached the read-only distro as an overlaybd TCMU block node and covered reusableworkload-startclones and single-useinstance-checkpointcontinuations; restore in place, after a portable export without a distro copy, and after a round trip through a Blob storage emulator; and one capture requested while a guest command was running. Each run checked source termination, authenticated reconnect with fresh identities, restored memory and scratch sentinels, guest execution, a repeated restore, and complete teardown. That host's hypervisor cannot presentamd.genoa.v1, so the runs launched with the development--cpu-profile host.