return collect_subsytems();
}
-static int cgm_unfreeze_fromhandler(struct lxc_handler *handler)
+static bool cgm_unfreeze_fromhandler(struct lxc_handler *handler)
{
char *cgroup_path = handler->cgroup_info->data;
ERROR("call to cgmanager_set_value_sync failed: %s", nerr->message);
nih_free(nerr);
ERROR("Error unfreezing %s", cgroup_path);
- return -1;
+ return false;
}
- return 0;
+ return true;
}
static bool setup_limits(struct lxc_handler *h, bool do_devices)
return lxc_cgroup_get_hierarchy_path_handler(subsystem, handler);
}
-static int cgfs_unfreeze_fromhandler(struct lxc_handler *handler)
+static bool cgfs_unfreeze_fromhandler(struct lxc_handler *handler)
{
char *cgabspath, *cgrelpath;
int ret;
cgrelpath = lxc_cgroup_get_hierarchy_path_handler("freezer", handler);
cgabspath = lxc_cgroup_find_abs_path("freezer", cgrelpath, true, NULL);
if (!cgabspath)
- return -1;
+ return false;
ret = do_cgroup_set(cgabspath, "freezer.state", "THAWED");
free(cgabspath);
- return ret;
+ return ret == 0;
}
bool cgroupfs_setup_limits(struct lxc_handler *h, bool with_devices)
return active_cg_ops->get(filename, value, len, name, lxcpath);
}
-int lxc_unfreeze_fromhandler(struct lxc_handler *handler)
+bool lxc_unfreeze_fromhandler(struct lxc_handler *handler)
{
return active_cg_ops->unfreeze_fromhandler(handler);
}
char *(*get_cgroup)(struct lxc_handler *handler, const char *subsystem);
int (*set)(const char *filename, const char *value, const char *name, const char *lxcpath);
int (*get)(const char *filename, char *value, size_t len, const char *name, const char *lxcpath);
- int (*unfreeze_fromhandler)(struct lxc_handler *handler);
+ bool (*unfreeze_fromhandler)(struct lxc_handler *handler);
bool (*setup_limits)(struct lxc_handler *handler, bool with_devices);
bool (*chown)(struct lxc_handler *handler);
bool (*attach)(const char *name, const char *lxcpath, pid_t pid);
extern char *cgroup_get_cgroup(struct lxc_handler *handler, const char *subsystem);
extern bool lxc_cgroup_attach(const char *name, const char *lxcpath, pid_t pid);
extern bool lxc_setup_mount_cgroup(const char *root, struct lxc_cgroup_info *cgroup_info, int type);
+extern bool lxc_unfreeze_fromhandler(struct lxc_handler *handler);
extern int lxc_cgroup_set(const char *filename, const char *value, const char *name, const char *lxcpath);
extern int lxc_cgroup_get(const char *filename, char *value, size_t len, const char *name, const char *lxcpath);
-extern int lxc_unfreeze_fromhandler(struct lxc_handler *handler);
#endif
struct lxc_handler *handler)
{
struct lxc_cmd_rsp rsp;
- int ret;
int stopsignal = SIGKILL;
if (handler->conf->stopsignal)
memset(&rsp, 0, sizeof(rsp));
rsp.ret = kill(handler->pid, stopsignal);
if (!rsp.ret) {
- ret = lxc_unfreeze_fromhandler(handler);
- if (!ret)
+ if (lxc_unfreeze_fromhandler(handler))
return 0;
ERROR("Failed to unfreeze %s:%s", handler->lxcpath, handler->name);
- rsp.ret = ret;
+ rsp.ret = -1;
}
return lxc_cmd_rsp_send(fd, &rsp);