]> xenbits.xensource.com Git - libvirt.git/commitdiff
Revert "qemu: do not put a task into machine cgroup"
authorJohn Ferlan <jferlan@redhat.com>
Thu, 14 Jan 2016 15:56:53 +0000 (10:56 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 14 Jan 2016 15:56:53 +0000 (10:56 -0500)
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.

src/qemu/qemu_cgroup.c
src/qemu/qemu_process.c

index 1c406ce68e938318ca316d89697065ef6a8f354b..88c1ce2cc771d173dea0ba7064cf63db5d1f2bde 100644 (file)
@@ -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;
 
index f083f3f3299b3c993d284adafdeb9fdb8b21f0c9..05cbda237239db65c5be1bdec5a27720e12c3a3b 100644 (file)
@@ -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;