render / rpms / libvirt

Forked from rpms/libvirt 5 months ago
Clone
Pablo Greco 40546a
From 2566a32fae64fa5cc8a3d3c30778d0ea7d8c4faa Mon Sep 17 00:00:00 2001
Pablo Greco 40546a
Message-Id: <2566a32fae64fa5cc8a3d3c30778d0ea7d8c4faa@dist-git>
Pablo Greco 40546a
From: Yi Min Zhao <zyimin@linux.ibm.com>
Pablo Greco 40546a
Date: Mon, 8 Apr 2019 10:57:24 +0200
Pablo Greco 40546a
Subject: [PATCH] conf: use virXMLFormatElement() in
Pablo Greco 40546a
 virDomainDeviceInfoFormat()
Pablo Greco 40546a
MIME-Version: 1.0
Pablo Greco 40546a
Content-Type: text/plain; charset=UTF-8
Pablo Greco 40546a
Content-Transfer-Encoding: 8bit
Pablo Greco 40546a
Pablo Greco 40546a
In order to add zPCI child element for PCI address, we update
Pablo Greco 40546a
virDomainDeviceInfoFormat() to format device info by helper function
Pablo Greco 40546a
virXMLFormatElement(). Then we could simply format zPCI address into
Pablo Greco 40546a
child buffer later.
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Yi Min Zhao <zyimin@linux.ibm.com>
Pablo Greco 40546a
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Pablo Greco 40546a
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Pablo Greco 40546a
Pablo Greco 40546a
(cherry picked from commit 0d6b87335c00451b0923ecc91d617f71e4135bf8)
Pablo Greco 40546a
Pablo Greco 40546a
https://bugzilla.redhat.com/show_bug.cgi?id=1508149
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Pablo Greco 40546a
Message-Id: <20190408085732.28684-8-abologna@redhat.com>
Pablo Greco 40546a
Reviewed-by: Laine Stump <laine@redhat.com>
Pablo Greco 40546a
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Pablo Greco 40546a
---
Pablo Greco 40546a
 src/conf/domain_conf.c | 40 ++++++++++++++++++++++------------------
Pablo Greco 40546a
 1 file changed, 22 insertions(+), 18 deletions(-)
Pablo Greco 40546a
Pablo Greco 40546a
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
Pablo Greco 40546a
index e62f78471c..bcb0558bc3 100644
Pablo Greco 40546a
--- a/src/conf/domain_conf.c
Pablo Greco 40546a
+++ b/src/conf/domain_conf.c
Pablo Greco 40546a
@@ -6447,6 +6447,8 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
Pablo Greco 40546a
                           virDomainDeviceInfoPtr info,
Pablo Greco 40546a
                           unsigned int flags)
