• Serge Hallyn's avatar
    UBUNTU: SAUCE: (noup) cgroup namespaces: add a 'nsroot=' mountinfo field · d5e333e3
    Serge Hallyn authored
    BugLink: http://bugs.launchpad.net/bugs/1560489
    
    [ note - this is a version of the patch I just sent to lkml ported to
      our xenial tree.  It's needed for things like docker and lxc to
      be certain of which cgroup tasks file is their own in certain nesting
      situations.  We currently work around it by blindly assuming that
      there are no legacy container managers running on cgroup-ns-enabled
      kernels ]
    
    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.
    
    This patch adds a 'nsroot=' field to cgroup mountinfo entries, so that
    userspace can distinguish a mount made in a cgroup namespace from a bind
    mount from a cgroup subdirectory.
    Signed-off-by: default avatarSerge Hallyn <serge.hallyn@ubuntu.com>
    Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
    d5e333e3
mount.c 8.03 KB