]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
virDomainRestore: Don't keep transient domains around
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 23 Sep 2015 12:13:53 +0000 (14:13 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 24 Sep 2015 08:52:38 +0000 (10:52 +0200)
So while working on my previous patches, I've noticed that
virDomainRestore implementation in qemu and test drivers has the
same problem as I am fixing.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c
src/test/test_driver.c

index 3532973c79da52e7db43b9416f6f57fc1ba963f9..562a0b6d2786fb9a427e88dc3ab0f197bd15f9e1 100644 (file)
@@ -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;
index 01ab1e3ccc68d02628e7b636c8473b71cc8ac502..9ccd567868f119a5e0ef977178ccae1cd316f502 100644 (file)
@@ -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,