On 07/30/2013 12:49 PM, Daniel P. Berrange wrote:
On Tue, Jul 30, 2013 at 12:13:58PM -0600, Eric Blake wrote:
> On 07/26/2013 09:48 AM, Daniel P. Berrange wrote:
>> From: "Daniel P. Berrange" <berrange(a)redhat.com>
>>
>> Systemd uses a named cgroup mount for tracking processes. Add
>> it as another type of controller, albeit one which we have to
>> special case in a number of places. In particular we must
>> never create/delete directories there, nor add tasks. Essentially
>> the systemd mount is to be considered read-only for libvirt.
>>
>> Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
>> - }
>> + /* In some cases we can copy part of the placement info
>> + * based on the parent cgroup...
>> + */
>> + if ((parent || path[0] == '/') &&
>> + virCgroupCopyPlacement(group, path, parent) < 0)
>> + return -1;
>> +
>> + /* ... but use /proc/cgroups to fill in the rest */
>> + if (virCgroupDetectPlacement(group, pid, path) < 0)
>
> ...now, if virCgroupCopyPlacement returns 0, it calls both functions.
> Is that intentional?
Yes, when we use CopyPlacement it sets up all mounts, except for
the systemd mount, which we must always probe for. The DetectPlacement
method was changed so that it only fills in data, not already filled
in by CopyPlacement.
That explains it, then. Probably worth mentioning in the commit
message, so the next reader won't miss it like I did. Condition has
been met, ACK is now granted with the typo fixes.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org