From f96cd890a8fd847e7a1073240f06cbd8361b7582 Mon Sep 17 00:00:00 2001 From: Katerina Koukiou Date: Thu, 21 Jul 2016 15:37:24 +0000 Subject: [PATCH] lxc: make container's init process session leader This patch forces container's init process, to become a session leader, that is its session ID is made the same as its process ID. That might seem unnecessary in general, but if we want to checkpoint a container with CRIU, which is needed for container migration, we must ensure that the SID of each process inside the container points to a process that lives in the same PID namespace as the container. Therefore, we force that the session leader is the init. Signed-off-by: Katerina Koukiou --- src/lxc/lxc_container.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index a39e24fc34..124b4416fa 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -2245,6 +2245,15 @@ static int lxcContainerChild(void *data) argv->npassFDs, argv->passFDs) < 0) goto cleanup; + /* Make init process of the container the leader of the new session. + * That is needed when checkpointing container. + */ + if (setsid() < 0) { + virReportSystemError(errno, "%s", + _("Unable to become session leader")); + goto cleanup; + } + ret = 0; cleanup: VIR_FREE(ttyPath); -- 2.39.5