|
@@ -3744,16 +3744,6 @@ void mem_cgroup_split_huge_fixup(struct page *head)
|
|
|
}
|
|
|
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
|
|
|
|
|
-static void mem_cgroup_move_account_page_stat(struct mem_cgroup *from,
|
|
|
- struct mem_cgroup *to,
|
|
|
- unsigned int nr_pages,
|
|
|
- enum mem_cgroup_stat_index idx)
|
|
|
-{
|
|
|
- /* Update stat data for mem_cgroup */
|
|
|
- __this_cpu_sub(from->stat->count[idx], nr_pages);
|
|
|
- __this_cpu_add(to->stat->count[idx], nr_pages);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* mem_cgroup_move_account - move account of the page
|
|
|
* @page: the page
|
|
@@ -3799,13 +3789,19 @@ static int mem_cgroup_move_account(struct page *page,
|
|
|
|
|
|
move_lock_mem_cgroup(from, &flags);
|
|
|
|
|
|
- if (!anon && page_mapped(page))
|
|
|
- mem_cgroup_move_account_page_stat(from, to, nr_pages,
|
|
|
- MEM_CGROUP_STAT_FILE_MAPPED);
|
|
|
+ if (!anon && page_mapped(page)) {
|
|
|
+ __this_cpu_sub(from->stat->count[MEM_CGROUP_STAT_FILE_MAPPED],
|
|
|
+ nr_pages);
|
|
|
+ __this_cpu_add(to->stat->count[MEM_CGROUP_STAT_FILE_MAPPED],
|
|
|
+ nr_pages);
|
|
|
+ }
|
|
|
|
|
|
- if (PageWriteback(page))
|
|
|
- mem_cgroup_move_account_page_stat(from, to, nr_pages,
|
|
|
- MEM_CGROUP_STAT_WRITEBACK);
|
|
|
+ if (PageWriteback(page)) {
|
|
|
+ __this_cpu_sub(from->stat->count[MEM_CGROUP_STAT_WRITEBACK],
|
|
|
+ nr_pages);
|
|
|
+ __this_cpu_add(to->stat->count[MEM_CGROUP_STAT_WRITEBACK],
|
|
|
+ nr_pages);
|
|
|
+ }
|
|
|
|
|
|
mem_cgroup_charge_statistics(from, page, anon, -nr_pages);
|
|
|
|