]> xenbits.xensource.com Git - libvirt.git/commitdiff
Add 'controllers' arg to virCgroupNewDetect
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 24 Jul 2013 16:31:25 +0000 (17:31 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 25 Jul 2013 18:55:47 +0000 (19:55 +0100)
When detecting cgroups we must honour any controllers
whitelist the driver may have.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/lxc/lxc_process.c
src/qemu/qemu_cgroup.c
src/util/vircgroup.c
src/util/vircgroup.h

index e632e1390d7c36d6046b624299e0591cd63c3bd7..1a5686f36760d4a20253d97f5827d8c9d236ca98 100644 (file)
@@ -1190,7 +1190,7 @@ int virLXCProcessStart(virConnectPtr conn,
     }
 
     if (virCgroupNewDetectMachine(vm->def->name, "lxc",
-                                  vm->pid, &priv->cgroup) < 0)
+                                  vm->pid, -1, &priv->cgroup) < 0)
         goto error;
 
     if (!priv->cgroup) {
@@ -1398,7 +1398,7 @@ virLXCProcessReconnectDomain(virDomainObjPtr vm,
             goto error;
 
         if (virCgroupNewDetectMachine(vm->def->name, "lxc",
-                                      vm->pid, &priv->cgroup) < 0)
+                                      vm->pid, -1, &priv->cgroup) < 0)
             goto error;
 
         if (!priv->cgroup) {
index 07e901c34c8e8c56c117ad23c72393caf4195ffb..9f6b251f69b48d9f359caac104cd6c46d0d64eb5 100644 (file)
@@ -707,6 +707,7 @@ qemuConnectCgroup(virQEMUDriverPtr driver,
     if (virCgroupNewDetectMachine(vm->def->name,
                                   "qemu",
                                   vm->pid,
+                                  cfg->cgroupControllers,
                                   &priv->cgroup) < 0)
         goto cleanup;
 
index 86d7e44d25a52735d84e7db8c223ebb83acc894d..a0229bf4a825f38d367f3dad6f4aad34bdce6b22 100644 (file)
@@ -1406,7 +1406,7 @@ int virCgroupNewPartition(const char *path ATTRIBUTE_UNUSED,
 */
 int virCgroupNewSelf(virCgroupPtr *group)
 {
-    return virCgroupNewDetect(-1, group);
+    return virCgroupNewDetect(-1, -1, group);
 }
 
 
@@ -1577,12 +1577,14 @@ int virCgroupNewEmulator(virCgroupPtr domain ATTRIBUTE_UNUSED,
 
 #if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R
 int virCgroupNewDetect(pid_t pid,
+                       int controllers,
                        virCgroupPtr *group)
 {
-    return virCgroupNew(pid, "", NULL, -1, group);
+    return virCgroupNew(pid, "", NULL, controllers, group);
 }
 #else
 int virCgroupNewDetect(pid_t pid ATTRIBUTE_UNUSED,
+                       int controllers ATTRIBUTE_UNUSED,
                        virCgroupPtr *group ATTRIBUTE_UNUSED)
 {
     virReportSystemError(ENXIO, "%s",
@@ -1597,9 +1599,10 @@ int virCgroupNewDetect(pid_t pid ATTRIBUTE_UNUSED,
 int virCgroupNewDetectMachine(const char *name,
                               const char *drivername,
                               pid_t pid,
+                              int controllers,
                               virCgroupPtr *group)
 {
-    if (virCgroupNewDetect(pid, group) < 0) {
+    if (virCgroupNewDetect(pid, controllers, group) < 0) {
         if (virCgroupNewIgnoreError())
             return 0;
         return -1;
index d6222d7fe9905b466542f72340455a04d9b60486..3aaf08112686618a050d57b4668adc2ef530bb78 100644 (file)
@@ -76,11 +76,13 @@ int virCgroupNewEmulator(virCgroupPtr domain,
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3);
 
 int virCgroupNewDetect(pid_t pid,
+                       int controllers,
                        virCgroupPtr *group);
 
 int virCgroupNewDetectMachine(const char *name,
                               const char *drivername,
                               pid_t pid,
+                              int controllers,
                               virCgroupPtr *group);
 
 int virCgroupNewMachine(const char *name,