cgroups: cgfsng_set: handle unified hierarchy

parent 0069cc61
......@@ -2390,28 +2390,34 @@ static int cgfsng_get(const char *filename, char *value, size_t len,
* Here we don't have a cgroup_data set up, so we ask the running
* container through the commands API for the cgroup path
*/
static int cgfsng_set(const char *filename, const char *value, const char *name, const char *lxcpath)
static int cgfsng_set(const char *filename, const char *value, const char *name,
const char *lxcpath)
{
char *subsystem, *p, *path;
struct hierarchy *h;
int ret = -1;
size_t controller_len;
char *controller, *p, *path;
struct hierarchy *h;
subsystem = alloca(strlen(filename) + 1);
strcpy(subsystem, filename);
if ((p = strchr(subsystem, '.')) != NULL)
controller_len = strlen(filename);
controller = alloca(controller_len + 1);
strcpy(controller, filename);
p = strchr(controller, '.');
if (p)
*p = '\0';
path = lxc_cmd_get_cgroup_path(name, lxcpath, subsystem);
if (!path) /* not running */
path = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
/* not running */
if (!path)
return -1;
h = get_hierarchy(subsystem);
h = get_hierarchy(controller);
if (h) {
char *fullpath = build_full_cgpath_from_monitorpath(h, path, filename);
char *fullpath;
fullpath = build_full_cgpath_from_monitorpath(h, path, filename);
ret = lxc_write_to_file(fullpath, value, strlen(value), false);
free(fullpath);
}
free(path);
return ret;
......
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