From: Christian Brauner Date: Wed, 10 Feb 2021 12:21:25 +0000 (+0100) Subject: criu: handle new cgroup layout X-Git-Tag: lxc-5.0.0~294^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9fc9be8f011270b1ce22345d7d634ce9a533cd4;p=thirdparty%2Flxc.git criu: handle new cgroup layout Signed-off-by: Christian Brauner --- diff --git a/src/lxc/criu.c b/src/lxc/criu.c index 20a4a3ec7..562aab57a 100644 --- a/src/lxc/criu.c +++ b/src/lxc/criu.c @@ -887,6 +887,7 @@ static void do_restore(struct lxc_container *c, int status_pipe, struct migrate_ struct lxc_handler *handler; int status = 0; int pipes[2] = {-1, -1}; + struct cgroup_ops *cgroup_ops; /* Try to detach from the current controlling tty if it exists. * Otherwise, lxc_init (via lxc_console) will attach the container's @@ -907,9 +908,25 @@ static void do_restore(struct lxc_container *c, int status_pipe, struct migrate_ if (lxc_init(c->name, handler) < 0) goto out; + cgroup_ops = handler->cgroup_ops; - if (!handler->cgroup_ops->payload_create(handler->cgroup_ops, handler)) { - ERROR("failed creating groups"); + if (!cgroup_ops->monitor_create(cgroup_ops, handler)) { + ERROR("Failed to create monitor cgroup"); + goto out_fini_handler; + } + + if (!cgroup_ops->monitor_enter(cgroup_ops, handler)) { + ERROR("Failed to enter monitor cgroup"); + goto out_fini_handler; + } + + if (!cgroup_ops->monitor_delegate_controllers(cgroup_ops)) { + ERROR("Failed to delegate controllers to monitor cgroup"); + goto out_fini_handler; + } + + if (!cgroup_ops->payload_create(cgroup_ops, handler)) { + ERROR("Failed creating cgroups"); goto out_fini_handler; }