On Fri 19-06-20 09:24:08, Ben Widawsky wrote: > MPOL_LOCAL is a bit weird because it is simply a different name for an > existing behavior (preferred policy with no node mask). It has been this > way since it was added here: > commit 479e2802d09f ("mm: mempolicy: Make MPOL_LOCAL a real policy") > > It is so similar to MPOL_PREFERRED in fact that when the policy is > created in mpol_new, the mode is set as PREFERRED, and an internal state > representing LOCAL doesn't exist. > > To prevent future explorers from scratching their head as to why > MPOL_LOCAL isn't defined in the mpol_ops table, add a small comment > explaining the situations. Agreed. MPOL_LOCAL can be really confusing for whoever looks at the code the first time. > Cc: Christoph Lameter <cl@xxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: David Rientjes <rientjes@xxxxxxxxxx> > Signed-off-by: Ben Widawsky <ben.widawsky@xxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> > --- > mm/mempolicy.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > index 381320671677..36ee3267c25f 100644 > --- a/mm/mempolicy.c > +++ b/mm/mempolicy.c > @@ -427,6 +427,7 @@ static const struct mempolicy_operations mpol_ops[MPOL_MAX] = { > .create = mpol_new_bind, > .rebind = mpol_rebind_nodemask, > }, > + /* MPOL_LOCAL is converted to MPOL_PREFERRED on policy creation */ I would just add. See mpol_new() > }; > > static int migrate_page_add(struct page *page, struct list_head *pagelist, > -- > 2.27.0 > -- Michal Hocko SUSE Labs