[PATCH V5 07/12] src/xenxs: Refactor code formating xm disk config

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



introduce function
  xenFormatXMDomainDisks(virConfPtr conf,.........);
which formats domain disks config instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@xxxxxxxxx>
---
 src/xenxs/xen_xm.c | 72 +++++++++++++++++++++++++++++++++---------------------
 1 file changed, 44 insertions(+), 28 deletions(-)

diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
index b4a7468..2c381f8 100644
--- a/src/xenxs/xen_xm.c
+++ b/src/xenxs/xen_xm.c
@@ -1907,6 +1907,49 @@ xenFormatXMCharDev(virConfPtr conf, virDomainDefPtr def)
 }
 
 
+static int
+xenFormatXMDomainDisks(virConfPtr conf, virDomainDefPtr def,
+                       int xendConfigVersion)
+{
+    virConfValuePtr diskVal = NULL;
+    size_t i = 0;
+    int hvm = STREQ(def->os.type, "hvm");
+
+    if (VIR_ALLOC(diskVal) < 0)
+        goto cleanup;
+
+    diskVal->type = VIR_CONF_LIST;
+    diskVal->list = NULL;
+
+    for (i = 0; i < def->ndisks; i++) {
+        if (xendConfigVersion == XEND_CONFIG_VERSION_3_0_2 &&
+            def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_CDROM &&
+            def->disks[i]->dst &&
+            STREQ(def->disks[i]->dst, "hdc")) {
+            continue;
+        }
+
+        if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY)
+            continue;
+
+        if (xenFormatXMDisk(diskVal, def->disks[i],
+                            hvm, xendConfigVersion) < 0)
+            goto cleanup;
+    }
+
+    if (diskVal->list != NULL) {
+        int ret = virConfSetValue(conf, "disk", diskVal);
+        diskVal = NULL;
+        if (ret < 0)
+            goto cleanup;
+    }
+
+    return 0;
+
+ cleanup:
+    virConfFreeValue(diskVal);
+    return -1;
+}
 /* Computing the vcpu_avail bitmask works because MAX_VIRT_CPUS is
    either 32, or 64 on a platform where long is big enough.  */
 verify(MAX_VIRT_CPUS <= sizeof(1UL) * CHAR_BIT);
@@ -1920,7 +1963,6 @@ xenFormatXM(virConnectPtr conn,
     int hvm = 0;
     size_t i;
     char *cpus = NULL;
-    virConfValuePtr diskVal = NULL;
     virConfValuePtr netVal = NULL;
 
     if (!(conf = virConfNew()))
@@ -2188,33 +2230,8 @@ xenFormatXM(virConnectPtr conn,
         }
     }
 
-    /* analyze of the devices */
-    if (VIR_ALLOC(diskVal) < 0)
+    if (xenFormatXMDomainDisks(conf, def, xendConfigVersion) < 0)
         goto cleanup;
-    diskVal->type = VIR_CONF_LIST;
-    diskVal->list = NULL;
-
-    for (i = 0; i < def->ndisks; i++) {
-        if (xendConfigVersion == XEND_CONFIG_VERSION_3_0_2 &&
-            def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_CDROM &&
-            def->disks[i]->dst &&
-            STREQ(def->disks[i]->dst, "hdc")) {
-            continue;
-        }
-        if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY)
-            continue;
-
-        if (xenFormatXMDisk(diskVal, def->disks[i],
-                            hvm, xendConfigVersion) < 0)
-            goto cleanup;
-    }
-    if (diskVal->list != NULL) {
-        int ret = virConfSetValue(conf, "disk", diskVal);
-        diskVal = NULL;
-        if (ret < 0)
-            goto cleanup;
-    }
-    VIR_FREE(diskVal);
 
     if (VIR_ALLOC(netVal) < 0)
         goto cleanup;
@@ -2258,7 +2275,6 @@ xenFormatXM(virConnectPtr conn,
     return conf;
 
  cleanup:
-    virConfFreeValue(diskVal);
     virConfFreeValue(netVal);
     VIR_FREE(cpus);
     if (conf)
-- 
1.8.4.5

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]