]> xenbits.xensource.com Git - libvirt.git/commitdiff
Introduce DOMAIN_DEVICE_ITERATE_MISSING_INFO
authorJán Tomko <jtomko@redhat.com>
Tue, 21 May 2019 13:05:37 +0000 (15:05 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 23 May 2019 12:41:16 +0000 (14:41 +0200)
Rename the DOMAIN_DEVICE_ITERATE_GRAPHICS flag.
It was introduced by commit dd45c2710f6fd2d4f8a47f97960532d0e0091e7d
with the intention to run the Validate callback even on the graphics
device.

However, enumerating every single device in virDomainDeviceIterateFlags
is unsustainable and what really was special about the graphics device
was the lack of DeviceInfo.

Rename the flag and iterate over more info-less devices. (and leases)

Signed-off-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c

index 732d37329f7264a7b03e41430963aec8cc74da06..926c2139b79a6686b7c3e618455b5c0f8180ad5c 100644 (file)
@@ -4074,7 +4074,7 @@ virDomainSkipBackcompatConsole(virDomainDefPtr def,
 
 enum {
     DOMAIN_DEVICE_ITERATE_ALL_CONSOLES = 1 << 0,
-    DOMAIN_DEVICE_ITERATE_GRAPHICS = 1 << 1
+    DOMAIN_DEVICE_ITERATE_MISSING_INFO = 1 << 1,
 } virDomainDeviceIterateFlags;
 
 /*
@@ -4240,15 +4240,26 @@ virDomainDeviceInfoIterateInternal(virDomainDefPtr def,
             return rc;
     }
 
-    /* If the flag below is set, make sure @cb can handle @info being NULL, as
-     * graphics don't have any boot info */
-    if (iteratorFlags & DOMAIN_DEVICE_ITERATE_GRAPHICS) {
+    /* If the flag below is set, make sure @cb can handle @info being NULL */
+    if (iteratorFlags & DOMAIN_DEVICE_ITERATE_MISSING_INFO) {
         device.type = VIR_DOMAIN_DEVICE_GRAPHICS;
         for (i = 0; i < def->ngraphics; i++) {
             device.data.graphics = def->graphics[i];
             if ((rc = cb(def, &device, NULL, opaque)) != 0)
                 return rc;
         }
+        device.type = VIR_DOMAIN_DEVICE_LEASE;
+        for (i = 0; i < def->nleases; i++) {
+            device.data.lease = def->leases[i];
+            if ((rc = cb(def, &device, NULL, opaque)) != 0)
+                return rc;
+        }
+        device.type = VIR_DOMAIN_DEVICE_IOMMU;
+        if (def->iommu) {
+            device.data.iommu = def->iommu;
+            if ((rc = cb(def, &device, NULL, opaque)) != 0)
+                return rc;
+        }
     }
 
     /* Coverity is not very happy with this - all dead_error_condition */
@@ -6923,7 +6934,7 @@ virDomainDefValidate(virDomainDefPtr def,
     if (virDomainDeviceInfoIterateInternal(def,
                                            virDomainDefValidateDeviceIterator,
                                            (DOMAIN_DEVICE_ITERATE_ALL_CONSOLES |
-                                            DOMAIN_DEVICE_ITERATE_GRAPHICS),
+                                            DOMAIN_DEVICE_ITERATE_MISSING_INFO),
                                            &data) < 0)
         return -1;