Re: [PATCH 3/4] thp: introduce hugepage_vma_check()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 18, 2012 at 6:12 PM, Bob Liu <lliubbo@xxxxxxxxx> wrote:
> Multi place do the same check.
>
> Signed-off-by: Bob Liu <lliubbo@xxxxxxxxx>
> ---
>  mm/huge_memory.c |   38 +++++++++++++++++---------------------
>  1 file changed, 17 insertions(+), 21 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index e575b29..3588fec 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1913,6 +1913,20 @@ static struct page
>  }
>  #endif
>
> +static bool hugepage_vma_check(struct vm_area_struct *vma)
> +{
> +       if ((!(vma->vm_flags & VM_HUGEPAGE) && !khugepaged_always()) ||
> +           (vma->vm_flags & VM_NOHUGEPAGE))
> +               return false;
> +
> +       if (!vma->anon_vma || vma->vm_ops)
> +               return false;
> +       if (is_vma_temporary_stack(vma))
> +               return false;
> +       VM_BUG_ON(vma->vm_flags & VM_NO_THP);
> +       return true;
> +}
> +
>  static void collapse_huge_page(struct mm_struct *mm,
>                                    unsigned long address,
>                                    struct page **hpage,
> @@ -1953,17 +1967,8 @@ static void collapse_huge_page(struct mm_struct *mm,
>         hend = vma->vm_end & HPAGE_PMD_MASK;
>         if (address < hstart || address + HPAGE_PMD_SIZE > hend)
>                 goto out;
> -
> -       if ((!(vma->vm_flags & VM_HUGEPAGE) && !khugepaged_always()) ||
> -           (vma->vm_flags & VM_NOHUGEPAGE))
> -               goto out;
> -
> -       if (!vma->anon_vma || vma->vm_ops)
> -               goto out;
> -       if (is_vma_temporary_stack(vma))
> +       if (!hugepage_vma_check(vma))
>                 goto out;
> -       VM_BUG_ON(vma->vm_flags & VM_NO_THP);
> -
>         pmd = hugepage_get_pmd(mm, address);
>         if (!pmd)
>                 goto out;
> @@ -2171,20 +2176,11 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages,
>                         progress++;
>                         break;
>                 }
> -
> -               if ((!(vma->vm_flags & VM_HUGEPAGE) &&
> -                    !khugepaged_always()) ||
> -                   (vma->vm_flags & VM_NOHUGEPAGE)) {
> -               skip:
> +               if (!hugepage_vma_check(vma)) {
> +skip:
>                         progress++;
>                         continue;
>                 }
> -               if (!vma->anon_vma || vma->vm_ops)
> -                       goto skip;
> -               if (is_vma_temporary_stack(vma))
> -                       goto skip;
> -               VM_BUG_ON(vma->vm_flags & VM_NO_THP);
> -
>                 hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK;
>                 hend = vma->vm_end & HPAGE_PMD_MASK;
>                 if (hstart >= hend)
> --
> 1.7.9.5
>
>



-- 
Regards,
--Bob

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]