Skip to content

Commit 1349cf5

Browse files
committed
allow creation of snapshots of secret hidden VMs
To take snapshots of secret hidden VMs, we need to bounce guest memory through a userspace buffer. Reuse the `Bounce` wrapper type that is already in use for loading the guest kernel / initrd. Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
1 parent c1b0a9c commit 1349cf5

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/vmm/src/vstate/vm.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use std::collections::HashMap;
99
use std::fs::{File, OpenOptions};
1010
use std::io::Write;
11-
use std::os::fd::{AsRawFd, FromRawFd};
11+
use std::os::fd::{AsFd, AsRawFd, FromRawFd};
1212
use std::path::Path;
1313
use std::sync::Arc;
1414

@@ -26,7 +26,8 @@ use crate::persist::CreateSnapshotError;
2626
use crate::utils::u64_to_usize;
2727
use crate::vmm_config::snapshot::SnapshotType;
2828
use crate::vstate::memory::{
29-
Address, GuestMemory, GuestMemoryExtension, GuestMemoryMmap, GuestMemoryRegion, GuestRegionMmap,
29+
Address, GuestMemory, GuestMemoryExtension, GuestMemoryMmap, GuestMemoryRegion,
30+
GuestRegionMmap, MaybeBounce,
3031
};
3132
use crate::vstate::vcpu::VcpuError;
3233
use crate::{DirtyBitmap, Vcpu, mem_size_mib};
@@ -355,7 +356,8 @@ impl Vm {
355356
self.guest_memory().dump_dirty(&mut file, &dirty_bitmap)?;
356357
}
357358
SnapshotType::Full => {
358-
self.guest_memory().dump(&mut file)?;
359+
self.guest_memory()
360+
.dump(&mut MaybeBounce::new(file.as_fd(), self.secret_free()))?;
359361
self.reset_dirty_bitmap();
360362
self.guest_memory().reset_dirty();
361363
}

0 commit comments

Comments
 (0)