From e0037c2ee821feffd891a5b2f5ac8d6d6f3643f9 Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Thu, 20 May 2010 12:02:58 +0200 Subject: [PATCH] Autostart domains using virDomainObjStart --- src/qemu/qemu_driver.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f274b2e0ea..2f644c974c 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 : _("unknown error")); + } 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 : _("unknown error")); - } 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 -- GitLab