aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2008-07-24 00:27:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-24 13:47:17 -0400
commitb7ba30c679ed1eb7ed3ed8f281f6493282042bd4 (patch)
tree9857d629f7903fc6e56e518c2443cee8899902d9
parentff7ea79cf7c3a481851bd4b2185fdeb6ce4afa29 (diff)
hugetlb: factor out prep_new_huge_page
Needed to avoid code duplication in follow up patches. Acked-by: Adam Litke <agl@us.ibm.com> Acked-by: Nishanth Aravamudan <nacc@us.ibm.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/hugetlb.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index eda9642254a0..32dff4290c66 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -513,6 +513,16 @@ static int adjust_pool_surplus(int delta)
513 return ret; 513 return ret;
514} 514}
515 515
516static void prep_new_huge_page(struct page *page, int nid)
517{
518 set_compound_page_dtor(page, free_huge_page);
519 spin_lock(&hugetlb_lock);
520 nr_huge_pages++;
521 nr_huge_pages_node[nid]++;
522 spin_unlock(&hugetlb_lock);
523 put_page(page); /* free it into the hugepage allocator */
524}
525
516static struct page *alloc_fresh_huge_page_node(int nid) 526static struct page *alloc_fresh_huge_page_node(int nid)
517{ 527{
518 struct page *page; 528 struct page *page;
@@ -526,12 +536,7 @@ static struct page *alloc_fresh_huge_page_node(int nid)
526 __free_pages(page, HUGETLB_PAGE_ORDER); 536 __free_pages(page, HUGETLB_PAGE_ORDER);
527 return NULL; 537 return NULL;
528 } 538 }
529 set_compound_page_dtor(page, free_huge_page); 539 prep_new_huge_page(page, nid);
530 spin_lock(&hugetlb_lock);
531 nr_huge_pages++;
532 nr_huge_pages_node[nid]++;
533 spin_unlock(&hugetlb_lock);
534 put_page(page); /* free it into the hugepage allocator */
535 } 540 }
536 541
537 return page; 542 return page;