[CRIU] [PATCH 3/5] revert 246367e4e483 "add walk_all flag to walk_namespaces"

Oleg Nesterov oleg at redhat.com
Tue Apr 14 09:54:08 PDT 2015


We no longer need to populate ext_ns->mnt.mntinfo_list until
resolve_external_mounts(). We can rely on find_ext_ns_id() which
does collect_mntinfo() on demand.

Signed-off-by: Oleg Nesterov <oleg at redhat.com>
---
 include/namespaces.h |    2 +-
 mount.c              |    2 +-
 namespaces.c         |   11 +++--------
 net.c                |    2 +-
 4 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/include/namespaces.h b/include/namespaces.h
index b76c7d9..52d2f34 100644
--- a/include/namespaces.h
+++ b/include/namespaces.h
@@ -54,7 +54,7 @@ extern unsigned long root_ns_mask;
 extern const struct fdtype_ops nsfile_dump_ops;
 extern struct collect_image_info nsfile_cinfo;
 
-extern int walk_namespaces(struct ns_desc *nd, bool walk_all, int (*cb)(struct ns_id *, void *), void *oarg);
+extern int walk_namespaces(struct ns_desc *nd, int (*cb)(struct ns_id *, void *), void *oarg);
 extern int collect_namespaces(bool for_dump);
 extern int collect_mnt_namespaces(bool for_dump);
 extern int dump_mnt_namespaces(void);
diff --git a/mount.c b/mount.c
index 62696a9..8250154 100644
--- a/mount.c
+++ b/mount.c
@@ -2678,7 +2678,7 @@ int collect_mnt_namespaces(bool for_dump)
 	arg.for_dump = for_dump;
 	arg.need_to_validate = false;
 
-	ret = walk_namespaces(&mnt_ns_desc, opts.autodetect_ext_mounts, collect_mntns, &arg);
+	ret = walk_namespaces(&mnt_ns_desc, collect_mntns, &arg);
 	if (ret)
 		goto err;
 
diff --git a/namespaces.c b/namespaces.c
index 167adf9..9fdd9b3 100644
--- a/namespaces.c
+++ b/namespaces.c
@@ -201,14 +201,9 @@ struct ns_id *lookup_ns_by_id(unsigned int id, struct ns_desc *nd)
  * tasks may live in it. Sometimes (CLONE_SUBNS) there can
  * be more than one namespace of that type. For this case
  * we dump all namespace's info and recreate them on restore.
- *
- * In some cases (e.g. for external mount autodetection), we want to walk all
- * the namespaces, regardless of who it is attached to. Passing walk_all=true
- * forces the function to walk all the namespaces, regardless of who they
- * belong to.
  */
 
-int walk_namespaces(struct ns_desc *nd, bool walk_all, int (*cb)(struct ns_id *, void *), void *oarg)
+int walk_namespaces(struct ns_desc *nd, int (*cb)(struct ns_id *, void *), void *oarg)
 {
 	int ret = 0;
 	struct ns_id *ns;
@@ -217,7 +212,7 @@ int walk_namespaces(struct ns_desc *nd, bool walk_all, int (*cb)(struct ns_id *,
 		if (ns->nd != nd)
 			continue;
 
-		if (ns->pid == getpid() && !walk_all) {
+		if (ns->pid == getpid()) {
 			if (root_ns_mask & nd->cflag)
 				continue;
 
@@ -602,7 +597,7 @@ int collect_user_namespaces(bool for_dump)
 	if (!(root_ns_mask & CLONE_NEWUSER))
 		return 0;
 
-	return walk_namespaces(&net_ns_desc, false, collect_user_ns, NULL);
+	return walk_namespaces(&net_ns_desc, collect_user_ns, NULL);
 }
 
 static int check_user_ns(int pid)
diff --git a/net.c b/net.c
index 3a32b43..68034d4 100644
--- a/net.c
+++ b/net.c
@@ -873,7 +873,7 @@ static int collect_net_ns(struct ns_id *ns, void *oarg)
 
 int collect_net_namespaces(bool for_dump)
 {
-	return walk_namespaces(&net_ns_desc, false, collect_net_ns,
+	return walk_namespaces(&net_ns_desc, collect_net_ns,
 			(void *)(for_dump ? 1UL : 0));
 }
 
-- 
1.5.5.1



More information about the CRIU mailing list