Persist virtio state and reconstruct console attachments
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 1.9k
- Forks
- 238
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 100
Description
Tracking issue: MicroVM support and private snapshot restore.
Motivation
Restoring guest RAM alone is insufficient for a virtio device: negotiated state,
queue ownership, pending work, and interrupt state must agree with the guest.
Console support provides a concrete first consumer of a generic persistence
contract and makes buffered I/O and host-endpoint reconstruction observable.
Proposed Scope
- Define bounded, validated generic virtio device and queue persistence.
- Defer restored device activation until required state and attachments are ready,
with an explicit acknowledgment of activation success or failure. - Persist the console's buffered I/O under a documented save-boundary contract.
- Reconstruct host console endpoints rather than serializing process-local handles
or assuming an endpoint survives capture. - Include generic persistence and working console reconstruction in the same PR.
- Propagate quiesce and activation failures through the snapshot transaction.
Acceptance Criteria
- Generic state round trips preserve negotiated features, queue state, and
relevant interrupt/device status; malformed state is rejected without panics. - No restored device consumes descriptors or emits I/O before activation is
acknowledged, and a failed activation unwinds cleanly. - Console buffer tests verify the documented handling of bytes pending at the
save boundary, including empty and partially consumed buffers. - A VMM test captures and restores with active console I/O and verifies guest
progress and the expected byte sequence after endpoint reconstruction. - Missing or incompatible host endpoints produce a bounded failure and release
any resources already prepared.
Dependencies
Non-Goals
Acknowledged activation is a lifecycle requirement. Network and filesystem
persistence are separate consumers of this generic contract.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with 00-microvm.md and review dependencies S03 (#4438) and F04 (#4425) before locating the snapshot, virtio, and console entry points. Done means generic state round-trips safely, activation and failure handling are bounded, console buffers follow the save-boundary contract, and active-I/O capture/restore verifies guest progress and expected bytes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100