]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Factor out def assignment to existing domain from virDomainAssignDef
authorJiri Denemark <jdenemar@redhat.com>
Thu, 20 May 2010 09:36:24 +0000 (11:36 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 21 May 2010 07:25:42 +0000 (09:25 +0200)
We need to be able to assign new def to an existing virDomainObj which
is already locked. This patch factors out the relevant code from
virDomainAssignDef into virDomainObjAssignDef.

src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms

index 20c9c51883e877f27b45cdec43c6d3ffec6fd56c..c77ee599e5149414d64178a37c4c76af62ffa73f 100644 (file)
@@ -808,6 +808,26 @@ static virDomainObjPtr virDomainObjNew(virCapsPtr caps)
     return domain;
 }
 
+void virDomainObjAssignDef(virDomainObjPtr domain,
+                           const virDomainDefPtr def,
+                           bool live)
+{
+    if (!virDomainObjIsActive(domain)) {
+        if (live) {
+            /* save current configuration to be restored on domain shutdown */
+            if (!domain->newDef)
+                domain->newDef = domain->def;
+            domain->def = def;
+        } else {
+            virDomainDefFree(domain->def);
+            domain->def = def;
+        }
+    } else {
+        virDomainDefFree(domain->newDef);
+        domain->newDef = def;
+    }
+}
+
 virDomainObjPtr virDomainAssignDef(virCapsPtr caps,
                                    virDomainObjListPtr doms,
                                    const virDomainDefPtr def,
@@ -817,21 +837,7 @@ virDomainObjPtr virDomainAssignDef(virCapsPtr caps,
     char uuidstr[VIR_UUID_STRING_BUFLEN];
 
     if ((domain = virDomainFindByUUID(doms, def->uuid))) {
-        if (!virDomainObjIsActive(domain)) {
-            if (live) {
-                /* save current configuration to be restored on domain shutdown */
-                if (!domain->newDef)
-                    domain->newDef = domain->def;
-                domain->def = def;
-            } else {
-                virDomainDefFree(domain->def);
-                domain->def = def;
-            }
-        } else {
-            virDomainDefFree(domain->newDef);
-            domain->newDef = def;
-        }
-
+        virDomainObjAssignDef(domain, def, live);
         return domain;
     }
 
index a7206d33ba8928d4abe8d6c21ef1128f08436f96..9f87fc514af916c8d93eff51a2ab25468fd39327 100644 (file)
@@ -954,6 +954,9 @@ virDomainObjPtr virDomainAssignDef(virCapsPtr caps,
                                    virDomainObjListPtr doms,
                                    const virDomainDefPtr def,
                                    bool live);
+void virDomainObjAssignDef(virDomainObjPtr domain,
+                           const virDomainDefPtr def,
+                           bool live);
 void virDomainRemoveInactive(virDomainObjListPtr doms,
                              virDomainObjPtr dom);
 
index bdeab0f56a5cfe8c787218d526a56f3cafbce754..1594a0859bd68838c834248f97359709e147456a 100644 (file)
@@ -215,6 +215,7 @@ virDomainSnapshotObjUnref;
 virDomainSnapshotDefParseString;
 virDomainSnapshotDefFormat;
 virDomainSnapshotAssignDef;
+virDomainObjAssignDef;
 
 
 # domain_event.h