Re: [PATCH] mm: khugepaged: skip huge page collapse for special files

From: Yang Shi
Date: Wed Oct 27 2021 - 17:57:21 EST


On Wed, Oct 27, 2021 at 1:53 PM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Wed, 27 Oct 2021 13:44:37 -0700 Yang Shi <shy828301@xxxxxxxxx> wrote:
>
> > > > --- a/mm/khugepaged.c
> > > > +++ b/mm/khugepaged.c
> > > > @@ -445,22 +445,25 @@ static bool hugepage_vma_check(struct vm_area_struct *vma,
> > > > if (!transhuge_vma_enabled(vma, vm_flags))
> > > > return false;
> > > >
> > > > - /* Enabled via shmem mount options or sysfs settings. */
> > > > - if (shmem_file(vma->vm_file) && shmem_huge_enabled(vma)) {
> > > > + if (vma->vm_file)
> > > > return IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - vma->vm_pgoff,
> > > > HPAGE_PMD_NR);
> > >
> > > Am I misreading this? If we return here for vma->vm_file, the following
> > > logic (shmem_file(), etc.) would be skipped, no?
> >
> > Oh, yes, you are right. My mistake.
> >
> > Andrew,
> >
> > Could you please apply the below fix?
>
> um, how well tested are these changes?

I has this fix on my test machine, but somehow forgot to fold it into
the original patch. The whole fix was tested by opening /dev/nullb0
readonly and mapping with PROT_EXEC, the THP was not collapsed
anymore.