Message ID | 498AE0B5.5050709@ce.jp.nec.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Alasdair Kergon |
Headers | show |
On Feb 5, 2009, at 6:51 AM, Jun'ichi Nomura wrote: > @@ -136,11 +126,6 @@ int dm_unregister_path_selector(struct p > return -EINVAL; > } > > - if (psi->use) { > - up_write(&_ps_lock); > - return -ETXTBSY; > - } > - > list_del(&psi->list); We still need this in some form, don't we? Like 'if (module_refcount...'? brassow -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel
Hi Jonathan, Jonathan Brassow wrote: > On Feb 5, 2009, at 6:51 AM, Jun'ichi Nomura wrote: > >> @@ -136,11 +126,6 @@ int dm_unregister_path_selector(struct p >> return -EINVAL; >> } >> >> - if (psi->use) { >> - up_write(&_ps_lock); >> - return -ETXTBSY; >> - } >> - >> list_del(&psi->list); > > > We still need this in some form, don't we? Like 'if (module_refcount...'? I don't think so. dm_unregister_path_selector() is called from module_exit function. So it is called when the refcount is 0. Thanks,
Index: linux-2.6.29-rc2/drivers/md/dm-path-selector.c =================================================================== --- linux-2.6.29-rc2.orig/drivers/md/dm-path-selector.c +++ linux-2.6.29-rc2/drivers/md/dm-path-selector.c @@ -17,9 +17,7 @@ struct ps_internal { struct path_selector_type pst; - struct list_head list; - long use; }; #define pst_to_psi(__pst) container_of((__pst), struct ps_internal, pst) @@ -45,12 +43,8 @@ static struct ps_internal *get_path_sele down_read(&_ps_lock); psi = __find_path_selector_type(name); - if (psi) { - if ((psi->use == 0) && !try_module_get(psi->pst.module)) - psi = NULL; - else - psi->use++; - } + if (psi && !try_module_get(psi->pst.module)) + psi = NULL; up_read(&_ps_lock); return psi; @@ -84,11 +78,7 @@ void dm_put_path_selector(struct path_se if (!psi) goto out; - if (--psi->use == 0) - module_put(psi->pst.module); - - BUG_ON(psi->use < 0); - + module_put(psi->pst.module); out: up_read(&_ps_lock); } @@ -136,11 +126,6 @@ int dm_unregister_path_selector(struct p return -EINVAL; } - if (psi->use) { - up_write(&_ps_lock); - return -ETXTBSY; - } - list_del(&psi->list); up_write(&_ps_lock);