mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-02-22 03:12:27 +00:00
vmm: Release the old vm before build a new one
In vm_reboot, while build the new vm, the old one pointed by self.vm is not released, that is, the tap opened by self.vm is not closed either. As a result, the associated dev name slot in host kernel is still in use state, which prevents the new build from picking it up as the new opened tap's name, but to use the name in next slot finally. Call self.vm_shutdown instead here since it has call take() on vm reference, which could ensure the old vm is destructed before the new vm build. Signed-off-by: Cathy Zhang <cathy.zhang@intel.com>
This commit is contained in:
parent
b3388c343d
commit
5cd4f5daeb
@ -255,16 +255,15 @@ impl Vmm {
|
||||
// Without ACPI, a reset is equivalent to a shutdown
|
||||
#[cfg(not(feature = "acpi"))]
|
||||
{
|
||||
if let Some(ref mut vm) = self.vm {
|
||||
vm.shutdown()?;
|
||||
return Ok(());
|
||||
if self.vm.is_some() {
|
||||
return self.vm_shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
// First we stop the current VM and create a new one.
|
||||
if let Some(ref mut vm) = self.vm {
|
||||
let config = vm.get_config();
|
||||
vm.shutdown()?;
|
||||
self.vm_shutdown()?;
|
||||
|
||||
let exit_evt = self.exit_evt.try_clone().map_err(VmError::EventFdClone)?;
|
||||
let reset_evt = self.reset_evt.try_clone().map_err(VmError::EventFdClone)?;
|
||||
|
Loading…
x
Reference in New Issue
Block a user