vm-virtio: mem: Expect an identifier upon device creation

This identifier is chosen from the DeviceManager so that it will manage
all identifiers across the VM, which will ensure uniqueness.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
Sebastien Boeuf
2020-04-27 13:44:43 +02:00
committed by Rob Bradford
parent 1592a9292f
commit 9b53044aae
2 changed files with 15 additions and 7 deletions
+7 -5
View File
@@ -1737,10 +1737,14 @@ impl DeviceManager {
) -> DeviceManagerResult<Vec<(VirtioDeviceArc, bool, Option<String>)>> {
let mut devices = Vec::new();
let mm = &self.memory_manager.lock().unwrap();
let mm = self.memory_manager.clone();
let mm = mm.lock().unwrap();
if let (Some(region), Some(resize)) = (&mm.virtiomem_region, &mm.virtiomem_resize) {
let id = String::from(MEM_DEVICE_NAME);
let virtio_mem_device = Arc::new(Mutex::new(
vm_virtio::Mem::new(
id.clone(),
&region,
resize
.try_clone()
@@ -1752,12 +1756,10 @@ impl DeviceManager {
devices.push((
Arc::clone(&virtio_mem_device) as VirtioDeviceArc,
false,
Some(String::from(MEM_DEVICE_NAME)),
Some(id),
));
let migratable = Arc::clone(&virtio_mem_device) as Arc<Mutex<dyn Migratable>>;
let id = migratable.lock().unwrap().id();
self.migratable_devices.push((id, migratable));
self.add_migratable_device(Arc::clone(&virtio_mem_device) as Arc<Mutex<dyn Migratable>>);
}
Ok(devices)