Patchwork [3/7] Update the [register,unregister]_memory routines

login
register
mail settings
Submitter Nathan Fontenot
Date July 12, 2010, 3:44 p.m.
Message ID <4C3B384A.4000902@austin.ibm.com>
Download mbox | patch
Permalink /patch/58627/
State Superseded
Headers show

Comments

Nathan Fontenot - July 12, 2010, 3:44 p.m.
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 <nfont@austin.ibm.com>
---
 drivers/base/memory.c |   93 +++++++++++++++++++++++++-------------------------
 1 file changed, 48 insertions(+), 45 deletions(-)
KAMEZAWA Hiroyuki - July 13, 2010, 6:20 a.m.
On Mon, 12 Jul 2010 10:44:10 -0500
Nathan Fontenot <nfont@austin.ibm.com> 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 <nfont@austin.ibm.com>
> ---
>  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 ?

-Kame
Nathan Fontenot - July 13, 2010, 3:46 p.m.
On 07/13/2010 01:20 AM, KAMEZAWA Hiroyuki wrote:
> On Mon, 12 Jul 2010 10:44:10 -0500
> Nathan Fontenot <nfont@austin.ibm.com> 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 <nfont@austin.ibm.com>
>> ---
>>  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
>

Patch

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);
+
+	ret = sysdev_register(&memory->sysdev);
+	if (!ret)
+		ret = mem_create_simple_file(memory, phys_index);
+	if (!ret)
+		ret = mem_create_simple_file(memory, end_phys_index);
+	if (!ret)
+		ret = mem_create_simple_file(memory, state);
+	if (!ret)
+		ret = mem_create_simple_file(memory, phys_device);
+	if (!ret)
+		ret = mem_create_simple_file(memory, removable);
+	if (!ret) {
+		if (context == HOTPLUG)
+			ret = register_mem_sect_under_node(memory, nid);
+	}
+
+	return ret;
+}
+
+static void
+unregister_memory(struct memory_block *memory)
+{
+	BUG_ON(memory->sysdev.cls != &memory_sysdev_class);
+
+	mem_remove_simple_file(memory, phys_index);
+	mem_remove_simple_file(memory, end_phys_index);
+	mem_remove_simple_file(memory, state);
+	mem_remove_simple_file(memory, phys_device);
+	mem_remove_simple_file(memory, removable);
+
+	/* drop the ref. we got in remove_memory_block() */
+	kobject_put(&memory->sysdev.kobj);
+	sysdev_unregister(&memory->sysdev);
+}
+
+/*
  * Block size attribute stuff
  */
 static ssize_t
@@ -541,21 +563,7 @@ 
 		mem->phys_device = arch_get_memory_phys_device(start_pfn);
 		INIT_LIST_HEAD(&mem->sections);
 
-		ret = register_memory(mem, section);
-		if (!ret)
-			ret = mem_create_simple_file(mem, phys_index);
-		if (!ret)
-			ret = mem_create_simple_file(mem, end_phys_index);
-		if (!ret)
-			ret = mem_create_simple_file(mem, state);
-		if (!ret)
-			ret = mem_create_simple_file(mem, phys_device);
-		if (!ret)
-			ret = mem_create_simple_file(mem, removable);
-		if (!ret) {
-			if (context == HOTPLUG)
-				ret = register_mem_sect_under_node(mem, nid);
-		}
+		ret = register_memory(mem, section, nid, context);
 	} else {
 		kobject_put(&mem->sysdev.kobj);
 	}
@@ -591,11 +599,6 @@ 
 
 	if (list_empty(&mem->sections)) {
 		unregister_mem_sect_under_nodes(mem);
-		mem_remove_simple_file(mem, phys_index);
-		mem_remove_simple_file(mem, end_phys_index);
-		mem_remove_simple_file(mem, state);
-		mem_remove_simple_file(mem, phys_device);
-		mem_remove_simple_file(mem, removable);
 		unregister_memory(mem);
 		kfree(mem);
 	}