• Tycho Andersen's avatar
    cgroup: add support for cgroup namespaces · 6e33d080
    Tycho Andersen authored
    cgroup namespaces are imminent to be merged into the kernel (indeed, they
    went into and out of 4.5 for minor issues), and will be carried as a
    patchset in the ubuntu 16.04 kernel. Here's an attempt at c/r.
    
    There are essentially three key steps:
      * on dump, in parse_task_cgroup, we should ask the task what cgroups it
        thinks it is in (unless it has the same cgroup ns id as its parent, then we
        should just take the prefixes from the parent's set), and set the prefix on
        the cg set
      * add a new restore step, prepare_cgroup_namespace(), which happens in
        prepare_task_cgroup() that does an unshare() if necessary
      * when restoring, in move_in_cgroup, if we're going to restore via usernsd,
        leave the full path. if not, use (cgset->path + len(cgset->cgns_prefix) as
        the path, since we will have already moved into the cgns_prefix and unshared.
    
    Another observation here is that we can support nesting, since these are
    restored heirarchically by nature.
    
    v2: * store cgns prefix length instead of full prefix in images
        * set has_cgroup_ns_id conditionally
        * drop unused argument to move_in_cgroup
        * add extra comments about what is happening when unsharing() on
          restore
        * add extra comments about what is happening when computing the actual
          cgns prefix
    Signed-off-by: 's avatarTycho Andersen <tycho.andersen@canonical.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    6e33d080
Name
Last commit
Last update
..
google/protobuf Loading commit data...
Makefile Loading commit data...
binfmt-misc.proto Loading commit data...
cgroup.proto Loading commit data...
core-aarch64.proto Loading commit data...
core-arm.proto Loading commit data...
core-ppc64.proto Loading commit data...
core-x86.proto Loading commit data...
core.proto Loading commit data...
cpuinfo.proto Loading commit data...
creds.proto Loading commit data...
eventfd.proto Loading commit data...
eventpoll.proto Loading commit data...
ext-file.proto Loading commit data...
fdinfo.proto Loading commit data...
fh.proto Loading commit data...
fifo.proto Loading commit data...
file-lock.proto Loading commit data...
fown.proto Loading commit data...
fs.proto Loading commit data...
fsnotify.proto Loading commit data...
ghost-file.proto Loading commit data...
inventory.proto Loading commit data...
ipc-desc.proto Loading commit data...
ipc-msg.proto Loading commit data...
ipc-sem.proto Loading commit data...
ipc-shm.proto Loading commit data...
ipc-var.proto Loading commit data...
mm.proto Loading commit data...
mnt.proto Loading commit data...
netdev.proto Loading commit data...
ns.proto Loading commit data...
opts.proto Loading commit data...
packet-sock.proto Loading commit data...
pagemap.proto Loading commit data...
pipe-data.proto Loading commit data...
pipe.proto Loading commit data...
pstree.proto Loading commit data...
regfile.proto Loading commit data...
remap-file-path.proto Loading commit data...
rlimit.proto Loading commit data...
rpc.proto Loading commit data...
sa.proto Loading commit data...
seccomp.proto Loading commit data...
siginfo.proto Loading commit data...
signalfd.proto Loading commit data...
sk-inet.proto Loading commit data...
sk-netlink.proto Loading commit data...
sk-opts.proto Loading commit data...
sk-packet.proto Loading commit data...
sk-unix.proto Loading commit data...
stats.proto Loading commit data...
tcp-stream.proto Loading commit data...
time.proto Loading commit data...
timer.proto Loading commit data...
timerfd.proto Loading commit data...
tty.proto Loading commit data...
tun.proto Loading commit data...
userns.proto Loading commit data...
utsns.proto Loading commit data...
vma.proto Loading commit data...