Re: [PATCH] hugetlb: fix CONFIG_CGROUP_HUGETLB ifdefs

From: Mina Almasry
Date: Sun Feb 16 2020 - 15:40:21 EST


On Fri, Feb 14, 2020 at 5:57 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
>
> On 2/14/20 5:17 PM, Randy Dunlap wrote:
> > On 2/14/20 1:00 PM, Mina Almasry wrote:
> >> On Fri, Feb 14, 2020 at 12:46 PM Mina Almasry <almasrymina@xxxxxxxxxx> wrote:
> >>>
> >>> Fixes an #ifdef bug in the patch referred to below that was
> >>> causing a build error when CONFIG_DEBUG_VM &&
> >>> !CONFIG_CCGROUP_HUGETLB.
> >
> > Hi Mina,
> >
> > I don't know if this was supposed to fix the 2 build reports that I made,
> > but this does not apply cleanly to mmotm (and it's a reply email so it's
> > more difficult to apply anyway):
> >
> > Applying patch mm-hugetlb-fix-CONFIG_CGROUP_HUGETLB.patch
> > patching file mm/hugetlb.c
> > Hunk #1 succeeded at 289 with fuzz 1.
> > Hunk #2 succeeded at 325 with fuzz 2.
> > Hunk #3 FAILED at 435.
> > 1 out of 3 hunks FAILED -- rejects in file mm/hugetlb.c
> >
>
> OK, I applied this patch manually and it does fix most of the reported build problems.
> The only one remaining is this:
>
> CC mm/migrate.o
> In file included from ../mm/migrate.c:39:0:
> ../include/linux/hugetlb_cgroup.h:146:21: warning: âstruct file_regionâ declared inside parameter list will not be visible outside of this definition or declaration
> struct file_region *rg,
> ^~~~~~~~~~~
> ../include/linux/hugetlb_cgroup.h:145:63: warning: âstruct resv_mapâ declared inside parameter list will not be visible outside of this definition or declaration
> static inline void hugetlb_cgroup_uncharge_file_region(struct resv_map *resv,
> ^~~~~~~~
> ../include/linux/hugetlb_cgroup.h:233:59: warning: âstruct resv_mapâ declared inside parameter list will not be visible outside of this definition or declaration
> static inline void hugetlb_cgroup_uncharge_counter(struct resv_map *resv,
> ^~~~~~~~
>

Hi Randy,

Yes this was supposed to fix the build errors. I'm having trouble
reproducing the one you have pending above. This is my development
environment:

â prodkernel2 git:(mm-build-fix) git remote show github-akpm
* remote github-akpm
Fetch URL: https://github.com/hnaz/linux-mm.git
Push URL: https://github.com/hnaz/linux-mm.git

â prodkernel2 git:(mm-build-fix) git s
## mm-build-fix...github-akpm/master [ahead 1]

â prodkernel2 git:(mm-build-fix) make -j80 mm/migrate.o
(succeeds with no warnings).

â prodkernel2 git:(mm-build-fix) make -j80
(succeeds with no warnings)

Is my development environment wrong? Shouldn't I be able to reproduce
this build warning on this tree with my fix?
https://github.com/hnaz/linux-mm.git

I'm using config-r9887 that you sent earlier.

I'm probably supposed to use a different branch since you also say
that my patch doesn't apply cleanily, but the mmotm readme says that
github mirrors Andrew's tree?

> >
> >>> Fixes: b5f16a533ce8a ("hugetlb: support file_region coalescing again")
> >>> Signed-off-by: Mina Almasry <almasrymina@xxxxxxxxxx>
> >>> Cc: David Rientjes <rientjes@xxxxxxxxxx>
> >>> Cc: Greg Thelen <gthelen@xxxxxxxxxx>
> >>> Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
> >>> Cc: Shakeel Butt <shakeelb@xxxxxxxxxx>
> >>> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> >>> ---
> >>> mm/hugetlb.c | 8 +++++---
> >>> 1 file changed, 5 insertions(+), 3 deletions(-)
> >>>
> >>> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> >>> index ee6d262fe6ac0..95d34c58981d2 100644
> >>> --- a/mm/hugetlb.c
> >>> +++ b/mm/hugetlb.c
> >>> @@ -289,7 +289,7 @@ static bool has_same_uncharge_info(struct file_region *rg,
> >>> #endif
> >>> }
> >>>
> >>> -#ifdef CONFIG_DEBUG_VM
> >>> +#if defined(CONFIG_DEBUG_VM) && defined(CONFIG_CGROUP_HUGETLB)
> >>> static void dump_resv_map(struct resv_map *resv)
> >>> {
> >>> struct list_head *head = &resv->regions;
> >>> @@ -325,6 +325,10 @@ static void check_coalesce_bug(struct resv_map *resv)
> >>> }
> >>> }
> >>> }
> >>> +#else
> >>> +static void check_coalesce_bug(struct resv_map *resv)
> >>> +{
> >>> +}
> >>> #endif
> >>>
> >>> static void coalesce_file_region(struct resv_map *resv, struct file_region *rg)
> >>> @@ -431,9 +435,7 @@ static long add_reservation_in_range(struct resv_map *resv, long f, long t,
> >>> }
> >>>
> >>> VM_BUG_ON(add < 0);
> >>> -#ifdef CONFIG_DEBUG_VM
> >>> check_coalesce_bug(resv);
> >>> -#endif
> >>> return add;
> >>> }
> >>>
> >>> --
> >>> 2.25.0.265.gbab2e86ba0-goog
>
>
> --
> ~Randy
> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>