Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx> writes:
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.
For fallback list, do you mean pgdat->node_zonelists[]? If so, in
build_all_zonelists
__build_all_zonelists
build_zonelists
build_zonelists_in_node_order
build_zonerefs_node
populated_zone() will be checked before adding zone into zonelist.
So, IIUC, we will not try to allocate from the memory less node.
--
Best Regards,
Huang, Ying
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().
Signed-off-by: Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx>
Acked-by: David Hildenbrand <david@xxxxxxxxxx>
[snip]
--
Best Regards,
Huang, Ying