oxidecomputer / oxidecomputer/propolis

propolis-standalone could migrate time better

Open
#1,133 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug development migration
Dominant language
Rust
Stars
270
Forks
42
Avg merge
4d 5h
Merged PRs (30d)
6

Description

https://github.com/oxidecomputer/propolis/pull/359 added support for exporting guest time, importing it on the recipient side, tolerating skew between boot times across the source and destination systems, and wired it up into propolis-server. this stuff is all great, but in the mean time propolis-standalone got a fairly simple treatment of guest boot_hrtime.

I hadn't noticed this for a while, but this morning I kernel panicked my dev machine (me problem) and a VM I exported at ~60 days of uptime (this morning) now EINVALs on import because over in vmm_data_write_vmm_time we're rejecting src->vt_boot_hrtime > hrtime and will continue to for the next.. approximately sixty days.

I think just stuffing a VmTimeData into propolis-standalone's VmGlobalState would be basically fine on the export and import sides, but I haven't tested it and I'm chasing down something else at the moment...

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in bin/propolis-standalone/src/snapshot.rs around the guest boot_hrtime handling, then trace vmm_data_write_vmm_time and the existing VmTimeData and VmGlobalState paths. Compare export and import behavior with propolis-server's time migration support; done means a VM with long uptime can be exported and imported without the EINVAL caused by boot-time skew.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.