[libvirt] [PATCH 1 of 2] Add internal cgroup manipulation functions
Daniel P. Berrange
berrange at redhat.com
Wed Oct 1 21:02:19 UTC 2008
On Wed, Oct 01, 2008 at 01:19:03PM -0700, Dan Smith wrote:
> This patch adds src/cgroup.{c,h} with support for creating and manipulating
> cgroups.
>
> All groups created with the internal API are forced under $mount/libvirt/
> to keep everything together. The first time a group is created, the libvirt
> directory is also created, and the settings from the root are inherited.
>
> The code creates groups in all mounts requires to get memory and devices
> functionality. When setting a value, the appropriate mount is determined
> and the value is set there. I have tested this with all controllers mounted
> in a single location, as well as all of them mounted separately.
> +int virCgroupForDomain(virDomainDefPtr def, virCgroupPtr *group)
I think we should pass in a 2nd 'const char *driverName' arg here
with "lxc" as its value
> +{
> + int rc;
> + virCgroupPtr typegrp = NULL;
> + const char *typestr = virDomainVirtTypeToString(def->virtType);
Rather than rely on this virt type string - virt type is not adding
enough uniqueness - can still have a (virttype, name) clash between
2 libvirt drivers. Name is unique per host, per driver, so we'd
want to have
$CONTROLLER_MOUNT/libvirt/$DRIVER_NAME/$DOMAIN_NAME
> +
> + if (typestr == NULL)
> + return -EINVAL;
> +
> + rc = virCgroupOpen(NULL, typestr, &typegrp);
> + if (rc == -ENOENT) {
> + rc = virCgroupCreate(NULL, typestr, &typegrp);
> + if (rc != 0)
> + goto out;
> + } else if (rc != 0)
> + goto out;
> +
> + rc = virCgroupOpen(typegrp, def->name, group);
> + if (rc == -ENOENT)
> + rc = virCgroupCreate(typegrp, def->name, group);
> +out:
> + virCgroupFree(&typegrp);
> +
> + return rc;
> +}
> +
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list