mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-10-01 11:05:46 +00:00
vmm: memory_manager: Simplify the MemoryManager structure
There's no need to duplicate the GuestMemory for snapshot purpose, as we always have a handle onto the GuestMemory through the guest_memory field. Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
parent
74485924b1
commit
c4dc7a583d
@ -37,8 +37,7 @@ use vm_device::BusDevice;
|
|||||||
use vm_memory::guest_memory::FileOffset;
|
use vm_memory::guest_memory::FileOffset;
|
||||||
use vm_memory::{
|
use vm_memory::{
|
||||||
mmap::MmapRegionError, Address, Bytes, Error as MmapError, GuestAddress, GuestAddressSpace,
|
mmap::MmapRegionError, Address, Bytes, Error as MmapError, GuestAddress, GuestAddressSpace,
|
||||||
GuestMemory, GuestMemoryAtomic, GuestMemoryError, GuestMemoryLoadGuard, GuestMemoryRegion,
|
GuestMemory, GuestMemoryAtomic, GuestMemoryError, GuestMemoryRegion, GuestUsize, MmapRegion,
|
||||||
GuestUsize, MmapRegion,
|
|
||||||
};
|
};
|
||||||
use vm_migration::{
|
use vm_migration::{
|
||||||
protocol::MemoryRangeTable, Migratable, MigratableError, Pausable, Snapshot,
|
protocol::MemoryRangeTable, Migratable, MigratableError, Pausable, Snapshot,
|
||||||
@ -129,7 +128,6 @@ pub struct MemoryManager {
|
|||||||
boot_ram: u64,
|
boot_ram: u64,
|
||||||
current_ram: u64,
|
current_ram: u64,
|
||||||
next_hotplug_slot: usize,
|
next_hotplug_slot: usize,
|
||||||
snapshot: Mutex<Option<GuestMemoryLoadGuard<GuestMemoryMmap>>>,
|
|
||||||
shared: bool,
|
shared: bool,
|
||||||
hugepages: bool,
|
hugepages: bool,
|
||||||
hugepage_size: Option<u64>,
|
hugepage_size: Option<u64>,
|
||||||
@ -774,7 +772,6 @@ impl MemoryManager {
|
|||||||
boot_ram: ram_size,
|
boot_ram: ram_size,
|
||||||
current_ram: ram_size,
|
current_ram: ram_size,
|
||||||
next_hotplug_slot: 0,
|
next_hotplug_slot: 0,
|
||||||
snapshot: Mutex::new(None),
|
|
||||||
shared: config.shared,
|
shared: config.shared,
|
||||||
hugepages: config.hugepages,
|
hugepages: config.hugepages,
|
||||||
hugepage_size: config.hugepage_size,
|
hugepage_size: config.hugepage_size,
|
||||||
@ -1944,9 +1941,6 @@ impl Snapshottable for MemoryManager {
|
|||||||
&MemoryManagerSnapshotData { memory_regions },
|
&MemoryManagerSnapshotData { memory_regions },
|
||||||
)?);
|
)?);
|
||||||
|
|
||||||
let mut memory_snapshot = self.snapshot.lock().unwrap();
|
|
||||||
*memory_snapshot = Some(guest_memory);
|
|
||||||
|
|
||||||
Ok(memory_manager_snapshot)
|
Ok(memory_manager_snapshot)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1959,7 +1953,7 @@ impl Transportable for MemoryManager {
|
|||||||
) -> result::Result<(), MigratableError> {
|
) -> result::Result<(), MigratableError> {
|
||||||
let vm_memory_snapshot_path = url_to_path(destination_url)?;
|
let vm_memory_snapshot_path = url_to_path(destination_url)?;
|
||||||
|
|
||||||
if let Some(guest_memory) = &*self.snapshot.lock().unwrap() {
|
let guest_memory = self.guest_memory.memory();
|
||||||
for region in self.snapshot_memory_regions.iter() {
|
for region in self.snapshot_memory_regions.iter() {
|
||||||
if let Some(content) = ®ion.content {
|
if let Some(content) = ®ion.content {
|
||||||
let mut memory_region_path = vm_memory_snapshot_path.clone();
|
let mut memory_region_path = vm_memory_snapshot_path.clone();
|
||||||
@ -1982,7 +1976,6 @@ impl Transportable for MemoryManager {
|
|||||||
.map_err(|e| MigratableError::MigrateSend(e.into()))?;
|
.map_err(|e| MigratableError::MigrateSend(e.into()))?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user