diff mbox

[2.6.29,01/02] dm target: use module refcount directly

Message ID 20090107204143.GR3512@agk.fab.redhat.com (mailing list archive)
State Accepted, archived
Delegated to: Alasdair Kergon
Headers show

Commit Message

Alasdair G Kergon Jan. 7, 2009, 8:41 p.m. UTC
From: Cheng Renquan <crquan@gmail.com>

The tt_internal's 'use' field is superfluous: the module's refcount can do
the work properly.  An acceptable side-effect is that this increases the
reference counts reported by 'lsmod'.

Remove the superfluous test when removing a target module.

Signed-off-by: Cheng Renquan <crquan@gmail.com>
Reviewed-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
---
 drivers/md/dm-target.c |   20 +++-----------------
 1 files changed, 3 insertions(+), 17 deletions(-)


--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Comments

Cheng Renquan Jan. 8, 2009, 1:13 p.m. UTC | #1
On Thu, Jan 8, 2009 at 4:41 AM, Alasdair G Kergon <agk@redhat.com> wrote:
> From: Cheng Renquan <crquan@gmail.com>
>
> The tt_internal's 'use' field is superfluous: the module's refcount can do
> the work properly.  An acceptable side-effect is that this increases the
> reference counts reported by 'lsmod'.
>
> Remove the superfluous test when removing a target module.

Thank you for doing the work, I'm just too busy to have time to take it.

I've applied these two patches on the current linus's 2.6.29 kernel
head, and have done some simple building and running tests, it seems
OK with allyesconfig, allnoconfig(with all DM config enabled), and
serverl randconfigs with DM enabled.

> Signed-off-by: Cheng Renquan <crquan@gmail.com>
> Reviewed-by: Alasdair G Kergon <agk@redhat.com>
> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
> ---
>  drivers/md/dm-target.c |   20 +++-----------------
>  1 files changed, 3 insertions(+), 17 deletions(-)
>
> Index: linux-2.6.28/drivers/md/dm-target.c
> ===================================================================
> --- linux-2.6.28.orig/drivers/md/dm-target.c    2009-01-07 20:29:57.000000000 +0000
> +++ linux-2.6.28/drivers/md/dm-target.c 2009-01-07 20:30:57.000000000 +0000
Jonthan Brassow Jan. 8, 2009, 8:50 p.m. UTC | #2
Reviewed-by: Jonathan Brassow <jbrassow@redhat.com>

  brassow

On Jan 7, 2009, at 2:41 PM, Alasdair G Kergon wrote:

> From: Cheng Renquan <crquan@gmail.com>
>
> The tt_internal's 'use' field is superfluous: the module's refcount  
> can do
> the work properly.  An acceptable side-effect is that this increases  
> the
> reference counts reported by 'lsmod'.
>
> Remove the superfluous test when removing a target module.
>
> Signed-off-by: Cheng Renquan <crquan@gmail.com>
> Reviewed-by: Alasdair G Kergon <agk@redhat.com>
> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
> ---
> drivers/md/dm-target.c |   20 +++-----------------
> 1 files changed, 3 insertions(+), 17 deletions(-)
>
> Index: linux-2.6.28/drivers/md/dm-target.c
> ===================================================================
> --- linux-2.6.28.orig/drivers/md/dm-target.c	2009-01-07  
> 20:29:57.000000000 +0000
> +++ linux-2.6.28/drivers/md/dm-target.c	2009-01-07  
> 20:30:57.000000000 +0000
> @@ -18,7 +18,6 @@ struct tt_internal {
> 	struct target_type tt;
>
> 	struct list_head list;
> -	long use;
> };
>
> static LIST_HEAD(_targets);
> @@ -44,12 +43,8 @@ static struct tt_internal *get_target_ty
> 	down_read(&_lock);
>
> 	ti = __find_target_type(name);
> -	if (ti) {
> -		if ((ti->use == 0) && !try_module_get(ti->tt.module))
> -			ti = NULL;
> -		else
> -			ti->use++;
> -	}
> +	if (ti && !try_module_get(ti->tt.module))
> +		ti = NULL;
>
> 	up_read(&_lock);
> 	return ti;
> @@ -77,10 +72,7 @@ void dm_put_target_type(struct target_ty
> 	struct tt_internal *ti = (struct tt_internal *) t;
>
> 	down_read(&_lock);
> -	if (--ti->use == 0)
> -		module_put(ti->tt.module);
> -
> -	BUG_ON(ti->use < 0);
> +	module_put(ti->tt.module);
> 	up_read(&_lock);
>
> 	return;
> @@ -140,12 +132,6 @@ void dm_unregister_target(struct target_
> 		BUG();
> 	}
>
> -	if (ti->use) {
> -		DMCRIT("Attempt to unregister target still in use: %s",
> -		       t->name);
> -		BUG();
> -	}
> -
> 	list_del(&ti->list);
> 	kfree(ti);
>
>
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
diff mbox

Patch

Index: linux-2.6.28/drivers/md/dm-target.c
===================================================================
--- linux-2.6.28.orig/drivers/md/dm-target.c	2009-01-07 20:29:57.000000000 +0000
+++ linux-2.6.28/drivers/md/dm-target.c	2009-01-07 20:30:57.000000000 +0000
@@ -18,7 +18,6 @@  struct tt_internal {
 	struct target_type tt;
 
 	struct list_head list;
-	long use;
 };
 
 static LIST_HEAD(_targets);
@@ -44,12 +43,8 @@  static struct tt_internal *get_target_ty
 	down_read(&_lock);
 
 	ti = __find_target_type(name);
-	if (ti) {
-		if ((ti->use == 0) && !try_module_get(ti->tt.module))
-			ti = NULL;
-		else
-			ti->use++;
-	}
+	if (ti && !try_module_get(ti->tt.module))
+		ti = NULL;
 
 	up_read(&_lock);
 	return ti;
@@ -77,10 +72,7 @@  void dm_put_target_type(struct target_ty
 	struct tt_internal *ti = (struct tt_internal *) t;
 
 	down_read(&_lock);
-	if (--ti->use == 0)
-		module_put(ti->tt.module);
-
-	BUG_ON(ti->use < 0);
+	module_put(ti->tt.module);
 	up_read(&_lock);
 
 	return;
@@ -140,12 +132,6 @@  void dm_unregister_target(struct target_
 		BUG();
 	}
 
-	if (ti->use) {
-		DMCRIT("Attempt to unregister target still in use: %s",
-		       t->name);
-		BUG();
-	}
-
 	list_del(&ti->list);
 	kfree(ti);