From 01f0c1e313f6e5da63334bba4e30a996b43d041d Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Fri, 23 Apr 2021 10:55:05 +0100 Subject: [PATCH] vmm: Simplify memory state to support Versionize In order to support using Versionize for state structures it is necessary to use simpler, primitive, data types in the state definitions used for snapshot restore. Signed-off-by: Rob Bradford --- vmm/src/memory_manager.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index 3c6f755ee..fd6953df2 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -488,7 +488,7 @@ impl MemoryManager { self.guest_memory .memory() .read_exact_from( - region.start_addr, + GuestAddress(region.start_addr), &mut memory_region_file, region.size as usize, ) @@ -870,7 +870,7 @@ impl MemoryManager { if let Some(content) = &mut region.content { let mut memory_region_path = vm_snapshot_path.clone(); memory_region_path.push(content.clone()); - *content = memory_region_path; + *content = memory_region_path.to_str().unwrap().to_owned(); } } @@ -1928,10 +1928,9 @@ pub struct GuestAddressDef(pub u64); #[derive(Clone, Serialize, Deserialize)] pub struct MemoryRegion { - content: Option, - #[serde(with = "GuestAddressDef")] - start_addr: GuestAddress, - size: GuestUsize, + content: Option, + start_addr: u64, + size: u64, } #[derive(Serialize, Deserialize)] @@ -1974,8 +1973,8 @@ impl Snapshottable for MemoryManager { } memory_regions.push(MemoryRegion { - content, - start_addr: region.start_addr(), + content: content.map(|p| p.to_str().unwrap().to_owned()), + start_addr: region.start_addr().0, size: region.len(), }); @@ -2028,7 +2027,7 @@ impl Transportable for MemoryManager { guest_memory .write_all_to( - region.start_addr, + GuestAddress(region.start_addr), &mut memory_region_file, region.size as usize, )