Messages in this thread Patch in this message | | | Date | Mon, 22 Sep 2008 19:57:41 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | [PATCH 2/13] memcg: account fault-in swap under lock. |
| |
While page-cache's charge/uncharge is done under page_lock(), swap-cache isn't. (anonymous page is charged when it's newly allocated.)
This patch moves do_swap_page()'s charge() call under lock. This is good for avoiding unnecessary slow-path in charge().
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
mm/memory.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
Index: mmotm-2.6.27-rc6+/mm/memory.c =================================================================== --- mmotm-2.6.27-rc6+.orig/mm/memory.c +++ mmotm-2.6.27-rc6+/mm/memory.c @@ -2320,15 +2320,14 @@ static int do_swap_page(struct mm_struct count_vm_event(PGMAJFAULT); } + lock_page(page); + delayacct_clear_flag(DELAYACCT_PF_SWAPIN); + if (mem_cgroup_charge(page, mm, GFP_KERNEL)) { - delayacct_clear_flag(DELAYACCT_PF_SWAPIN); ret = VM_FAULT_OOM; goto out; } - mark_page_accessed(page); - lock_page(page); - delayacct_clear_flag(DELAYACCT_PF_SWAPIN); /* * Back out if somebody else already faulted in this pte.
| |