[libvirt] [PATCH] Fix cleanup on VM state after failed QEMU startup

Daniel Veillard veillard at redhat.com
Mon Feb 14 12:41:09 UTC 2011


On Mon, Feb 14, 2011 at 09:38:37AM +0000, Daniel P. Berrange wrote:
> Commit 9962e406c664ed5521f5aca500c860a331cb3979 introduced a
> problem where if the VM failed to startup, it would not be
> correctly cleaned up. Amongst other things the SELinux
> security label would not be removed, which prevents the VM
> from ever starting again.
> 
> The virDomainIsActive() check at the start of qemudShutdownVMDaemon
> checks for vm->def->id not being -1. By moving the assignment of the
> VM id to the start of qemudStartVMDaemon, we can ensure cleanup will
> occur on failure
> 
> * src/qemu/qemu_driver.c: Move initialization of 'vm->def->id'
>   so that qemudShutdownVMDaemon() will process the shutdown
> ---
>  src/qemu/qemu_driver.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 21d7779..d7c806b 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -2652,6 +2652,8 @@ static int qemudStartVMDaemon(virConnectPtr conn,
>      if (virDomainObjSetDefTransient(driver->caps, vm, true) < 0)
>          goto cleanup;
>  
> +    vm->def->id = driver->nextvmid++;
> +
>      /* Must be run before security labelling */
>      DEBUG0("Preparing host devices");
>      if (qemuPrepareHostDevices(driver, vm->def) < 0)
> @@ -2818,7 +2820,6 @@ static int qemudStartVMDaemon(virConnectPtr conn,
>      }
>  
>      DEBUG0("Building emulator command line");
> -    vm->def->id = driver->nextvmid++;
>      if (!(cmd = qemuBuildCommandLine(conn, driver, vm->def, priv->monConfig,
>                                       priv->monJSON != 0, qemuCmdFlags,
>                                       migrateFrom, stdin_fd,

  ACK,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list