diff --git a/vm-migration/src/protocol.rs b/vm-migration/src/protocol.rs index c18eeeb70..6f078c5fe 100644 --- a/vm-migration/src/protocol.rs +++ b/vm-migration/src/protocol.rs @@ -3,7 +3,10 @@ // SPDX-License-Identifier: Apache-2.0 // -use crate::MigratableError; +use crate::{MigratableError, VersionMapped}; +use std::io::{Read, Write}; +use versionize::{VersionMap, Versionize, VersionizeResult}; +use versionize_derive::Versionize; use vm_memory::ByteValued; // Migration protocol @@ -28,8 +31,6 @@ use vm_memory::ByteValued; // The destination can at any time send an "error response" to cancel // The source can at any time send an "abandon request" to cancel -use std::io::{Read, Write}; - #[repr(u16)] #[derive(Copy, Clone)] pub enum Command { @@ -173,16 +174,19 @@ impl Response { unsafe impl ByteValued for Response {} #[repr(C)] +#[derive(Clone, Versionize)] pub struct MemoryRange { pub gpa: u64, pub length: u64, } -#[derive(Default)] +#[derive(Clone, Default, Versionize)] pub struct MemoryRangeTable { data: Vec, } +impl VersionMapped for MemoryRangeTable {} + impl MemoryRangeTable { pub fn from_bitmap(bitmap: Vec, start_addr: u64, page_size: u64) -> Self { let mut table = MemoryRangeTable::default();