[libvirt] [PATCH] conf: Assign newDef of active domain as persistent conf if it is NULL

Osier Yang jyang at redhat.com
Thu Sep 1 13:44:47 UTC 2011


Libvirt loads the domain conf from status XML if it's running when
starting up. The problem is there is no record of the original conf.
(dom->newDef is NULL here).

So libvirt won't be able to restore the domain conf to original one
when destroying/shutdown. E.g.

1) attach a device without "--persistent"
2) restart libvirtd
3) destroy domain
4) start domain

One will see the the disk still exists.

This patch is to fix the peoblem by assigning persistent domain conf
to dom->newDef if it's NULL and the domain is running.
---
 src/conf/domain_conf.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 00212db..cbb99d3 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -10533,9 +10533,15 @@ static virDomainObjPtr virDomainLoadConfig(virCapsPtr caps,
     if ((dom = virDomainFindByUUID(doms, def->uuid))) {
         dom->autostart = autostart;
 
+        if (virDomainObjIsActive(dom) &&
+            !dom->newDef) {
+            virDomainObjAssignDef(dom, def, false);
+        } else {
+            virDomainDefFree(def);
+        }
+
         VIR_FREE(configFile);
         VIR_FREE(autostartLink);
-        virDomainDefFree(def);
         return dom;
     }
 
-- 
1.7.6




More information about the libvir-list mailing list