Re: [PATCH 5/9] mm, memory_hotplug: remove explicit build_all_zonelists from try_online_node

From: Vlastimil Babka
Date: Thu Jul 20 2017 - 02:13:28 EST


On 07/14/2017 10:00 AM, Michal Hocko wrote:
> From: Michal Hocko <mhocko@xxxxxxxx>
>
> try_online_node calls hotadd_new_pgdat which already calls
> build_all_zonelists. So the additional call is redundant. Even though
> hotadd_new_pgdat will only initialize zonelists of the new node this is
> the right thing to do because such a node doesn't have any memory so
> other zonelists would ignore all the zones from this node anyway.

Doesn't the "if (pgdat<...>zone == NULL) in fact mean, that this is just
always dead code? Even more reason to remove it.

> Cc: Toshi Kani <toshi.kani@xxxxxx>
> Signed-off-by: Michal Hocko <mhocko@xxxxxxxx>

Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

> ---
> mm/memory_hotplug.c | 7 -------
> 1 file changed, 7 deletions(-)
>
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 639b8af37c45..0d2f6a11075c 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1104,13 +1104,6 @@ int try_online_node(int nid)
> node_set_online(nid);
> ret = register_one_node(nid);
> BUG_ON(ret);
> -
> - if (pgdat->node_zonelists->_zonerefs->zone == NULL) {
> - mutex_lock(&zonelists_mutex);
> - build_all_zonelists(NULL);
> - mutex_unlock(&zonelists_mutex);
> - }
> -
> out:
> mem_hotplug_done();
> return ret;
>