Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757176Ab3CNKvF (ORCPT ); Thu, 14 Mar 2013 06:51:05 -0400 Received: from e23smtp03.au.ibm.com ([202.81.31.145]:54121 "EHLO e23smtp03.au.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756837Ab3CNKvB (ORCPT ); Thu, 14 Mar 2013 06:51:01 -0400 From: Wanpeng Li To: Andrew Morton Cc: Michal Hocko , "Aneesh Kumar K.V" , Hillf Danton , KAMEZAWA Hiroyuki , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Wanpeng Li Subject: [PATCH v2] mm/hugetlb: fix total hugetlbfs pages count when memory overcommit accouting Date: Thu, 14 Mar 2013 18:49:49 +0800 Message-Id: <1363258189-24945-1-git-send-email-liwanp@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.5.4 x-cbid: 13031410-6102-0000-0000-0000032771C0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1492 Lines: 48 Changelog: v1 -> v2: * update patch description, spotted by Michal hugetlb_total_pages() does not account for all the supported hugepage sizes. This can lead to incorrect calculation of the total number of page frames used by hugetlb. This patch corrects the issue. Testcase: boot: hugepagesz=1G hugepages=1 before patch: egrep 'CommitLimit' /proc/meminfo CommitLimit: 55434168 kB after patch: egrep 'CommitLimit' /proc/meminfo CommitLimit: 54909880 kB Signed-off-by: Wanpeng Li --- mm/hugetlb.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index cdb64e4..9e25040 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2124,8 +2124,11 @@ int hugetlb_report_node_meminfo(int nid, char *buf) /* Return the number pages of memory we physically have, in PAGE_SIZE units. */ unsigned long hugetlb_total_pages(void) { - struct hstate *h = &default_hstate; - return h->nr_huge_pages * pages_per_huge_page(h); + struct hstate *h; + unsigned long nr_total_pages = 0; + for_each_hstate(h) + nr_total_pages += h->nr_huge_pages * pages_per_huge_page(h); + return nr_total_pages; } static int hugetlb_acct_memory(struct hstate *h, long delta) -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/