Commit c5c7272c authored by Andrew Vagin's avatar Andrew Vagin Committed by Pavel Emelyanov

cgroups: don't take into account a leading / for the "/" parent

Without this patch, we dump somethin like this:
{
	cnames: "hugetlb"
	dirs: 	{
		dir_name: ""
		children: 		{
			dir_name: "ewroot"
			children: <empty>
			properties: <empty>
		}

		properties: <empty>
	}

}

It's obvious, that dir_name should be newroot.

The problem is reproduced, if a task leaves in "/" and has a subgroup.
This issue was caught by a chance. The cgroup02 test doesn't clean up
controllers and leaves the "newroot" there. So when we executed a cgroup
test after cgroup02, we could find many directories like "ewroot",
"wroot", etc. This patch fixes this issue.
Signed-off-by: 's avatarAndrew Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 601e5bb4
...@@ -676,7 +676,9 @@ static int dump_cg_dirs(struct list_head *dirs, size_t n_dirs, CgroupDirEntry ** ...@@ -676,7 +676,9 @@ static int dump_cg_dirs(struct list_head *dirs, size_t n_dirs, CgroupDirEntry **
list_for_each_entry(cur, dirs, siblings) { list_for_each_entry(cur, dirs, siblings) {
cgroup_dir_entry__init(cde); cgroup_dir_entry__init(cde);
cde->dir_name = cur->path + poff + 1 /* leading / */; cde->dir_name = cur->path + poff;
if (poff != 1) /* parent isn't "/" */
cde->dir_name++; /* leading / */
cde->n_children = cur->n_children; cde->n_children = cur->n_children;
if (cur->n_children > 0) if (cur->n_children > 0)
if (dump_cg_dirs(&cur->children, cur->n_children, &cde->children, strlen(cur->path)) < 0) { if (dump_cg_dirs(&cur->children, cur->n_children, &cde->children, strlen(cur->path)) < 0) {
......
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