cgroups: alloc_css_id() increments hierarchy depth

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Friday, June 4, 2010 - 3:59 pm

Gitweb:     http://git.kernel.org/linus/94b3dd0f7bb393d93e84a173b1df9b8b64c83ac4
Commit:     94b3dd0f7bb393d93e84a173b1df9b8b64c83ac4
Parent:     007d08678eb87478b65b3f229960c81dd7c7b8f3
Author:     Greg Thelen <gthelen@google.com>
AuthorDate: Fri Jun 4 14:15:03 2010 -0700
Committer:  Linus Torvalds <torvalds@linux-foundation.org>
CommitDate: Fri Jun 4 15:21:45 2010 -0700

    cgroups: alloc_css_id() increments hierarchy depth
    
    Child groups should have a greater depth than their parents.  Prior to
    this change, the parent would incorrectly report zero memory usage for
    child cgroups when use_hierarchy is enabled.
    
    test script:
      mount -t cgroup none /cgroups -o memory
      cd /cgroups
      mkdir cg1
    
      echo 1 > cg1/memory.use_hierarchy
      mkdir cg1/cg11
    
      echo $$ > cg1/cg11/tasks
      dd if=/dev/zero of=/tmp/foo bs=1M count=1
    
      echo
      echo CHILD
      grep cache cg1/cg11/memory.stat
    
      echo
      echo PARENT
      grep cache cg1/memory.stat
    
      echo $$ > tasks
      rmdir cg1/cg11 cg1
      cd /
      umount /cgroups
    
    Using fae9c79, a recent patch that changed alloc_css_id() depth computation,
    the parent incorrectly reports zero usage:
      root@ubuntu:~# ./test
      1+0 records in
      1+0 records out
      1048576 bytes (1.0 MB) copied, 0.0151844 s, 69.1 MB/s
    
      CHILD
      cache 1048576
      total_cache 1048576
    
      PARENT
      cache 0
      total_cache 0
    
    With this patch, the parent correctly includes child usage:
      root@ubuntu:~# ./test
      1+0 records in
      1+0 records out
      1048576 bytes (1.0 MB) copied, 0.0136827 s, 76.6 MB/s
    
      CHILD
      cache 1052672
      total_cache 1052672
    
      PARENT
      cache 0
      total_cache 1052672
    
    Signed-off-by: Greg Thelen <gthelen@google.com>
    Acked-by: Paul Menage <menage@google.com>
    Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Acked-by: Li Zefan <lizf@cn.fujitsu.com>
    Cc: <stable@kernel.org>		[2.6.34.x]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
 kernel/cgroup.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 422cb19..3ac6f5b 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -4598,7 +4598,7 @@ static int alloc_css_id(struct cgroup_subsys *ss, struct cgroup *parent,
 	parent_css = parent->subsys[subsys_id];
 	child_css = child->subsys[subsys_id];
 	parent_id = parent_css->id;
-	depth = parent_id->depth;
+	depth = parent_id->depth + 1;
 
 	child_id = get_new_cssid(ss, depth);
 	if (IS_ERR(child_id))
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
cgroups: alloc_css_id() increments hierarchy depth, Linux Kernel Mailing ..., (Fri Jun 4, 3:59 pm)