Pablo Greco 40546a
 {
Pablo Greco 40546a
+    virBuffer attrBuf = VIR_BUFFER_INITIALIZER;
Pablo Greco 40546a
+
Pablo Greco 40546a
     if ((flags & VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT) && info->bootIndex) {
Pablo Greco 40546a
         virBufferAsprintf(buf, "<boot order='%u'", info->bootIndex);
Pablo Greco 40546a
 
Pablo Greco 40546a
@@ -6491,13 +6493,13 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
Pablo Greco 40546a
         info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390)
Pablo Greco 40546a
         return;
Pablo Greco 40546a
 
Pablo Greco 40546a
-    virBufferAsprintf(buf, "
Pablo Greco 40546a
+    virBufferAsprintf(&attrBuf, " type='%s'",
Pablo Greco 40546a
                       virDomainDeviceAddressTypeToString(info->type));
Pablo Greco 40546a
 
Pablo Greco 40546a
     switch ((virDomainDeviceAddressType) info->type) {
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
Pablo Greco 40546a
         if (!virPCIDeviceAddressIsEmpty(&info->addr.pci)) {
Pablo Greco 40546a
-            virBufferAsprintf(buf, " domain='0x%.4x' bus='0x%.2x' "
Pablo Greco 40546a
+            virBufferAsprintf(&attrBuf, " domain='0x%.4x' bus='0x%.2x' "
Pablo Greco 40546a
                               "slot='0x%.2x' function='0x%.1x'",
Pablo Greco 40546a
                               info->addr.pci.domain,
Pablo Greco 40546a
                               info->addr.pci.bus,
Pablo Greco 40546a
@@ -6505,13 +6507,13 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
Pablo Greco 40546a
                               info->addr.pci.function);
Pablo Greco 40546a
         }
Pablo Greco 40546a
         if (info->addr.pci.multi) {
Pablo Greco 40546a
-           virBufferAsprintf(buf, " multifunction='%s'",
Pablo Greco 40546a
-                             virTristateSwitchTypeToString(info->addr.pci.multi));
Pablo Greco 40546a
+            virBufferAsprintf(&attrBuf, " multifunction='%s'",
Pablo Greco 40546a
+                              virTristateSwitchTypeToString(info->addr.pci.multi));
Pablo Greco 40546a
         }
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
Pablo Greco 40546a
-        virBufferAsprintf(buf, " controller='%d' bus='%d' target='%d' unit='%d'",
Pablo Greco 40546a
+        virBufferAsprintf(&attrBuf, " controller='%d' bus='%d' target='%d' unit='%d'",
Pablo Greco 40546a
                           info->addr.drive.controller,
Pablo Greco 40546a
                           info->addr.drive.bus,
Pablo Greco 40546a
                           info->addr.drive.target,
Pablo Greco 40546a
@@ -6519,34 +6521,34 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
Pablo Greco 40546a
-        virBufferAsprintf(buf, " controller='%d' bus='%d' port='%d'",
Pablo Greco 40546a
+        virBufferAsprintf(&attrBuf, " controller='%d' bus='%d' port='%d'",
Pablo Greco 40546a
                           info->addr.vioserial.controller,
Pablo Greco 40546a
                           info->addr.vioserial.bus,
Pablo Greco 40546a
                           info->addr.vioserial.port);
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
Pablo Greco 40546a
-        virBufferAsprintf(buf, " controller='%d' slot='%d'",
Pablo Greco 40546a
+        virBufferAsprintf(&attrBuf, " controller='%d' slot='%d'",
Pablo Greco 40546a
                           info->addr.ccid.controller,
Pablo Greco 40546a
                           info->addr.ccid.slot);
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
Pablo Greco 40546a
-        virBufferAsprintf(buf, " bus='%d'", info->addr.usb.bus);
Pablo Greco 40546a
+        virBufferAsprintf(&attrBuf, " bus='%d'", info->addr.usb.bus);
Pablo Greco 40546a
         if (virDomainUSBAddressPortIsValid(info->addr.usb.port)) {
Pablo Greco 40546a
-            virBufferAddLit(buf, " port='");
Pablo Greco 40546a
-            virDomainUSBAddressPortFormatBuf(buf, info->addr.usb.port);
Pablo Greco 40546a
-            virBufferAddLit(buf, "'");
Pablo Greco 40546a
+            virBufferAddLit(&attrBuf, " port='");
Pablo Greco 40546a
+            virDomainUSBAddressPortFormatBuf(&attrBuf, info->addr.usb.port);
Pablo Greco 40546a
+            virBufferAddLit(&attrBuf, "'");
Pablo Greco 40546a
         }
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO:
Pablo Greco 40546a
         if (info->addr.spaprvio.has_reg)
Pablo Greco 40546a
-            virBufferAsprintf(buf, " reg='0x%llx'", info->addr.spaprvio.reg);
Pablo Greco 40546a
+            virBufferAsprintf(&attrBuf, " reg='0x%llx'", info->addr.spaprvio.reg);
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
Pablo Greco 40546a
-        virBufferAsprintf(buf, " cssid='0x%x' ssid='0x%x' devno='0x%04x'",
Pablo Greco 40546a
+        virBufferAsprintf(&attrBuf, " cssid='0x%x' ssid='0x%x' devno='0x%04x'",
Pablo Greco 40546a
                           info->addr.ccw.cssid,
Pablo Greco 40546a
                           info->addr.ccw.ssid,
Pablo Greco 40546a
                           info->addr.ccw.devno);
Pablo Greco 40546a
@@ -6557,15 +6559,15 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA:
Pablo Greco 40546a
         if (info->addr.isa.iobase > 0)
Pablo Greco 40546a
-            virBufferAsprintf(buf, " iobase='0x%x'", info->addr.isa.iobase);
Pablo Greco 40546a
+            virBufferAsprintf(&attrBuf, " iobase='0x%x'", info->addr.isa.iobase);
Pablo Greco 40546a
         if (info->addr.isa.irq > 0)
Pablo Greco 40546a
-            virBufferAsprintf(buf, " irq='0x%x'", info->addr.isa.irq);
Pablo Greco 40546a
+            virBufferAsprintf(&attrBuf, " irq='0x%x'", info->addr.isa.irq);
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
     case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM:
Pablo Greco 40546a
-        virBufferAsprintf(buf, " slot='%u'", info->addr.dimm.slot);
Pablo Greco 40546a
+        virBufferAsprintf(&attrBuf, " slot='%u'", info->addr.dimm.slot);
Pablo Greco 40546a
         if (info->addr.dimm.base)
Pablo Greco 40546a
-            virBufferAsprintf(buf, " base='0x%llx'", info->addr.dimm.base);
Pablo Greco 40546a
+            virBufferAsprintf(&attrBuf, " base='0x%llx'", info->addr.dimm.base);
Pablo Greco 40546a
 
Pablo Greco 40546a
         break;
Pablo Greco 40546a
 
Pablo Greco 40546a
@@ -6575,7 +6577,9 @@ virDomainDeviceInfoFormat(virBufferPtr buf,
Pablo Greco 40546a
         break;
Pablo Greco 40546a
     }
Pablo Greco 40546a
 
Pablo Greco 40546a
-    virBufferAddLit(buf, "/>\n");
Pablo Greco 40546a
+    virXMLFormatElement(buf, "address", &attrBuf, NULL);
Pablo Greco 40546a
+
Pablo Greco 40546a
+    virBufferFreeAndReset(&attrBuf);
Pablo Greco 40546a
 }
Pablo Greco 40546a
 
Pablo Greco 40546a
 static int
Pablo Greco 40546a
-- 
Pablo Greco 40546a
2.22.0
Pablo Greco 40546a