From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> Convert the LXC driver code to use the new atomic API for setup of cgroups Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list