]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: add explicit flag to skip qemu caps invalidation
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 20 Dec 2019 11:56:38 +0000 (11:56 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Mon, 23 Dec 2019 16:39:20 +0000 (16:39 +0000)
Currently if the binary path is NULL in the qemu capabilities object,
cache invalidation is skipped. A future patch will ensure that the
binary path is always non-NULL, so a way to explicitly skip invalidation
is required.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_capspriv.h

index 2223589058248ad71cb8a727843921f8d3293a08..cc6d9bbd44ad44c5a521ed96f2f91c705cdc131c 100644 (file)
@@ -612,6 +612,7 @@ struct _virQEMUCaps {
     char *binary;
     time_t ctime;
     time_t libvirtCtime;
+    bool invalidation;
 
     virBitmapPtr flags;
 
@@ -1633,6 +1634,7 @@ virQEMUCapsNew(void)
     if (!(qemuCaps = virObjectNew(virQEMUCapsClass)))
         return NULL;
 
+    qemuCaps->invalidation = true;
     if (!(qemuCaps->flags = virBitmapNew(QEMU_CAPS_LAST)))
         goto error;
 
@@ -1647,6 +1649,14 @@ virQEMUCapsNew(void)
 }
 
 
+void
+virQEMUCapsSetInvalidation(virQEMUCapsPtr qemuCaps,
+                           bool enabled)
+{
+    qemuCaps->invalidation = enabled;
+}
+
+
 static int
 virQEMUCapsHostCPUDataCopy(virQEMUCapsHostCPUDataPtr dst,
                            virQEMUCapsHostCPUDataPtr src)
@@ -1746,6 +1756,7 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps)
     if (!ret)
         return NULL;
 
+    ret->invalidation = qemuCaps->invalidation;
     ret->usedQMP = qemuCaps->usedQMP;
     ret->kvmSupportsNesting = qemuCaps->kvmSupportsNesting;
 
@@ -4423,6 +4434,9 @@ virQEMUCapsIsValid(void *data,
     struct stat sb;
     bool kvmSupportsNesting;
 
+    if (!qemuCaps->invalidation)
+        return true;
+
     if (!qemuCaps->binary)
         return true;
 
index 9059ee3059c921473a15fb39aac9b6c46a196012..a7492fffd21b8897eb1759c6a0bbfc828c4626c7 100644 (file)
@@ -36,6 +36,9 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
                                 unsigned int microcodeVersion,
                                 const char *kernelVersion);
 
+void virQEMUCapsSetInvalidation(virQEMUCapsPtr qemuCaps,
+                                bool enabled);
+
 int virQEMUCapsLoadCache(virArch hostArch,
                          virQEMUCapsPtr qemuCaps,
                          const char *filename);