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>
This commit is contained in:
parent
89c06bd52f
commit
2ff76f1193
|
@ -6,8 +6,6 @@ enum {
|
|||
PCG_LOCK, /* Lock for pc->mem_cgroup and following bits. */
|
||||
PCG_USED, /* this object is in use. */
|
||||
PCG_MIGRATION, /* under page migration */
|
||||
/* flags for mem_cgroup and file and I/O status */
|
||||
PCG_FILE_MAPPED, /* page is accounted as "mapped" */
|
||||
__NR_PCG_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -66,10 +64,6 @@ TESTPCGFLAG(Used, USED)
|
|||
CLEARPCGFLAG(Used, USED)
|
||||
SETPCGFLAG(Used, USED)
|
||||
|
||||
SETPCGFLAG(FileMapped, FILE_MAPPED)
|
||||
CLEARPCGFLAG(FileMapped, FILE_MAPPED)
|
||||
TESTPCGFLAG(FileMapped, FILE_MAPPED)
|
||||
|
||||
SETPCGFLAG(Migration, MIGRATION)
|
||||
CLEARPCGFLAG(Migration, MIGRATION)
|
||||
TESTPCGFLAG(Migration, MIGRATION)
|
||||
|
|
|
@ -1966,10 +1966,6 @@ void mem_cgroup_update_page_stat(struct page *page,
|
|||
|
||||
switch (idx) {
|
||||
case MEMCG_NR_FILE_MAPPED:
|
||||
if (val > 0)
|
||||
SetPageCgroupFileMapped(pc);
|
||||
else if (!page_mapped(page))
|
||||
ClearPageCgroupFileMapped(pc);
|
||||
idx = MEM_CGROUP_STAT_FILE_MAPPED;
|
||||
break;
|
||||
default:
|
||||
|
@ -2617,7 +2613,7 @@ static int mem_cgroup_move_account(struct page *page,
|
|||
|
||||
move_lock_mem_cgroup(from, &flags);
|
||||
|
||||
if (PageCgroupFileMapped(pc)) {
|
||||
if (!anon && page_mapped(page)) {
|
||||
/* Update mapped_file data for mem_cgroup */
|
||||
preempt_disable();
|
||||
__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)
|
|||
|
||||
switch (ctype) {
|
||||
case MEM_CGROUP_CHARGE_TYPE_MAPPED:
|
||||
/*
|
||||
* Generally PageAnon tells if it's the anon statistics to be
|
||||
* updated; but sometimes e.g. mem_cgroup_uncharge_page() is
|
||||
* used before page reached the stage of being marked PageAnon.
|
||||
*/
|
||||
anon = true;
|
||||
/* fallthrough */
|
||||
case MEM_CGROUP_CHARGE_TYPE_DROP:
|
||||
|
|
Loading…
Reference in New Issue