pub fn start_memory_dirty_log(&self) -> std::result::Result<(), MigratableError> {
        for r in &self.guest_ram_mappings {
            self.vm.get_dirty_log(r.slot, r.size).map_err(|e| {
                MigratableError::MigrateSend(anyhow!("Error getting VM dirty log {}", e))
            })?;
        }
        Ok(())
    }
// The dirty log is cleared by the kernel by calling the KVM_GET_DIRTY_LOG ioctl.
// Just before we do a bulk copy we want to clear the dirty log so that
// pages touched during our bulk copy are tracked.
The dirty log is cleared by the kernel by calling the KVM_GET_DIRTY_LOG ioctl.
Just before we do a bulk copy we want to clear the dirty log so that
pages touched during our bulk copy are tracked.
The dirty log is cleared by the kernel by calling the KVM_GET_DIRTY_LOG ioctl . Just before we do a bulk copy we want to clear the dirty log so that pages touched during our bulk copy are tracked .
pub fn start_memory_dirty_log(&self) -> std::result::Result<(), MigratableError> {
        for r in &self.guest_ram_mappings {
            self.vm.get_dirty_log(r.slot, r.size).map_err(|e| {
                MigratableError::MigrateSend(anyhow!("Error getting VM dirty log {}", e))
            })?;
        }
        Ok(())
    }
pub fn start_memory_dirty_log ( & self ) -> std :: result :: Result < ( ) , MigratableError > { for r in & self . guest_ram_mappings { self . vm . get_dirty_log ( r . slot , r . size ) . map_err ( | e | { MigratableError :: MigrateSend ( anyhow ! ( " " e ) ) } ) ? ; } Ok ( ( ) ) }
The dirty log is cleared by the kernel by calling the KVM_GET_DIRTY_LOG ioctl.
The dirty log is cleared by the kernel by calling the KVM_GET_DIRTY_LOG ioctl .
&self
&self