Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx> --- src/qemu/qemu_process.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index e3d9f3d..19ecf59 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3339,6 +3339,7 @@ qemuProcessReconnect(void *opaque) size_t i; int ret; unsigned int stopFlags = 0; + bool jobStarted = false; VIR_FREE(data); @@ -3349,13 +3350,14 @@ qemuProcessReconnect(void *opaque) cfg = virQEMUDriverGetConfig(driver); priv = obj->privateData; + if (qemuDomainObjBeginJob(driver, obj, QEMU_JOB_MODIFY) < 0) + goto error; + jobStarted = true; + /* XXX If we ever gonna change pid file pattern, come up with * some intelligence here to deal with old paths. */ if (!(priv->pidfile = virPidFileBuildPath(cfg->stateDir, obj->def->name))) - goto killvm; - - if (qemuDomainObjBeginJob(driver, obj, QEMU_JOB_MODIFY) < 0) - goto killvm; + goto error; virNWFilterReadLockFilterUpdates(); @@ -3425,7 +3427,6 @@ qemuProcessReconnect(void *opaque) VIR_DEBUG("Finishing shutdown sequence for domain %s", obj->def->name); qemuProcessShutdownOrReboot(driver, obj); - qemuDomainObjEndJob(driver, obj); goto cleanup; } @@ -3498,12 +3499,18 @@ qemuProcessReconnect(void *opaque) if (virAtomicIntInc(&driver->nactive) == 1 && driver->inhibitCallback) driver->inhibitCallback(true, driver->inhibitOpaque); - qemuDomainObjEndJob(driver, obj); - goto cleanup; + cleanup: + if (jobStarted) + qemuDomainObjEndJob(driver, obj); + if (!virDomainObjIsActive(obj)) + qemuDomainRemoveInactive(driver, obj); + virDomainObjEndAPI(&obj); + virObjectUnref(conn); + virObjectUnref(cfg); + virNWFilterUnlockFilterUpdates(); + return; error: - qemuDomainObjEndJob(driver, obj); - killvm: if (virDomainObjIsActive(obj)) { /* We can't get the monitor back, so must kill the VM * to remove danger of it ending up running twice if @@ -3521,14 +3528,7 @@ qemuProcessReconnect(void *opaque) } qemuProcessStop(driver, obj, state, stopFlags); } - - qemuDomainRemoveInactive(driver, obj); - - cleanup: - virDomainObjEndAPI(&obj); - virObjectUnref(conn); - virObjectUnref(cfg); - virNWFilterUnlockFilterUpdates(); + goto cleanup; } static int -- 2.7.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list