diff options
author | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> | 2013-09-11 17:22:06 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-11 18:57:48 -0400 |
commit | 74060e4d78795c7c43805133cb717d82533d4e0d (patch) | |
tree | 923febdc5b4565fbbcf05387d7cc423c72648695 /mm/hugetlb.c | |
parent | e632a938d914d271bec26e570d36c755a1e35e4c (diff) |
mm: mbind: add hugepage migration code to mbind()
Extend do_mbind() to handle vma with VM_HUGETLB set. We will be able to
migrate hugepage with mbind(2) after applying the enablement patch which
comes later in this series.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
Acked-by: Hillf Danton <dhillf@gmail.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Hugh Dickins <hughd@google.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Rik van Riel <riel@redhat.com>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
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 | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index e51723866fb1..d37b3b95c439 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -1207,6 +1207,20 @@ static struct page *alloc_huge_page(struct vm_area_struct *vma, | |||
1207 | return page; | 1207 | return page; |
1208 | } | 1208 | } |
1209 | 1209 | ||
1210 | /* | ||
1211 | * alloc_huge_page()'s wrapper which simply returns the page if allocation | ||
1212 | * succeeds, otherwise NULL. This function is called from new_vma_page(), | ||
1213 | * where no ERR_VALUE is expected to be returned. | ||
1214 | */ | ||
1215 | struct page *alloc_huge_page_noerr(struct vm_area_struct *vma, | ||
1216 | unsigned long addr, int avoid_reserve) | ||
1217 | { | ||
1218 | struct page *page = alloc_huge_page(vma, addr, avoid_reserve); | ||
1219 | if (IS_ERR(page)) | ||
1220 | page = NULL; | ||
1221 | return page; | ||
1222 | } | ||
1223 | |||
1210 | int __weak alloc_bootmem_huge_page(struct hstate *h) | 1224 | int __weak alloc_bootmem_huge_page(struct hstate *h) |
1211 | { | 1225 | { |
1212 | struct huge_bootmem_page *m; | 1226 | struct huge_bootmem_page *m; |