[libvirt] [PATCH 4/4] Autostart domains using virDomainObjStart

Cole Robinson crobinso at redhat.com
Thu May 20 19:08:38 UTC 2010


On 05/20/2010 08:54 AM, Jiri Denemark wrote:
> ---
>  src/qemu/qemu_driver.c |   34 ++++++++++++++++++----------------
>  1 files changed, 18 insertions(+), 16 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 8f5cae1..d40e29a 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -626,29 +626,31 @@ qemuAutostartDomain(void *payload, const char *name ATTRIBUTE_UNUSED, void *opaq
>  {
>      virDomainObjPtr vm = payload;
>      struct qemuAutostartData *data = opaque;
> +    virErrorPtr err;
>  
>      virDomainObjLock(vm);
> -    if (vm->autostart &&
> -        !virDomainObjIsActive(vm)) {
> -        int ret;
> -
> -        virResetLastError();
> -        ret = qemudStartVMDaemon(data->conn, data->driver, vm, NULL, -1);
> -        if (ret < 0) {
> -            virErrorPtr err = virGetLastError();
> +    virResetLastError();
> +    if (qemuDomainObjBeginJobWithDriver(data->driver, vm) < 0) {
> +        err = virGetLastError();
> +        VIR_ERROR(_("Failed to start job on VM '%s': %s"),
> +                  vm->def->name,
> +                  err ? err->message : "");
> +    } else {
> +        if (vm->autostart &&
> +            !virDomainObjIsActive(vm) &&
> +            qemudDomainObjStart(data->conn, data->driver, vm) < 0) {
> +            err = virGetLastError();
>              VIR_ERROR(_("Failed to autostart VM '%s': %s"),
>                        vm->def->name,
>                        err ? err->message : "");
> -        } else {
> -            virDomainEventPtr event =
> -                virDomainEventNewFromObj(vm,
> -                                         VIR_DOMAIN_EVENT_STARTED,
> -                                         VIR_DOMAIN_EVENT_STARTED_BOOTED);
> -            if (event)
> -                qemuDomainEventQueue(data->driver, event);
>          }
> +
> +        if (qemuDomainObjEndJob(vm) == 0)
> +            vm = NULL;
>      }
> -    virDomainObjUnlock(vm);
> +
> +    if (vm)
> +        virDomainObjUnlock(vm);
>  }
>  
>  static void

ACK

- Cole




More information about the libvir-list mailing list