Re: [PATCH 2/3] mm: don't rely on system state to detect hot-plug operations

From: Laurent Dufour
Date: Mon Sep 14 2020 - 04:40:21 EST


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.