[CRIU] [PATCH v3 00/55] Nested pid namespaces support
Kirill Tkhai
ktkhai at virtuozzo.com
Mon Apr 10 01:15:01 PDT 2017
Hi,
this is the third version of nested pid namespaces support.
The most signify change in this version is support of children,
which have a pid_ns->user_ns different to parent's user_ns.
See "pid_ns: Set user_ns before creation of pid_ns" for the
details. Test pidns01 was implemented for this case.
Also, now we block SIGCHLD during destroying of pid_ns helpers,
and we have a "ns_pid" feature for tests.
https://travis-ci.org/tkhai/criu/builds/220445695
---
Kirill Tkhai (55):
ns: Do not change net_ns in prepare_net_namespaces()
mnt: Put root fd to fdstore
cr-restore: Open transport socket earlier
zdtm: Add pidns00 test
zdtm: Add pidns01 test
kerndat: Check that "/proc/[pid]/status" file has NS{pid,..} lines
pid: Add pid::level field and level argument for __alloc_pstree_item()
pid: Add equel_pid() helper
pid: Add last_level_pid() helper
pid: Make pgid and sid be allocated dynamically
pid: Use last_level_pid() in restore_pgid()
pid: Alloc threads dynamically
pid: Pass thread pid to caller
pstree: Change arguments of read_pstree_ids()
pstree: Read ids earlier in read_pstree_image()
pid: Add top_pid_ns
pid: Add ns::pid::rb_root
ids: Copy unexisted ids from root_item
pstree: Move parent assignment in read_pstree_image() up
pstree: Assign ids for dead tasks in read_pstree_image()
pstree: Dump pid and user ns ids for dead tasks
pstree: Add pid_ns check in read_pstree_image
pstree: Split lookup_create_pid()
pstree: Add pid_ns id argument to lookup_create_pid()
ns: Add MAX_NS_NESTING
pstree: Make lookup_create_pid() able to create tasks with pid->level > 1
pid: Implement populate_ns_pids() helper
proc_parse: Implement collect_pid_status()
pid_ns: Implement pid_ns_root_off()
pid: Use collect_pid_status() to populate item's pids
images: Add NSpids pstree descriptions
pstree: Dump and restore NSpid, NSsid etc
pstree: Make get_free_pid() work for different pid_ns and export it
pstree: Extract __pstree_item_by_virt() to act on any pid_ns
ns: Reserve pid_ns helpers
restore: Implement set_next_pid() helper
pid: Always lock last pid file on clone()
pid: Add fdstore id for pid_ns descriptor
fdstore: Init fdstore earlier
pid: Save created pid_ns fd to fdstore
ns: Always start usernsd
pid: Add pid ns futex helper_created
ns: Install transport fd socket in usernsd
cr-restore: Add argument to criu_signals_setup()
ns: Add usernsd signal handler
pid: Create pid_ns helpers
pid: Wait till pid_ns created before we create a child of this ns
pid: Set pid_ns before we create a child
pid_ns: Set user_ns before creation of pid_ns
pid: Teach set_next_pid() working with nested pid_ns
restorer: Close transport socket later
restorer: Set NStids in all pid_ns for thread before we create it.
pid: Check for equality of getpid() of child to last_level_pid
pstree: Use CLONE_NEWPID only to create child reaper of pid_ns
ns: Nested pid_ns support
criu/cr-check.c | 13 +
criu/cr-dump.c | 123 +++++++--
criu/cr-restore.c | 372 +++++++++++++++++++++-----
criu/files-reg.c | 10 -
criu/files.c | 20 +
criu/include/kerndat.h | 2
criu/include/namespaces.h | 22 +-
criu/include/parasite-syscall.h | 2
criu/include/pid.h | 23 ++
criu/include/proc_parse.h | 13 +
criu/include/pstree.h | 31 ++
criu/include/restore.h | 3
criu/include/restorer.h | 6
criu/include/rst_info.h | 1
criu/kerndat.c | 28 ++
criu/mount.c | 19 +
criu/namespaces.c | 406 +++++++++++++++++++++++++++-
criu/net.c | 16 +
criu/ns-common.c | 51 ++++
criu/parasite-syscall.c | 6
criu/pie/restorer.c | 50 +++
criu/proc_parse.c | 123 ++++++++-
criu/pstree.c | 559 +++++++++++++++++++++++++++------------
criu/seize.c | 32 ++
criu/sk-unix.c | 11 +
criu/tty.c | 6
images/pstree.proto | 17 +
test/zdtm/static/Makefile | 2
test/zdtm/static/pidns00.c | 205 ++++++++++++++
test/zdtm/static/pidns00.desc | 1
test/zdtm/static/pidns01.c | 164 +++++++++++
test/zdtm/static/pidns01.desc | 1
test/zdtm/static/tun.desc | 2
33 files changed, 1974 insertions(+), 366 deletions(-)
create mode 100644 criu/ns-common.c
create mode 100644 test/zdtm/static/pidns00.c
create mode 100644 test/zdtm/static/pidns00.desc
create mode 100644 test/zdtm/static/pidns01.c
create mode 100644 test/zdtm/static/pidns01.desc
--
Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
More information about the CRIU
mailing list