From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail144.messagelabs.com (mail144.messagelabs.com [216.82.254.51]) by kanga.kvack.org (Postfix) with SMTP id 75DAB6B00A0 for ; Fri, 25 Sep 2009 04:31:03 -0400 (EDT) Received: from m5.gw.fujitsu.co.jp ([10.0.50.75]) by fgwmail7.fujitsu.co.jp (Fujitsu Gateway) with ESMTP id n8P8V114018019 for (envelope-from kamezawa.hiroyu@jp.fujitsu.com); Fri, 25 Sep 2009 17:31:01 +0900 Received: from smail (m5 [127.0.0.1]) by outgoing.m5.gw.fujitsu.co.jp (Postfix) with ESMTP id E0BE145DE51 for ; Fri, 25 Sep 2009 17:31:00 +0900 (JST) Received: from s5.gw.fujitsu.co.jp (s5.gw.fujitsu.co.jp [10.0.50.95]) by m5.gw.fujitsu.co.jp (Postfix) with ESMTP id C0E3C45DE4E for ; Fri, 25 Sep 2009 17:31:00 +0900 (JST) Received: from s5.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s5.gw.fujitsu.co.jp (Postfix) with ESMTP id A16981DB8062 for ; Fri, 25 Sep 2009 17:31:00 +0900 (JST) Received: from m106.s.css.fujitsu.com (m106.s.css.fujitsu.com [10.249.87.106]) by s5.gw.fujitsu.co.jp (Postfix) with ESMTP id 5153F1DB8038 for ; Fri, 25 Sep 2009 17:31:00 +0900 (JST) Date: Fri, 25 Sep 2009 17:28:50 +0900 From: KAMEZAWA Hiroyuki Subject: [RFC][PATCH 8/10] memcg: clean up charge/uncharge anon Message-Id: <20090925172850.265abe78.kamezawa.hiroyu@jp.fujitsu.com> In-Reply-To: <20090925171721.b1bbbbe2.kamezawa.hiroyu@jp.fujitsu.com> References: <20090925171721.b1bbbbe2.kamezawa.hiroyu@jp.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org To: KAMEZAWA Hiroyuki Cc: "linux-mm@kvack.org" , "balbir@linux.vnet.ibm.com" , "nishimura@mxp.nes.nec.co.jp" List-ID: This may need careful review. == From: KAMEZAWA Hiroyuki In old codes, this function was used for other purposes rather than charginc new anon pages. But now, this function is (ranamed) and used only for new pages. For the same kind of reason, ucharge_page() should use VM_BUG_ON(). Signed-off-by: KAMEZAWA Hiroyuki --- mm/memcontrol.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) Index: temp-mmotm/mm/memcontrol.c =================================================================== --- temp-mmotm.orig/mm/memcontrol.c +++ temp-mmotm/mm/memcontrol.c @@ -1638,15 +1638,8 @@ int mem_cgroup_newpage_charge(struct pag return 0; if (PageCompound(page)) return 0; - /* - * If already mapped, we don't have to account. - * If page cache, page->mapping has address_space. - * But page->mapping may have out-of-use anon_vma pointer, - * detecit it by PageAnon() check. newly-mapped-anon's page->mapping - * is NULL. - */ - if (page_mapped(page) || (page->mapping && !PageAnon(page))) - return 0; + /* This function is "newpage_charge" and called right after alloc */ + VM_BUG_ON(page_mapped(page) || (page->mapping && !PageAnon(page))); if (unlikely(!mm)) mm = &init_mm; return mem_cgroup_charge_common(page, mm, gfp_mask, @@ -1901,11 +1894,11 @@ unlock_out: void mem_cgroup_uncharge_page(struct page *page) { - /* early check. */ - if (page_mapped(page)) - return; - if (page->mapping && !PageAnon(page)) - return; + /* + * Called when anonymous page's page->mapcount goes down to zero, + * or cancel a charge gotten by newpage_charge(). + */ + VM_BUG_ON(page_mapped(page) || (page->mapping && !PageAnon(page))); __mem_cgroup_uncharge_common(page, MEM_CGROUP_CHARGE_TYPE_MAPPED); } -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org