[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1289294671-6865-5-git-send-email-gthelen@google.com>
Date: Tue, 9 Nov 2010 01:24:29 -0800
From: Greg Thelen <gthelen@...gle.com>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: Balbir Singh <balbir@...ux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>,
Daisuke Nishimura <nishimura@....nes.nec.co.jp>,
Johannes Weiner <hannes@...xchg.org>,
Wu Fengguang <fengguang.wu@...el.com>,
Minchan Kim <minchan.kim@...il.com>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, Greg Thelen <gthelen@...gle.com>
Subject: [PATCH 4/6] memcg: simplify mem_cgroup_page_stat()
The cgroup given to mem_cgroup_page_stat() is no allowed to be
NULL or the root cgroup. So there is no need to complicate the code
handling those cases.
Signed-off-by: Greg Thelen <gthelen@...gle.com>
---
mm/memcontrol.c | 48 ++++++++++++++++++++++--------------------------
1 files changed, 22 insertions(+), 26 deletions(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index eb621ee..f8df350 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1364,12 +1364,10 @@ memcg_hierarchical_free_pages(struct mem_cgroup *mem)
/*
* mem_cgroup_page_stat() - get memory cgroup file cache statistics
- * @mem: optional memory cgroup to query. If NULL, use current task's
- * cgroup.
+ * @mem: memory cgroup to query
* @item: memory statistic item exported to the kernel
*
- * Return the accounted statistic value or negative value if current task is
- * root cgroup.
+ * Return the accounted statistic value.
*/
long mem_cgroup_page_stat(struct mem_cgroup *mem,
enum mem_cgroup_nr_pages_item item)
@@ -1377,29 +1375,27 @@ long mem_cgroup_page_stat(struct mem_cgroup *mem,
struct mem_cgroup *iter;
long value;
+ VM_BUG_ON(!mem);
+ VM_BUG_ON(mem_cgroup_is_root(mem));
+
get_online_cpus();
- rcu_read_lock();
- if (!mem)
- mem = mem_cgroup_from_task(current);
- if (__mem_cgroup_has_dirty_limit(mem)) {
- /*
- * If we're looking for dirtyable pages we need to evaluate
- * free pages depending on the limit and usage of the parents
- * first of all.
- */
- if (item == MEMCG_NR_DIRTYABLE_PAGES)
- value = memcg_hierarchical_free_pages(mem);
- else
- value = 0;
- /*
- * Recursively evaluate page statistics against all cgroup
- * under hierarchy tree
- */
- for_each_mem_cgroup_tree(iter, mem)
- value += mem_cgroup_local_page_stat(iter, item);
- } else
- value = -EINVAL;
- rcu_read_unlock();
+
+ /*
+ * If we're looking for dirtyable pages we need to evaluate
+ * free pages depending on the limit and usage of the parents
+ * first of all.
+ */
+ if (item == MEMCG_NR_DIRTYABLE_PAGES)
+ value = memcg_hierarchical_free_pages(mem);
+ else
+ value = 0;
+ /*
+ * Recursively evaluate page statistics against all cgroup
+ * under hierarchy tree
+ */
+ for_each_mem_cgroup_tree(iter, mem)
+ value += mem_cgroup_local_page_stat(iter, item);
+
put_online_cpus();
return value;
--
1.7.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists