[PATCH v2 1/4] Revert "qemu: do not put a task into machine cgroup"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This reverts commit a41c00b472efaa192d2deae51ab732e65903238f.

After much testing and upstream discussion this has been deemed to be
the incorrect operation since it means we no longer have any guarantee
about which resource controllers the QEMU processes in general are in.

Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx>
---
 src/qemu/qemu_cgroup.c  | 15 +++++++++++----
 src/qemu/qemu_process.c | 12 ++++++------
 2 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index 1c406ce..88c1ce2 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -789,6 +789,17 @@ qemuInitCgroup(virQEMUDriverPtr driver,
         goto cleanup;
     }
 
+    if (virCgroupAddTask(priv->cgroup, vm->pid) < 0) {
+        virErrorPtr saved = virSaveLastError();
+        virCgroupRemove(priv->cgroup);
+        virCgroupFree(&priv->cgroup);
+        if (saved) {
+            virSetError(saved);
+            virFreeError(saved);
+        }
+        goto cleanup;
+    }
+
  done:
     ret = 0;
  cleanup:
@@ -1160,10 +1171,6 @@ qemuSetupCgroupForEmulator(virDomainObjPtr vm)
             goto cleanup;
     }
 
-    /* consider the first thread an emulator-thread */
-    if (virCgroupAddTask(cgroup_emulator, vm->pid) < 0)
-        goto cleanup;
-
     virCgroupFree(&cgroup_emulator);
     return 0;
 
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index f083f3f..05cbda2 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -4895,6 +4895,12 @@ qemuProcessLaunch(virConnectPtr conn,
     if (qemuSetupCgroup(driver, vm, nnicindexes, nicindexes) < 0)
         goto cleanup;
 
+    /* This must be done after cgroup placement to avoid resetting CPU
+     * affinity */
+    if (!vm->def->cputune.emulatorpin &&
+        qemuProcessInitCpuAffinity(vm) < 0)
+        goto cleanup;
+
     VIR_DEBUG("Setting domain security labels");
     if (virSecurityManagerSetAllLabel(driver->securityManager,
                                       vm->def,
@@ -4941,12 +4947,6 @@ qemuProcessLaunch(virConnectPtr conn,
     if (qemuSetupCgroupForEmulator(vm) < 0)
         goto cleanup;
 
-    /* This must be done after cgroup placement to avoid resetting CPU
-     * affinity */
-    if (!vm->def->cputune.emulatorpin &&
-        qemuProcessInitCpuAffinity(vm) < 0)
-        goto cleanup;
-
     VIR_DEBUG("Setting affinity of emulator threads");
     if (qemuProcessSetEmulatorAffinity(vm) < 0)
         goto cleanup;
-- 
2.5.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]