Convert LXC driver to use virCgroupNewMachine

Convert the LXC driver code to use the new atomic API
for setup of cgroups

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2013-07-22 17:11:09 +01:00
parent 02098ac260
commit f6c5f9077c
2 changed files with 17 additions and 38 deletions

View File

@ -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;
}

View File

@ -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)