From d9fc9be8f011270b1ce22345d7d634ce9a533cd4 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Wed, 10 Feb 2021 13:21:25 +0100 Subject: [PATCH] criu: handle new cgroup layout Signed-off-by: Christian Brauner --- src/lxc/criu.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) 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; } -- 2.47.2