]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
c/r: use --restore-sibling option in CRIU
authorTycho Andersen <tycho.andersen@canonical.com>
Sat, 13 Sep 2014 01:05:54 +0000 (20:05 -0500)
committerStéphane Graber <stgraber@ubuntu.com>
Fri, 19 Sep 2014 21:06:37 +0000 (17:06 -0400)
After looking through some logs, it is a little cleaner to do it as
below, instead of what I originally posted.

Tycho

In order for LXC to be the parent of the restored process, CRIU needs to
restore init as its sibling, not as its child. This was previously accomplished
essentially via luck :). CRIU now has a --restore-sibling option which forces
this behavior that LXC expects. See more discussion in this thread:
http://lists.openvz.org/pipermail/criu/2014-September/thread.html#16330

v2: don't pass --restore-sibling to dump. This is mostly cosmetic, but will
    look less confusing in the logs if people ever look at them.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/lxc/lxccontainer.c

index b8b367ddd62c041b7da67839027f9455bfa9403d..a737191660dcaaf243dc811cfc4302ebeaebdbe9 100644 (file)
@@ -3533,8 +3533,8 @@ static void exec_criu(struct criu_opts *opts)
                if (!opts->stop)
                        static_args++;
        } else if (strcmp(opts->action, "restore") == 0) {
-               /* --root $(lxc_mount_point) --restore-detached --pidfile $foo */
-               static_args += 5;
+               /* --root $(lxc_mount_point) --restore-detached --restore-sibling --pidfile $foo */
+               static_args += 6;
        } else {
                return;
        }
@@ -3600,6 +3600,7 @@ static void exec_criu(struct criu_opts *opts)
                DECLARE_ARG("--root");
                DECLARE_ARG(opts->c->lxc_conf->rootfs.mount);
                DECLARE_ARG("--restore-detached");
+               DECLARE_ARG("--restore-sibling");
                DECLARE_ARG("--pidfile");
                DECLARE_ARG(opts->pidfile);