From f9a0445c3ddf21870b03928f17dd0b7dfa427299 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 15 Apr 2020 18:18:53 +0100 Subject: [PATCH] vmm: vm: Remove device from configuration after unplug This ensures that a device that is removed will not reappear after a reboot. Signed-off-by: Rob Bradford --- vmm/src/vm.rs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 04b4455c0..2320f5fe2 100755 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -710,14 +710,25 @@ impl Vm { // ensure the device would not be created in case of a reboot. { let mut config = self.config.lock().unwrap(); + + // Remove if VFIO device if let Some(devices) = config.devices.as_mut() { - devices.retain(|dev| { - if let Some(dev_id) = &dev.id { - *dev_id != _id - } else { - true - } - }); + devices.retain(|dev| dev.id.as_ref() != Some(&_id)); + } + + // Remove if disk device + if let Some(disks) = config.disks.as_mut() { + disks.retain(|dev| dev.id.as_ref() != Some(&_id)); + } + + // Remove if net device + if let Some(net) = config.net.as_mut() { + net.retain(|dev| dev.id.as_ref() != Some(&_id)); + } + + // Remove if pmem device + if let Some(pmem) = config.pmem.as_mut() { + pmem.retain(|dev| dev.id.as_ref() != Some(&_id)); } }