]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Add freezer compatibility for older interface
authordlezcano <dlezcano>
Mon, 5 Jan 2009 18:36:23 +0000 (18:36 +0000)
committerdlezcano <dlezcano>
Mon, 5 Jan 2009 18:36:23 +0000 (18:36 +0000)
From: Daniel Lezcano <dlezcano@fr.ibm.com>

Different interface exists for the freezer, "RUNNING" or "THAWED" should
be written to the freezer file, so in case "THAWED", we fall back to
"RUNNING". That allows to support older freezer kernel interface for 2.6.27.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/freezer.c

index 9c774cc23e447bedfd0b7261c3f4005e4eedcd89..538943b7a9eae07913e060bc106f271907e993b2 100644 (file)
@@ -36,7 +36,7 @@
 
 static int freeze_unfreeze(const char *name, int freeze)
 {
-       char freezer[MAXPATHLEN], *f = freeze?"FROZEN":"THAWED";
+       char freezer[MAXPATHLEN], *f;
        int fd, ret = -1;
        
        snprintf(freezer, MAXPATHLEN, 
@@ -48,7 +48,20 @@ static int freeze_unfreeze(const char *name, int freeze)
                return -1;
        }
 
-       ret = write(fd, f, strlen(f) + 1) < 0;
+       if (freeze) {
+               f = "FROZEN";
+               ret = write(fd, f, strlen(f) + 1) < 0;
+       } else {
+               f = "THAWED";
+               ret = write(fd, f, strlen(f) + 1) < 0;
+
+               /* compatibility code with old freezer interface */
+               if (ret) {
+                       f = "RUNNING";
+                       ret = write(fd, f, strlen(f) + 1) < 0;
+               }
+       }
+
        close(fd);
        if (ret) 
                lxc_log_syserror("failed to write to '%s'", freezer);