cgroup namespaces - mount root

From: Serge E. Hallyn
Date: Fri Mar 11 2016 - 16:50:23 EST


Hi Tejun,

One practical problem I've found with cgroup namespaces is that there
is no way to disambiguate between a cgroupfs mount which was done in
a cgroup namespace, and a bind mount of a cgroupfs directory. So
whether I do

unshare --cgroup -- bash -c "mount -t cgroup -o freezer f /mnt; cat /proc/self/mountinfo"

or whether I just

mount --bind /sys/fs/cgroup/freezer/$(awk -F: '/freezer/ { print $3 }' /proc/self/cgroup) /mnt

'mount root' field (field 3) in /proc/self/mountinfo will show the
same thing, the result of awk -F: '/freezer/ { print $3 }' /proc/self/cgroup.

I keep waffling between thinking this is a problem that needs to be
solved, and thinking "don't do that". But docker at least seems to
have a problem with it right now, because it uses that field as part
of its calculation of paths to write to.

So, do you think it would be worth adding a 'nsroot=' entry in the
optional fields (next shared:) ? I would've just sent a patch, but
it actually isn't quite as simple as it would seem to find a way to
get the absolute path during mountinfo_read(), so I thought I'd ask
before spending more time on it.

thanks,
-serge