Commit fa082227 by Michel Normand Committed by Daniel Lezcano

lxc-info to report the FROZEN state

this state is reported when the lxc-freeze command was issued on the container. Signed-off-by: 's avatarMichel Normand <normand@fr.ibm.com> Signed-off-by: 's avatarDaniel Lezcano <dlezcano@fr.ibm.com>
parent 985d15b1
...@@ -40,7 +40,7 @@ lxc_log_define(lxc_state, lxc); ...@@ -40,7 +40,7 @@ lxc_log_define(lxc_state, lxc);
static char *strstate[] = { static char *strstate[] = {
"STOPPED", "STARTING", "RUNNING", "STOPPING", "STOPPED", "STARTING", "RUNNING", "STOPPING",
"ABORTING", "FREEZING", "FROZEN", "ABORTING", "FREEZING", "FROZEN", "THAWED",
}; };
const char *lxc_state2str(lxc_state_t state) const char *lxc_state2str(lxc_state_t state)
...@@ -72,13 +72,17 @@ int lxc_rmstate(const char *name) ...@@ -72,13 +72,17 @@ int lxc_rmstate(const char *name)
static int freezer_state(const char *name) static int freezer_state(const char *name)
{ {
char *nsgroup;
char freezer[MAXPATHLEN]; char freezer[MAXPATHLEN];
char status[MAXPATHLEN]; char status[MAXPATHLEN];
FILE *file; FILE *file;
int err; int err;
snprintf(freezer, MAXPATHLEN, err = lxc_cgroup_path_get(&nsgroup, name);
LXCPATH "/%s/freezer.state", name); if (err)
return -1;
snprintf(freezer, MAXPATHLEN, "%s/freezer.state", nsgroup);
file = fopen(freezer, "r"); file = fopen(freezer, "r");
if (!file) if (!file)
...@@ -95,7 +99,7 @@ static int freezer_state(const char *name) ...@@ -95,7 +99,7 @@ static int freezer_state(const char *name)
return lxc_str2state(status); return lxc_str2state(status);
} }
lxc_state_t lxc_getstate(const char *name) static lxc_state_t __lxc_getstate(const char *name)
{ {
struct lxc_command command = { struct lxc_command command = {
.request = { .type = LXC_COMMAND_STATE }, .request = { .type = LXC_COMMAND_STATE },
...@@ -128,11 +132,11 @@ lxc_state_t lxc_getstate(const char *name) ...@@ -128,11 +132,11 @@ lxc_state_t lxc_getstate(const char *name)
return command.answer.ret; return command.answer.ret;
} }
lxc_state_t lxc_state(const char *name) lxc_state_t lxc_getstate(const char *name)
{ {
int state = freezer_state(name); int state = freezer_state(name);
if (state != FROZEN && state != FREEZING) if (state != FROZEN && state != FREEZING)
state = lxc_getstate(name); state = __lxc_getstate(name);
return state; return state;
} }
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
typedef enum { typedef enum {
STOPPED, STARTING, RUNNING, STOPPING, STOPPED, STARTING, RUNNING, STOPPING,
ABORTING, FREEZING, FROZEN, MAX_STATE, ABORTING, FREEZING, FROZEN, THAWED, MAX_STATE,
} lxc_state_t; } lxc_state_t;
extern int lxc_rmstate(const char *name); extern int lxc_rmstate(const char *name);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment