Re: [PATCH 0/6] mm: make movable onlining suck less
From: Reza Arbab
Date: Wed Apr 05 2017 - 16:56:02 EST
On Wed, Apr 05, 2017 at 06:34:39PM +0200, Michal Hocko wrote:
This is really interesting. Because add_memory_resource does the
following
/* call arch's memory hotadd */
ret = arch_add_memory(nid, start, size);
if (ret < 0)
goto error;
/* we online node here. we can't roll back from here. */
node_set_online(nid);
so we are setting the node online _after_ arch_add_memory but the code
which adds those sysfs file is called from
arch_add_memory
__add_pages
__add_section
register_new_memory
register_mem_sect_under_node
node_online check
Okay, so it turns out the original code ends up creating the sysfs links
not here, but just a little bit afterwards.
add_memory
add_memory_resource
arch_add_memory
[your quoted stack trace above]
...
set_node_online
...
register_one_node
link_mem_sections
register_mem_sect_under_node
The reason they're not getting created now is because
NODE_DATA(nid)->node_spanned_pages = 0 at this point.
link_mem_sections: nid=1, start_pfn=0x10000, end_pfn=0x10000
This is another uninitialized situation, like the one with
node_start_pfn which caused my removal crash. Except here I'm not sure
the correct place to splice in and set it.
--
Reza Arbab