diff options
author | Andi Kleen <ak@suse.de> | 2008-07-24 00:27:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-24 13:47:17 -0400 |
commit | b7ba30c679ed1eb7ed3ed8f281f6493282042bd4 (patch) | |
tree | 9857d629f7903fc6e56e518c2443cee8899902d9 /mm/hugetlb.c | |
parent | ff7ea79cf7c3a481851bd4b2185fdeb6ce4afa29 (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>
Diffstat (limited to 'mm/hugetlb.c')
-rw-r--r-- | mm/hugetlb.c | 17 |
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 | ||
516 | static 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 | |||
516 | static struct page *alloc_fresh_huge_page_node(int nid) | 526 | static 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; |