diff options
author | Andrea Arcangeli <aarcange@redhat.com> | 2011-01-13 18:47:17 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 20:32:47 -0500 |
commit | a664b2d8555c659127bf8fe049a58449d394a707 (patch) | |
tree | 14771f4ab93a9dda98174f21e0361a77e2aebfa6 /include/linux/khugepaged.h | |
parent | 1ddd6db43a08cba56c7ee920800980862086f1c3 (diff) |
thp: madvise(MADV_NOHUGEPAGE)
Add madvise MADV_NOHUGEPAGE to mark regions that are not important to be
hugepage backed. Return -EINVAL if the vma is not of an anonymous type,
or the feature isn't built into the kernel. Never silently return
success.
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/khugepaged.h')
-rw-r--r-- | include/linux/khugepaged.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h index 552f3184756c..6b394f0b5148 100644 --- a/include/linux/khugepaged.h +++ b/include/linux/khugepaged.h | |||
@@ -38,9 +38,10 @@ static inline void khugepaged_exit(struct mm_struct *mm) | |||
38 | static inline int khugepaged_enter(struct vm_area_struct *vma) | 38 | static inline int khugepaged_enter(struct vm_area_struct *vma) |
39 | { | 39 | { |
40 | if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags)) | 40 | if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags)) |
41 | if (khugepaged_always() || | 41 | if ((khugepaged_always() || |
42 | (khugepaged_req_madv() && | 42 | (khugepaged_req_madv() && |
43 | vma->vm_flags & VM_HUGEPAGE)) | 43 | vma->vm_flags & VM_HUGEPAGE)) && |
44 | !(vma->vm_flags & VM_NOHUGEPAGE)) | ||
44 | if (__khugepaged_enter(vma->vm_mm)) | 45 | if (__khugepaged_enter(vma->vm_mm)) |
45 | return -ENOMEM; | 46 | return -ENOMEM; |
46 | return 0; | 47 | return 0; |