Split out the code into a separate function named
virDomainDefFormatBlkiotune and use virXMLFormatElement.

Signed-off-by: Peter Krempa <pkre...@redhat.com>
---
 src/conf/domain_conf.c | 89 ++++++++++++++++++++++--------------------
 1 file changed, 46 insertions(+), 43 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 5d745f8bce..01ec5c8ca9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -27696,6 +27696,51 @@ virDomainVsockDefFormat(virBufferPtr buf,
 }


+static int
+virDomainDefFormatBlkiotune(virBufferPtr buf,
+                            virDomainDefPtr def)
+{
+    VIR_AUTOCLEAN(virBuffer) childrenBuf = VIR_BUFFER_INITIALIZER;
+    ssize_t n;
+
+    virBufferSetChildIndent(&childrenBuf, buf);
+    if (def->blkio.weight)
+        virBufferAsprintf(&childrenBuf, "<weight>%u</weight>\n",
+                          def->blkio.weight);
+
+    for (n = 0; n < def->blkio.ndevices; n++) {
+        virBlkioDevicePtr dev = &def->blkio.devices[n];
+
+        if (!dev->weight && !dev->riops && !dev->wiops &&
+            !dev->rbps && !dev->wbps)
+            continue;
+        virBufferAddLit(&childrenBuf, "<device>\n");
+        virBufferAdjustIndent(&childrenBuf, 2);
+        virBufferEscapeString(&childrenBuf, "<path>%s</path>\n",
+                              dev->path);
+        if (dev->weight)
+            virBufferAsprintf(&childrenBuf, "<weight>%u</weight>\n",
+                              dev->weight);
+        if (dev->riops)
+            virBufferAsprintf(&childrenBuf, 
"<read_iops_sec>%u</read_iops_sec>\n",
+                              dev->riops);
+        if (dev->wiops)
+            virBufferAsprintf(&childrenBuf, 
"<write_iops_sec>%u</write_iops_sec>\n",
+                              dev->wiops);
+        if (dev->rbps)
+            virBufferAsprintf(&childrenBuf, 
"<read_bytes_sec>%llu</read_bytes_sec>\n",
+                              dev->rbps);
+        if (dev->wbps)
+            virBufferAsprintf(&childrenBuf, 
"<write_bytes_sec>%llu</write_bytes_sec>\n",
+                              dev->wbps);
+        virBufferAdjustIndent(&childrenBuf, -2);
+        virBufferAddLit(&childrenBuf, "</device>\n");
+    }
+
+    return virXMLFormatElement(buf, "blkiotune", NULL, &childrenBuf);
+}
+
+
 /* This internal version appends to an existing buffer
  * (possibly with auto-indent), rather than flattening
  * to string.
@@ -27797,51 +27842,9 @@ virDomainDefFormatInternal(virDomainDefPtr def,
     virBufferAsprintf(buf, "<currentMemory unit='KiB'>%llu</currentMemory>\n",
                       def->mem.cur_balloon);

-    /* start format blkiotune */
-    virBufferSetChildIndent(&childrenBuf, buf);
-    if (def->blkio.weight)
-        virBufferAsprintf(&childrenBuf, "<weight>%u</weight>\n",
-                          def->blkio.weight);
-
-    for (n = 0; n < def->blkio.ndevices; n++) {
-        virBlkioDevicePtr dev = &def->blkio.devices[n];
-
-        if (!dev->weight && !dev->riops && !dev->wiops &&
-            !dev->rbps && !dev->wbps)
-            continue;
-        virBufferAddLit(&childrenBuf, "<device>\n");
-        virBufferAdjustIndent(&childrenBuf, 2);
-        virBufferEscapeString(&childrenBuf, "<path>%s</path>\n",
-                              dev->path);
-        if (dev->weight)
-            virBufferAsprintf(&childrenBuf, "<weight>%u</weight>\n",
-                              dev->weight);
-        if (dev->riops)
-            virBufferAsprintf(&childrenBuf, 
"<read_iops_sec>%u</read_iops_sec>\n",
-                              dev->riops);
-        if (dev->wiops)
-            virBufferAsprintf(&childrenBuf, 
"<write_iops_sec>%u</write_iops_sec>\n",
-                              dev->wiops);
-        if (dev->rbps)
-            virBufferAsprintf(&childrenBuf, 
"<read_bytes_sec>%llu</read_bytes_sec>\n",
-                              dev->rbps);
-        if (dev->wbps)
-            virBufferAsprintf(&childrenBuf, 
"<write_bytes_sec>%llu</write_bytes_sec>\n",
-                              dev->wbps);
-        virBufferAdjustIndent(&childrenBuf, -2);
-        virBufferAddLit(&childrenBuf, "</device>\n");
-    }
-
-    if (virBufferCheckError(&childrenBuf) < 0)
+    if (virDomainDefFormatBlkiotune(buf, def) < 0)
         goto error;

-    if (virBufferUse(&childrenBuf)) {
-        virBufferAddLit(buf, "<blkiotune>\n");
-        virBufferAddBuffer(buf, &childrenBuf);
-        virBufferAddLit(buf, "</blkiotune>\n");
-    }
-    virBufferFreeAndReset(&childrenBuf);
-
     if (virDomainMemtuneFormat(buf, &def->mem) < 0)
         goto error;

-- 
2.20.1

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

Reply via email to