diff options
author | KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> | 2012-03-21 19:34:25 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-21 20:55:01 -0400 |
commit | 2ff76f1193f8481f7e6c29304eea4006e8e51569 (patch) | |
tree | a263678dc298e29a0c54bb2e6f98bb1d5ee19751 /mm/memcontrol.c | |
parent | 89c06bd52fb9ffceddf84f7309d2e8c9f1666216 (diff) |
memcg: remove PCG_FILE_MAPPED
With the new lock scheme for updating memcg's page stat, we don't need a
flag PCG_FILE_MAPPED which was duplicated information of page_mapped().
[hughd@google.com: cosmetic fix]
[hughd@google.com: add comment to MEM_CGROUP_CHARGE_TYPE_MAPPED case in __mem_cgroup_uncharge_common()]
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Greg Thelen <gthelen@google.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Ying Han <yinghan@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index df1e180f6c30..0e13b2aeea61 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -1966,10 +1966,6 @@ void mem_cgroup_update_page_stat(struct page *page, | |||
1966 | 1966 | ||
1967 | switch (idx) { | 1967 | switch (idx) { |
1968 | case MEMCG_NR_FILE_MAPPED: | 1968 | case MEMCG_NR_FILE_MAPPED: |
1969 | if (val > 0) | ||
1970 | SetPageCgroupFileMapped(pc); | ||
1971 | else if (!page_mapped(page)) | ||
1972 | ClearPageCgroupFileMapped(pc); | ||
1973 | idx = MEM_CGROUP_STAT_FILE_MAPPED; | 1969 | idx = MEM_CGROUP_STAT_FILE_MAPPED; |
1974 | break; | 1970 | break; |
1975 | default: | 1971 | default: |
@@ -2617,7 +2613,7 @@ static int mem_cgroup_move_account(struct page *page, | |||
2617 | 2613 | ||
2618 | move_lock_mem_cgroup(from, &flags); | 2614 | move_lock_mem_cgroup(from, &flags); |
2619 | 2615 | ||
2620 | if (PageCgroupFileMapped(pc)) { | 2616 | if (!anon && page_mapped(page)) { |
2621 | /* Update mapped_file data for mem_cgroup */ | 2617 | /* Update mapped_file data for mem_cgroup */ |
2622 | preempt_disable(); | 2618 | preempt_disable(); |
2623 | __this_cpu_dec(from->stat->count[MEM_CGROUP_STAT_FILE_MAPPED]); | 2619 | __this_cpu_dec(from->stat->count[MEM_CGROUP_STAT_FILE_MAPPED]); |
@@ -2982,6 +2978,11 @@ __mem_cgroup_uncharge_common(struct page *page, enum charge_type ctype) | |||
2982 | 2978 | ||
2983 | switch (ctype) { | 2979 | switch (ctype) { |
2984 | case MEM_CGROUP_CHARGE_TYPE_MAPPED: | 2980 | case MEM_CGROUP_CHARGE_TYPE_MAPPED: |
2981 | /* | ||
2982 | * Generally PageAnon tells if it's the anon statistics to be | ||
2983 | * updated; but sometimes e.g. mem_cgroup_uncharge_page() is | ||
2984 | * used before page reached the stage of being marked PageAnon. | ||
2985 | */ | ||
2985 | anon = true; | 2986 | anon = true; |
2986 | /* fallthrough */ | 2987 | /* fallthrough */ |
2987 | case MEM_CGROUP_CHARGE_TYPE_DROP: | 2988 | case MEM_CGROUP_CHARGE_TYPE_DROP: |