[CRIU] [RFC PATCH 3/5] cr-restore: restore root sid before mount namespace

Stanislav Kinsburskiy skinsbursky at virtuozzo.com
Mon Nov 23 09:22:44 PST 2015


This is a precursor patch for AutoFS mount restore.
To restore AutoFS-nested mount points, we have to created target dentries.
To be able to do so, the process have to be process group leader before AutoFS
mount is called.

Note: there is another way, how to set process as a group leader. We can fork
a child with CLONE_VM, and use it to mount all the mount points.

Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
---
 cr-restore.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/cr-restore.c b/cr-restore.c
index 06fceb6..9aec077 100644
--- a/cr-restore.c
+++ b/cr-restore.c
@@ -1441,7 +1441,10 @@ static int create_children_and_session(void)
 			return ret;
 	}
 
-	restore_sid();
+	if (getpid() == 1)
+		pr_info("Skipping restore_sid() for init\n");
+	else
+		restore_sid();
 
 	pr_info("Restoring children in our session:\n");
 	list_for_each_entry(child, &current->children, sibling) {
@@ -1524,6 +1527,9 @@ static int restore_task_with_children(void *_arg)
 		if (restore_finish_stage(CR_STATE_RESTORE_NS) < 0)
 			goto err;
 
+		pr_info("Calling restore_sid() for init\n");
+		restore_sid();
+
 		/*
 		 * We need non /proc proc mount for restoring pid and mount
 		 * namespaces and do not care for the rest of the cases.



More information about the CRIU mailing list