[libvirt] [PATCH 2/6] Introduce virDomainVirtioSerialAddrAutoAssign again

Ján Tomko jtomko at redhat.com
Fri Oct 21 13:58:55 UTC 2016


This time do not require an address cache as a parameter.

Simplify qemuDomainAttachChrDeviceAssignAddr to not generate
the virtio serial address cache for devices of other types.
---
 src/conf/domain_addr.c   | 21 +++++++++++++++++++++
 src/conf/domain_addr.h   |  6 ++++++
 src/libvirt_private.syms |  1 +
 src/qemu/qemu_hotplug.c  | 11 ++---------
 4 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
index 065baa7..92a5516 100644
--- a/src/conf/domain_addr.c
+++ b/src/conf/domain_addr.c
@@ -1167,6 +1167,27 @@ virDomainVirtioSerialAddrAutoAssignFromCache(virDomainDefPtr def,
         return virDomainVirtioSerialAddrAssign(def, addrs, info, allowZero, portOnly);
 }
 
+int
+virDomainVirtioSerialAddrAutoAssign(virDomainDefPtr def,
+                                    virDomainDeviceInfoPtr info,
+                                    bool allowZero)
+{
+    virDomainVirtioSerialAddrSetPtr addrs = NULL;
+    int ret = -1;
+
+    if (!(addrs = virDomainVirtioSerialAddrSetCreateFromDomain(def)))
+        goto cleanup;
+
+    if (virDomainVirtioSerialAddrAutoAssignFromCache(def, addrs, info, allowZero) < 0)
+        goto cleanup;
+
+    ret = 0;
+
+ cleanup:
+    virDomainVirtioSerialAddrSetFree(addrs);
+    return ret;
+}
+
 
 int
 virDomainVirtioSerialAddrAssign(virDomainDefPtr def,
diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h
index b0fadc1..141f83b 100644
--- a/src/conf/domain_addr.h
+++ b/src/conf/domain_addr.h
@@ -229,6 +229,12 @@ virDomainVirtioSerialAddrAutoAssignFromCache(virDomainDefPtr def,
     ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
 
 int
+virDomainVirtioSerialAddrAutoAssign(virDomainDefPtr def,
+                                    virDomainDeviceInfoPtr info,
+                                    bool allowZero)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+
+int
 virDomainVirtioSerialAddrAssign(virDomainDefPtr def,
                                 virDomainVirtioSerialAddrSetPtr addrs,
                                 virDomainDeviceInfoPtr info,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 8bc2584..ce9c4c4 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -123,6 +123,7 @@ virDomainUSBAddressSetAddHub;
 virDomainUSBAddressSetCreate;
 virDomainUSBAddressSetFree;
 virDomainVirtioSerialAddrAssign;
+virDomainVirtioSerialAddrAutoAssign;
 virDomainVirtioSerialAddrAutoAssignFromCache;
 virDomainVirtioSerialAddrIsComplete;
 virDomainVirtioSerialAddrRelease;
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 7bd38ab..cbdcd81 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1641,15 +1641,10 @@ qemuDomainAttachChrDeviceAssignAddr(virDomainDefPtr def,
                                     virDomainChrDefPtr chr)
 {
     int ret = -1;
-    virDomainVirtioSerialAddrSetPtr vioaddrs = NULL;
-
-    if (!(vioaddrs = virDomainVirtioSerialAddrSetCreateFromDomain(def)))
-        goto cleanup;
 
     if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
         chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO) {
-        if (virDomainVirtioSerialAddrAutoAssignFromCache(NULL, vioaddrs,
-                                                         &chr->info, true) < 0)
+        if (virDomainVirtioSerialAddrAutoAssign(def, &chr->info, true) < 0)
             goto cleanup;
         ret = 1;
 
@@ -1667,8 +1662,7 @@ qemuDomainAttachChrDeviceAssignAddr(virDomainDefPtr def,
 
     } else if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL &&
                chr->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO) {
-        if (virDomainVirtioSerialAddrAutoAssignFromCache(NULL, vioaddrs,
-                                                         &chr->info, false) < 0)
+        if (virDomainVirtioSerialAddrAutoAssign(def, &chr->info, false) < 0)
             goto cleanup;
         ret = 1;
     }
@@ -1686,7 +1680,6 @@ qemuDomainAttachChrDeviceAssignAddr(virDomainDefPtr def,
     ret = 0;
 
  cleanup:
-    virDomainVirtioSerialAddrSetFree(vioaddrs);
     return ret;
 }
 
-- 
2.7.3




More information about the libvir-list mailing list