[PATCH 4/6] memcg: simplify mem_cgroup_page_stat()

From: Greg Thelen
Date: Tue Nov 09 2010 - 04:25:45 EST


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@xxxxxxxxxx>
---
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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/