From 97d7b200d996900e91b9df40f5f3ef0d75d4f43d Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Tue, 2 Feb 2021 18:31:52 +0100 Subject: [PATCH] lxccontainer: use cgroup_freeze() and cgroup_unfreeze() Signed-off-by: Christian Brauner --- src/lxc/lxccontainer.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index c8e2b78ff..c309319d6 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -507,32 +507,41 @@ WRAP_API(bool, lxcapi_is_running) static bool do_lxcapi_freeze(struct lxc_container *c) { + bool bret = true; lxc_state_t s; if (!c || !c->lxc_conf) return false; s = lxc_getstate(c->name, c->config_path); - if (s != FROZEN) - return lxc_freeze(c->lxc_conf, c->name, c->config_path) == 0; + if (s != FROZEN) { + bret = cgroup_freeze(c->lxc_conf, c->name, c->config_path, -1); + if (!bret && errno == ENOCGROUP2) + bret = lxc_freeze(c->lxc_conf, c->name, c->config_path); + } - return true; + return bret; } WRAP_API(bool, lxcapi_freeze) static bool do_lxcapi_unfreeze(struct lxc_container *c) { + bool bret = true; lxc_state_t s; if (!c || !c->lxc_conf) return false; s = lxc_getstate(c->name, c->config_path); - if (s == FROZEN) - return lxc_unfreeze(c->lxc_conf, c->name, c->config_path) == 0; + if (s == FROZEN) { + bret = cgroup_unfreeze(c->lxc_conf, c->name, c->config_path, -1); + if (!bret && errno == ENOCGROUP2) + bret = lxc_unfreeze(c->lxc_conf, c->name, c->config_path); + } - return true; + + return bret; } WRAP_API(bool, lxcapi_unfreeze) -- 2.47.2