* Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx> wrote: > In offline_pages(), if a node becomes memoryless, we > will clear its N_MEMORY state by calling node_states_clear_node(). > But we do this after rebuilding the zonelists by calling > build_all_zonelists(), which will cause this memoryless node to > still be in the fallback list of other nodes. This will incur > some runtime overhead. > > To drop memoryless node from fallback lists in this case, just > call node_states_clear_node() before calling build_all_zonelists(). s/memoryless node /memoryless nodes > > Signed-off-by: Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx> > Acked-by: David Hildenbrand <david@xxxxxxxxxx> > --- > mm/memory_hotplug.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index d4a364fdaf8f..f019f7d6272c 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -2036,12 +2036,16 @@ int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages, > /* reinitialise watermarks and update pcp limits */ > init_per_zone_wmark_min(); > > + /* > + * Make sure to mark the node as memory-less before rebuilding the zone > + * list. Otherwise this node would still appear in the fallback lists. > + */ > + node_states_clear_node(node, &arg); Acked-by: Ingo Molnar <mingo@xxxxxxxxxx> Thanks, Ingo