Re: [PATCH v7 3/5] mm/hugetlb: add support for mempolicy MPOL_PREFERRED_MANY

From: Michal Hocko
Date: Mon Aug 09 2021 - 04:41:44 EST


On Mon 09-08-21 10:44:30, Feng Tang wrote:
> Hi Michal,
>
> Thanks for the review and ACKs to 1/5 and 2/5 patches.
>
> On Fri, Aug 06, 2021 at 03:35:48PM +0200, Michal Hocko wrote:
> > On Tue 03-08-21 13:59:20, Feng Tang wrote:
> > > From: Ben Widawsky <ben.widawsky@xxxxxxxxx>
> > >
> > > Implement the missing huge page allocation functionality while obeying
> > > the preferred node semantics. This is similar to the implementation
> > > for general page allocation, as it uses a fallback mechanism to try
> > > multiple preferred nodes first, and then all other nodes.
> > >
> > > [akpm: fix compling issue when merging with other hugetlb patch]
> > > [Thanks to 0day bot for catching the missing #ifdef CONFIG_NUMA issue]
> > > Link: https://lore.kernel.org/r/20200630212517.308045-12-ben.widawsky@xxxxxxxxx
> > > Suggested-by: Michal Hocko <mhocko@xxxxxxxx>
> > > Signed-off-by: Ben Widawsky <ben.widawsky@xxxxxxxxx>
> > > Co-developed-by: Feng Tang <feng.tang@xxxxxxxxx>
> > > Signed-off-by: Feng Tang <feng.tang@xxxxxxxxx>
> >
> > ifdefery is just ugly as hell. One way to get rid of that would be to
> > provide a mpol_is_preferred_many() wrapper and hide the CONFIG_NUMA in
> > mempolicy.h. I haven't checked but this might help to remove some other
> > ifdefery as well.
> >
> > I especially dislike the label hidden in the ifdef. You can get rid of
> > that by checking the page for NULL.
>
> Yes, the 'ifdef's were annoying to me too, and thanks for the suggestions.
> Following is the revised patch upon the suggestion.
>
> Thanks,
> Feng
>
> -------8<---------------------
>
> >From fc30718c40f02ba5ea73456af49173e66b5032c1 Mon Sep 17 00:00:00 2001
> From: Ben Widawsky <ben.widawsky@xxxxxxxxx>
> Date: Thu, 5 Aug 2021 23:01:11 -0400
> Subject: [PATCH] mm/hugetlb: add support for mempolicy MPOL_PREFERRED_MANY
>
> Implement the missing huge page allocation functionality while obeying the
> preferred node semantics. This is similar to the implementation for
> general page allocation, as it uses a fallback mechanism to try multiple
> preferred nodes first, and then all other nodes.
>
> To avoid adding too many "#ifdef CONFIG_NUMA" check, add a helper function
> in mempolicy.h to check whether a mempolicy is MPOL_PREFERRED_MANY.
>
> [akpm: fix compling issue when merging with other hugetlb patch]
> [Thanks to 0day bot for catching the !CONFIG_NUMA compiling issue]
> [Michal Hocko: suggest to remove the #ifdef CONFIG_NUMA check]
> Link: https://lore.kernel.org/r/20200630212517.308045-12-ben.widawsky@xxxxxxxxx
> Link: https://lkml.kernel.org/r/1627970362-61305-4-git-send-email-feng.tang@xxxxxxxxx
> Suggested-by: Michal Hocko <mhocko@xxxxxxxx>
> Signed-off-by: Ben Widawsky <ben.widawsky@xxxxxxxxx>
> Co-developed-by: Feng Tang <feng.tang@xxxxxxxxx>
> Signed-off-by: Feng Tang <feng.tang@xxxxxxxxx>

Yeah. This looks much better. Thanks!
Acked-by: Michal Hocko <mhocko@xxxxxxxx>
Do you think you can provide same helpers for other policies as well?
Maybe we can get rid of some other ifdefery as well.

Thanks!
--
Michal Hocko
SUSE Labs