Johannes Weiner <hannes@xxxxxxxxxxx> writes: > On Tue, Nov 09, 2010 at 01:24:29AM -0800, Greg Thelen wrote: >> 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)) { > > What about mem->use_hierarchy that is checked in > __mem_cgroup_has_dirty_limit()? Is it no longer needed? It is no longer needed because the callers of mem_cgroup_page_stat() call __mem_cgroup_has_dirty_limit(). In the current implementation, if use_hierarchy=1 then the cgroup does not have dirty limits, so calls into mem_cgroup_page_stat() are avoided. Specifically the callers of mem_cgroup_page_stat() are: 1. mem_cgroup_dirty_info() which calls __mem_cgroup_has_dirty_limit() and returns false if use_hierarchy=1. 2. throttle_vm_writeout() which calls mem_dirty_info() -> mem_cgroup_dirty_info() -> __mem_cgroup_has_dirty_limit() will fall back to global limits if use_hierarchy=1. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>