Skip to content

Commit fd8040c

Browse files
committed
Checkpoint 2
1 parent 16cf8f3 commit fd8040c

File tree

2 files changed

+191
-316
lines changed

2 files changed

+191
-316
lines changed

src/vmm/src/persist.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use crate::device_manager::persist::ACPIDeviceManagerState;
3131
use crate::device_manager::persist::{DevicePersistError, DeviceStates};
3232
use crate::logger::{info, warn};
3333
use crate::resources::VmResources;
34-
use crate::snapshot::Snapshot;
34+
use crate::snapshot::{Snapshot, SnapshotHdr};
3535
use crate::vmm_config::boot_source::BootSourceConfig;
3636
use crate::vmm_config::instance_info::InstanceInfo;
3737
use crate::vmm_config::machine_config::{HugePageConfig, MachineConfigUpdate, VmConfigError};
@@ -191,9 +191,10 @@ fn snapshot_state_to_file(
191191
.open(snapshot_path)
192192
.map_err(|err| SnapshotBackingFile("open", err))?;
193193

194-
let snapshot = Snapshot::new(SNAPSHOT_VERSION);
194+
let snapshot_hdr = SnapshotHdr::new(SNAPSHOT_VERSION);
195+
let snapshot = Snapshot::new(snapshot_hdr, microvm_state);
195196
snapshot
196-
.save(&mut snapshot_file, microvm_state)
197+
.save(&mut snapshot_file)
197198
.map_err(SerializeMicrovmState)?;
198199
snapshot_file
199200
.flush()
@@ -475,15 +476,14 @@ pub enum SnapshotStateFromFileError {
475476
fn snapshot_state_from_file(
476477
snapshot_path: &Path,
477478
) -> Result<MicrovmState, SnapshotStateFromFileError> {
478-
let snapshot = Snapshot::new(SNAPSHOT_VERSION);
479479
let mut snapshot_reader =
480480
File::open(snapshot_path).map_err(SnapshotStateFromFileError::Open)?;
481481
let metadata = std::fs::metadata(snapshot_path).map_err(SnapshotStateFromFileError::Meta)?;
482482
let snapshot_len = u64_to_usize(metadata.len());
483-
let state: MicrovmState = snapshot
484-
.load_with_version_check(&mut snapshot_reader, snapshot_len)
483+
let state: Snapshot<MicrovmState> = Snapshot::load(&mut snapshot_reader, snapshot_len)
485484
.map_err(SnapshotStateFromFileError::Load)?;
486-
Ok(state)
485+
486+
Ok(state.data)
487487
}
488488

489489
/// Error type for [`guest_memory_from_file`].
@@ -732,10 +732,14 @@ mod tests {
732732
};
733733

734734
let mut buf = vec![0; 10000];
735-
Snapshot::serialize(&mut buf.as_mut_slice(), &microvm_state).unwrap();
736735

737-
let restored_microvm_state: MicrovmState =
738-
Snapshot::deserialize(&mut buf.as_slice()).unwrap();
736+
let snapshot_hdr = SnapshotHdr::new(Version::new(1, 0, 42));
737+
let snapshot = Snapshot::new(snapshot_hdr, microvm_state);
738+
snapshot.save(&mut buf.as_mut_slice()).unwrap();
739+
740+
let restored_snapshot: Snapshot<MicrovmState> =
741+
Snapshot::load(&mut buf.as_slice(), buf.len()).unwrap();
742+
let restored_microvm_state = restored_snapshot.data;
739743

740744
assert_eq!(restored_microvm_state.vm_info, microvm_state.vm_info);
741745
assert_eq!(

0 commit comments

Comments
 (0)