From 5c6139bbffefa89f84f4a791cfe137b5016c6beb Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Wed, 4 Aug 2021 17:03:20 +0200 Subject: [PATCH] vmm: Finalize migration support for all devices Make sure the DeviceManager is triggered for all migration operations. The dirty pages are merged from MemoryManager and DeviceManager before to be sent up to the Vmm in lib.rs. Signed-off-by: Sebastien Boeuf --- vmm/src/vm.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index c8b6a34d6..e263e70a3 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -2525,15 +2525,20 @@ impl Transportable for Vm { impl Migratable for Vm { fn start_dirty_log(&mut self) -> std::result::Result<(), MigratableError> { - self.memory_manager.lock().unwrap().start_dirty_log() + self.memory_manager.lock().unwrap().start_dirty_log()?; + self.device_manager.lock().unwrap().start_dirty_log() } fn stop_dirty_log(&mut self) -> std::result::Result<(), MigratableError> { - self.memory_manager.lock().unwrap().stop_dirty_log() + self.memory_manager.lock().unwrap().stop_dirty_log()?; + self.device_manager.lock().unwrap().stop_dirty_log() } fn dirty_log(&mut self) -> std::result::Result { - self.memory_manager.lock().unwrap().dirty_log() + Ok(MemoryRangeTable::new_from_tables(vec![ + self.memory_manager.lock().unwrap().dirty_log()?, + self.device_manager.lock().unwrap().dirty_log()?, + ])) } }