Le 14/09/2020 à 10:19, Oscar Salvador a écrit :
On Mon, Sep 14, 2020 at 09:57:46AM +0200, David Hildenbrand wrote:
/* register memory section under specified node if it spans that node */ +struct rmsun_args {
- int nid;
- enum memplug_context context;
+};
Uhmf, that is a not so descriptive name.
I do agree, but didn't have a better idea. Anyway this will disappear since the choosen direction is to have 2 callbacks.
Instead of handling this in register_mem_sect_under_node(), I think it would be better two have two separate register_mem_sect_under_node() implementations.
static int register_mem_sect_under_node_hotplug(struct memory_block *mem_blk, void *arg) { const int nid = *(int *)arg; int ret;
/* Hotplugged memory has no holes and belongs to a single node. */ mem_blk->nid = nid; ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj, &mem_blk->dev.kobj, kobject_name(&mem_blk->dev.kobj)); if (ret) returnr et; return sysfs_create_link_nowarn(&mem_blk->dev.kobj, &node_devices[nid]->dev.kobj, kobject_name(&node_devices[nid]->dev.kobj));
}
Cleaner, right? :) No unnecessary checks.
I tend to agree here, I like more a simplistic version for hotplug.
One could argue if link_mem_section_hotplug() would be better than passing around the context.
I am not sure if I would duplicate the code there. We could just pass the pointer of the function we want to call to link_mem_sections? either register_mem_sect_under_node_hotplug or register_mem_sect_under_node_early? Would not that be clean and clear enough?
That would expose the register_mem_sect_under_node*() prototype to the caller.
I'm wondering if that would be cleaner than passing a MEMPLUG_* constant value to link_mem_sections() and let it choose the right callback.