From 84701151f068a27414b20425d13c081c336d577a Mon Sep 17 00:00:00 2001 From: dlezcano Date: Mon, 5 Jan 2009 18:36:23 +0000 Subject: [PATCH] Add freezer compatibility for older interface From: Daniel Lezcano 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 --- src/lxc/freezer.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/lxc/freezer.c b/src/lxc/freezer.c index 9c774cc23..538943b7a 100644 --- a/src/lxc/freezer.c +++ b/src/lxc/freezer.c @@ -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);