From 25db737471049a183eca68155159dc9f1b267935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 20 Dec 2019 11:56:38 +0000 Subject: [PATCH] qemu: add explicit flag to skip qemu caps invalidation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Daniel P. Berrangé --- src/qemu/qemu_capabilities.c | 14 ++++++++++++++ src/qemu/qemu_capspriv.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 2223589058..cc6d9bbd44 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -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; diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h index 9059ee3059..a7492fffd2 100644 --- a/src/qemu/qemu_capspriv.h +++ b/src/qemu/qemu_capspriv.h @@ -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); -- GitLab