diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c index d9e9e0d4c6..af91b049af 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 expect 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 bbec34422b..124ab19284 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)