From: "Daniel P. Berrange" <berrange(a)redhat.com>
Convert the LXC driver code to use the new atomic API
for setup of cgroups
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/lxc/lxc_cgroup.c | 53 +++++++++++++++---------------------------------
src/lxc/lxc_controller.c | 2 +-
2 files changed, 17 insertions(+), 38 deletions(-)
diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
index c230c25..af91b04 100644
--- a/src/lxc/lxc_cgroup.c
+++ b/src/lxc/lxc_cgroup.c
@@ -431,7 +431,6 @@ cleanup:
virCgroupPtr virLXCCgroupCreate(virDomainDefPtr def)
{
- virCgroupPtr parent = NULL;
virCgroupPtr cgroup = NULL;
if (!def->resource) {
@@ -454,46 +453,26 @@ virCgroupPtr virLXCCgroupCreate(virDomainDefPtr def)
def->resource->partition);
goto cleanup;
}
- /* We only auto-create the default partition. In other
- * cases we expec the sysadmin/app to have done so */
- if (virCgroupNewPartition(def->resource->partition,
- STREQ(def->resource->partition,
"/machine"),
- -1,
- &parent) < 0)
- goto cleanup;
- if (virCgroupNewDomainPartition(parent,
- "lxc",
- def->name,
- true,
- &cgroup) < 0)
+ /*
+ * XXX
+ * We should pass the PID of the LXC init process
+ * not ourselves, but this requires some more
+ * refactoring. We should also pass the root dir
+ */
+ if (virCgroupNewMachine(def->name,
+ "lxc",
+ true,
+ def->uuid,
+ NULL,
+ getpid(),
+ true,
+ def->resource->partition,
+ -1,
+ &cgroup) < 0)
goto cleanup;
cleanup:
- virCgroupFree(&parent);
- return cgroup;
-}
-
-
-virCgroupPtr virLXCCgroupJoin(virDomainDefPtr def)
-{
- virCgroupPtr cgroup = NULL;
- int ret = -1;
-
- if (!(cgroup = virLXCCgroupCreate(def)))
- return NULL;
-
- if (virCgroupAddTask(cgroup, getpid()) < 0)
- goto cleanup;
-
- ret = 0;
-
-cleanup:
- if (ret < 0) {
- virCgroupFree(&cgroup);
- return NULL;
- }
-
return cgroup;
}
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index bbec344..124ab19 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -2388,7 +2388,7 @@ int main(int argc, char *argv[])
if (virLXCControllerValidateConsoles(ctrl) < 0)
goto cleanup;
- if (!(ctrl->cgroup = virLXCCgroupJoin(ctrl->def)))
+ if (!(ctrl->cgroup = virLXCCgroupCreate(ctrl->def)))
goto cleanup;
if (virLXCControllerSetupServer(ctrl) < 0)
--
1.8.1.4