freezer: non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
Christian Brauner 2018-01-17 20:09:13 +01:00
parent f577e0613c
commit fd5838e506
No known key found for this signature in database
GPG Key ID: 8EB056D53EECB12D

View File

@ -32,45 +32,57 @@
#include <sys/param.h>
#include "error.h"
#include "state.h"
#include "monitor.h"
#include "log.h"
#include "lxc.h"
#include "monitor.h"
#include "parse.h"
#include "state.h"
lxc_log_define(lxc_freezer, lxc);
lxc_state_t freezer_state(const char *name, const char *lxcpath)
{
int ret;
char v[100];
if (lxc_cgroup_get("freezer.state", v, 100, name, lxcpath) < 0)
ret = lxc_cgroup_get("freezer.state", v, 100, name, lxcpath);
if (ret < 0)
return -1;
if (v[strlen(v)-1] == '\n')
v[strlen(v)-1] = '\0';
v[99] = '\0';
v[lxc_char_right_gc(v, strlen(v))] = '\0';
return lxc_str2state(v);
}
static int do_freeze_thaw(int freeze, const char *name, const char *lxcpath)
{
int ret;
char v[100];
const char *state = freeze ? "FROZEN" : "THAWED";
if (lxc_cgroup_set("freezer.state", state, name, lxcpath) < 0) {
ERROR("Failed to freeze %s:%s", lxcpath, name);
ret = lxc_cgroup_set("freezer.state", state, name, lxcpath);
if (ret < 0) {
ERROR("Failed to freeze %s", name);
return -1;
}
while (1) {
if (lxc_cgroup_get("freezer.state", v, 100, name, lxcpath) < 0) {
ERROR("Failed to get new freezer state for %s:%s", lxcpath, name);
for (;;) {
ret = lxc_cgroup_get("freezer.state", v, 100, name, lxcpath);
if (ret < 0) {
ERROR("Failed to get freezer state of %s", name);
return -1;
}
if (v[strlen(v)-1] == '\n')
v[strlen(v)-1] = '\0';
if (strncmp(v, state, strlen(state)) == 0) {
if (name)
lxc_monitor_send_state(name, freeze ? FROZEN : THAWED, lxcpath);
v[99] = '\0';
v[lxc_char_right_gc(v, strlen(v))] = '\0';
ret = strncmp(v, state, strlen(state));
if (ret == 0) {
lxc_monitor_send_state(name, freeze ? FROZEN : THAWED, lxcpath);
return 0;
}
sleep(1);
}
}