Subject: Re: [PATCH 3/7] Update the [register,unregister]_memory routines

From: Nathan Fontenot <[email-masked]>
Date: Tue, 13 Jul 2010 10:46:51 -0500

On 07/13/2010 01:20 AM, KAMEZAWA Hiroyuki wrote:
> On Mon, 12 Jul 2010 10:44:10 -0500
> Nathan Fontenot <[email-masked]> wrote:
> 
>> This patch moves the register/unregister_memory routines to
>> avoid a forward declaration.  It also moves the sysfs file
>> creation and deletion for each directory into the register/
>> unregister routines to avoid duplicating it with these updates.
>>
>> Signed-off-by: Nathan Fontenot <[email-masked]>
>> ---
>>  drivers/base/memory.c |   93 +++++++++++++++++++++++++-------------------------
>>  1 file changed, 48 insertions(+), 45 deletions(-)
>>
>> Index: linux-2.6/drivers/base/memory.c
>> ===================================================================
>> --- linux-2.6.orig/drivers/base/memory.c	2010-07-09 14:23:17.000000000 -0500
>> +++ linux-2.6/drivers/base/memory.c	2010-07-09 14:23:20.000000000 -0500
>> @@ -87,31 +87,6 @@
>>  EXPORT_SYMBOL(unregister_memory_isolate_notifier);
>>  
>>  /*
>> - * register_memory - Setup a sysfs device for a memory block
>> - */
>> -static
>> -int register_memory(struct memory_block *memory, struct mem_section *section)
>> -{
>> -	int error;
>> -
>> -	memory->sysdev.cls = &memory_sysdev_class;
>> -	memory->sysdev.id = __section_nr(section);
>> -
>> -	error = sysdev_register(&memory->sysdev);
>> -	return error;
>> -}
>> -
>> -static void
>> -unregister_memory(struct memory_block *memory)
>> -{
>> -	BUG_ON(memory->sysdev.cls != &memory_sysdev_class);
>> -
>> -	/* drop the ref. we got in remove_memory_block() */
>> -	kobject_put(&memory->sysdev.kobj);
>> -	sysdev_unregister(&memory->sysdev);
>> -}
>> -
>> -/*
>>   * use this as the physical section index that this memsection
>>   * uses.
>>   */
>> @@ -346,6 +321,53 @@
>>  	sysdev_remove_file(&mem->sysdev, &attr_##attr_name)
>>  
>>  /*
>> + * register_memory - Setup a sysfs device for a memory block
>> + */
>> +static
>> +int register_memory(struct memory_block *memory, struct mem_section *section,
>> +		    int nid, enum mem_add_context context)
>> +{
>> +	int ret;
>> +
>> +	memory->sysdev.cls = &memory_sysdev_class;
>> +	memory->sysdev.id = __section_nr(section);
>> +

> Why not block-ID  but section-ID ?

Using the beginning section id as the id here makes the splitting of
memory_block's easier since we can assume that the id is unique.

> -Kame