[v2,20/57] pid: Add ns::pid::rb_root

Submitted by Kirill Tkhai on March 28, 2017, 3:37 p.m.

Details

Message ID 149071543344.12770.17737348625320194786.stgit@localhost.localdomain
State New
Series "Nested pid namespaces support"
Headers show

Commit Message

Kirill Tkhai March 28, 2017, 3:37 p.m.
Add a per-ns rb tree to link pids. Should replace global pid_root_rb.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
 criu/include/namespaces.h |    3 +++
 criu/namespaces.c         |    4 +++-
 2 files changed, 6 insertions(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/criu/include/namespaces.h b/criu/include/namespaces.h
index 2ccb45b1..b2081130 100644
--- a/criu/include/namespaces.h
+++ b/criu/include/namespaces.h
@@ -149,6 +149,9 @@  struct ns_id {
 			UsernsEntry *e;
 			int nsfd_id;
 		} user;
+		struct {
+			struct rb_root rb_root;
+		} pid;
 	};
 };
 extern struct ns_id *ns_ids;
diff --git a/criu/namespaces.c b/criu/namespaces.c
index af3bc0a1..793b8257 100644
--- a/criu/namespaces.c
+++ b/criu/namespaces.c
@@ -314,7 +314,8 @@  struct ns_id *rst_new_ns_id(unsigned int id, pid_t pid,
 			INIT_LIST_HEAD(&nsid->net.ids);
 			INIT_LIST_HEAD(&nsid->net.links);
 			nsid->net.netns = NULL;
-		}
+		} else if (nd == &pid_ns_desc)
+			nsid->pid.rb_root = RB_ROOT;
 	}
 
 	return nsid;
@@ -440,6 +441,7 @@  static unsigned int generate_ns_id(int pid, unsigned int kid, struct ns_desc *nd
 		INIT_LIST_HEAD(&nsid->net.ids);
 		INIT_LIST_HEAD(&nsid->net.links);
 	} else if (nd == &pid_ns_desc) {
+		nsid->pid.rb_root = RB_ROOT;
 		if (type == NS_ROOT || (type == NS_CRIU && !top_pid_ns))
 			top_pid_ns = nsid;
 	}