render / rpms / libvirt

Forked from rpms/libvirt 10 months ago
Clone
c1c534
From 606a93eac7434332c39c54015d1e774293e9605d Mon Sep 17 00:00:00 2001
c1c534
Message-Id: <606a93eac7434332c39c54015d1e774293e9605d@dist-git>
c1c534
From: Martin Kletzander <mkletzan@redhat.com>
c1c534
Date: Mon, 5 Feb 2018 13:39:20 +0100
c1c534
Subject: [PATCH] qemu: Refresh capabilities when creating resctrl allocation
c1c534
c1c534
Since one of the things in capabilities (info from resctrl updated with data
c1c534
about caches) can be change on the system by remounting the /sys/fs/resctrl with
c1c534
different options, the capabilities need to be refreshed.  There is a better fix
c1c534
in the works, but it's going to be way bigger than this (hence the XXX note
c1c534
there), so for the time being let's workaround this.  And in order not to slow
c1c534
down the domain starting, only get the capabilities if there are any cachetunes.
c1c534
c1c534
Relates-to: https://bugzilla.redhat.com/show_bug.cgi?id=1540780
c1c534
c1c534
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
c1c534
(cherry picked from commit 3cac2a6c93c424d55b865a05635d96e0b1aa9d36)
c1c534
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
c1c534
---
c1c534
 src/qemu/qemu_process.c | 8 +++++++-
c1c534
 1 file changed, 7 insertions(+), 1 deletion(-)
c1c534
c1c534
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
c1c534
index 3853112924..c86f7d3c5b 100644
c1c534
--- a/src/qemu/qemu_process.c
c1c534
+++ b/src/qemu/qemu_process.c
c1c534
@@ -2511,9 +2511,15 @@ qemuProcessResctrlCreate(virQEMUDriverPtr driver,
c1c534
 {
c1c534
     int ret = -1;
c1c534
     size_t i = 0;
c1c534
-    virCapsPtr caps = virQEMUDriverGetCapabilities(driver, false);
c1c534
+    virCapsPtr caps = NULL;
c1c534
     qemuDomainObjPrivatePtr priv = vm->privateData;
c1c534
 
c1c534
+    if (!vm->def->ncachetunes)
c1c534
+        return 0;
c1c534
+
c1c534
+    /* Force capability refresh since resctrl info can change
c1c534
+     * XXX: move cache info into virresctrl so caps are not needed */
c1c534
+    caps = virQEMUDriverGetCapabilities(driver, true);
c1c534
     if (!caps)
c1c534
         return -1;
c1c534
 
c1c534
-- 
c1c534
2.16.1
c1c534