]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxccontainer: use cgroup_freeze() and cgroup_unfreeze()
authorChristian Brauner <christian.brauner@ubuntu.com>
Tue, 2 Feb 2021 17:31:52 +0000 (18:31 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Tue, 2 Feb 2021 17:56:23 +0000 (18:56 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/lxccontainer.c

index c8e2b78ffb9552e379bc20ae5e0d904770fb595d..c309319d648d65a82f811ca66df62c68c98a7409 100644 (file)
@@ -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)