From: Christian Brauner Date: Tue, 2 Feb 2021 17:31:52 +0000 (+0100) Subject: lxccontainer: use cgroup_freeze() and cgroup_unfreeze() X-Git-Tag: lxc-5.0.0~305^2~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97d7b200d996900e91b9df40f5f3ef0d75d4f43d;p=thirdparty%2Flxc.git lxccontainer: use cgroup_freeze() and cgroup_unfreeze() Signed-off-by: Christian Brauner --- 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)