diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 3532973c79..562a0b6d27 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6828,8 +6828,6 @@ qemuDomainRestoreFlags(virConnectPtr conn, VIR_WARN("Failed to close %s", path); qemuDomainObjEndJob(driver, vm); - if (ret < 0) - qemuDomainRemoveInactive(driver, vm); cleanup: virDomainDefFree(def); @@ -6837,6 +6835,8 @@ qemuDomainRestoreFlags(virConnectPtr conn, VIR_FREE(xml); VIR_FREE(xmlout); virFileWrapperFdFree(wrapperFd); + if (vm && ret < 0) + qemuDomainRemoveInactive(driver, vm); virDomainObjEndAPI(&vm); virNWFilterUnlockFilterUpdates(); return ret; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 01ab1e3ccc..9ccd567868 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2132,8 +2132,13 @@ testDomainRestoreFlags(virConnectPtr conn, goto cleanup; def = NULL; - if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_RESTORED) < 0) + if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_RESTORED) < 0) { + if (!dom->persistent) { + virDomainObjListRemove(privconn->domains, dom); + dom = NULL; + } goto cleanup; + } event = virDomainEventLifecycleNewFromObj(dom, VIR_DOMAIN_EVENT_STARTED,