From 1b32e2f8b2afefe436a42c4dfa35c9d9a3705835 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Fri, 2 Dec 2022 14:44:40 +0100 Subject: [PATCH] vm-migration: Simplify SnapshotDataSection structure Signed-off-by: Sebastien Boeuf --- vm-migration/src/lib.rs | 25 +++++++++---------------- vmm/src/vm.rs | 4 +--- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/vm-migration/src/lib.rs b/vm-migration/src/lib.rs index 044ae0673..5aa397159 100644 --- a/vm-migration/src/lib.rs +++ b/vm-migration/src/lib.rs @@ -80,10 +80,7 @@ pub trait Pausable { /// Splitting a component migration data into different sections /// allows for easier and forward compatible extensions. #[derive(Clone, Default, Deserialize, Serialize)] -pub struct SnapshotDataSection { - /// The section serialized snapshot. - pub snapshot: Vec, -} +pub struct SnapshotDataSection(pub Vec); impl SnapshotDataSection { /// Generate the state data from the snapshot data @@ -91,7 +88,7 @@ impl SnapshotDataSection { where T: Deserialize<'a>, { - serde_json::from_slice(&self.snapshot) + serde_json::from_slice(&self.0) .map_err(|e| MigratableError::Restore(anyhow!("Error deserialising: {}", e))) } @@ -100,12 +97,8 @@ impl SnapshotDataSection { where T: Versionize + VersionMapped, { - T::deserialize( - &mut self.snapshot.as_slice(), - &T::version_map(), - VMM_VERSION, - ) - .map_err(|e| MigratableError::Restore(anyhow!("Error deserialising: {}", e))) + T::deserialize(&mut self.0.as_slice(), &T::version_map(), VMM_VERSION) + .map_err(|e| MigratableError::Restore(anyhow!("Error deserialising: {}", e))) } /// Create from state that can be serialized @@ -113,10 +106,10 @@ impl SnapshotDataSection { where T: Serialize, { - let snapshot = serde_json::to_vec(state) + let data = serde_json::to_vec(state) .map_err(|e| MigratableError::Snapshot(anyhow!("Error serialising: {}", e)))?; - let snapshot_data = SnapshotDataSection { snapshot }; + let snapshot_data = SnapshotDataSection(data); Ok(snapshot_data) } @@ -126,12 +119,12 @@ impl SnapshotDataSection { where T: Versionize + VersionMapped, { - let mut snapshot = Vec::new(); + let mut data = Vec::new(); state - .serialize(&mut snapshot, &T::version_map(), VMM_VERSION) + .serialize(&mut data, &T::version_map(), VMM_VERSION) .map_err(|e| MigratableError::Snapshot(anyhow!("Error serialising: {}", e)))?; - let snapshot_data = SnapshotDataSection { snapshot }; + let snapshot_data = SnapshotDataSection(data); Ok(snapshot_data) } diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index a2a60c46e..df4b71894 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -2521,9 +2521,7 @@ impl Snapshottable for Vm { vm_snapshot.add_snapshot(self.memory_manager.lock().unwrap().snapshot()?); vm_snapshot.add_snapshot(self.device_manager.lock().unwrap().snapshot()?); - vm_snapshot.add_data_section(SnapshotDataSection { - snapshot: vm_snapshot_data, - }); + vm_snapshot.add_data_section(SnapshotDataSection(vm_snapshot_data)); event!("vm", "snapshotted"); Ok(vm_snapshot)