--- 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 -- 1.7.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list