[CRIU] [PATCH 03/11] mount: save remapped links on tmpfs
Andrey Vagin
avagin at openvz.org
Sun Aug 3 11:31:17 PDT 2014
For that mnt namespaces should be dumped after files.
Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
cr-dump.c | 6 +++++-
mount.c | 20 +++++++++++++++++++-
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/cr-dump.c b/cr-dump.c
index d8ad0fc..aa44b95 100644
--- a/cr-dump.c
+++ b/cr-dump.c
@@ -1803,7 +1803,7 @@ int cr_dump_tasks(pid_t pid)
if (collect_file_locks())
goto err;
- if (dump_mnt_namespaces() < 0)
+ if (collect_mnt_namespaces() < 0)
goto err;
if (collect_sockets(pid))
@@ -1818,6 +1818,10 @@ int cr_dump_tasks(pid_t pid)
goto err;
}
+ /* MNT namespaces are dumped after files to save remapped links */
+ if (dump_mnt_namespaces() < 0)
+ goto err;
+
if (dump_verify_tty_sids())
goto err;
diff --git a/mount.c b/mount.c
index 50171a3..80ed133 100644
--- a/mount.c
+++ b/mount.c
@@ -2123,7 +2123,25 @@ int collect_mnt_namespaces(void)
int dump_mnt_namespaces(void)
{
int n = 0;
- return walk_mnt_ns(dump_mnt_ns, &n);
+ struct mount_info *pm = NULL, *m, *ml = NULL;
+
+ if (!(root_ns_mask & CLONE_NEWNS))
+ return 0;
+
+ for (ml = m = mntinfo; m; pm = m, m = m->next) {
+ if (ml->nsid == m->nsid)
+ continue;
+
+ pm->next = NULL;
+ if (dump_mnt_ns(ml->nsid, ml, &n))
+ return -1;
+ pm->next = m;
+ ml = m;
+ }
+ if (dump_mnt_ns(ml->nsid, ml, &n))
+ return -1;
+
+ return 0;
}
struct ns_desc mnt_ns_desc = NS_DESC_ENTRY(CLONE_NEWNS, "mnt");
--
1.8.5.3
More information about the CRIU
mailing list