[lustre-devel] [PATCH v2 10/29] lustre: obd_type: discard obd_type_lock
James Simmons
jsimmons at infradead.org
Wed May 22 12:24:48 PDT 2019
> On Mon, May 20 2019, James Simmons wrote:
>
> > From: NeilBrown <neilb at suse.com>
> >
> > This lock is only used to protect typ_refcnt, so change
> > that to an atomic_t and discard the lock.
> >
> > The lock also covers calls to try_module_get and module_put,
> > but this serves no purpose as it does not prevent the module
> > from being unloaded.
> >
> > Finally, the return value for the call to try_module_get is
> > ignored, which is not safe.
> >
> > Signed-off-by: NeilBrown <neilb at suse.com>
> > ---
> > fs/lustre/include/obd.h | 3 +--
> > fs/lustre/include/obd_class.h | 1 -
> > fs/lustre/mdc/mdc_request.c | 2 +-
> > fs/lustre/mgc/mgc_request.c | 7 -------
> > fs/lustre/obdclass/genops.c | 29 ++++++++++++++---------------
> > fs/lustre/obdclass/lu_object.c | 2 +-
> > fs/lustre/obdclass/obd_config.c | 19 -------------------
> > 7 files changed, 17 insertions(+), 46 deletions(-)
> >
> > diff --git a/fs/lustre/include/obd.h b/fs/lustre/include/obd.h
> > index 4c58b91..61fb815 100644
> > --- a/fs/lustre/include/obd.h
> > +++ b/fs/lustre/include/obd.h
> > @@ -102,9 +102,8 @@ struct obd_type {
> > struct obd_ops *typ_dt_ops;
> > struct md_ops *typ_md_ops;
> > struct dentry *typ_debugfs_entry;
> > - int typ_refcnt;
> > + atomic_t typ_refcnt;
> > struct lu_device_type *typ_lu;
> > - spinlock_t obd_type_lock;
> > struct kobject typ_kobj;
> > };
> > #define typ_name typ_kobj.name
> > diff --git a/fs/lustre/include/obd_class.h b/fs/lustre/include/obd_class.h
> > index 742cb9a4..a853ed5 100644
> > --- a/fs/lustre/include/obd_class.h
> > +++ b/fs/lustre/include/obd_class.h
> > @@ -210,7 +210,6 @@ struct lustre_profile {
> > struct lustre_profile *class_get_profile(const char *prof);
> > void class_del_profile(const char *prof);
> > void class_put_profile(struct lustre_profile *lprof);
> > -void class_del_profiles(void);
> >
> > #if LUSTRE_TRACKS_LOCK_EXP_REFS
> >
> > diff --git a/fs/lustre/mdc/mdc_request.c b/fs/lustre/mdc/mdc_request.c
> > index bc764f9..705a4e3 100644
> > --- a/fs/lustre/mdc/mdc_request.c
> > +++ b/fs/lustre/mdc/mdc_request.c
> > @@ -2542,7 +2542,7 @@ static int mdc_init_ea_size(struct obd_export *exp, u32 easize, u32 def_easize)
> > static int mdc_precleanup(struct obd_device *obd)
> > {
> > /* Failsafe, ok if racy */
> > - if (obd->obd_type->typ_refcnt <= 1)
> > + if (atomic_read(&obd->obd_type->typ_refcnt) <= 1)
> > libcfs_kkuc_group_rem(0, KUC_GRP_HSM);
> >
> > mdc_changelog_cdev_finish(obd);
> > diff --git a/fs/lustre/mgc/mgc_request.c b/fs/lustre/mgc/mgc_request.c
> > index 84ba6d0..d8be54d 100644
> > --- a/fs/lustre/mgc/mgc_request.c
> > +++ b/fs/lustre/mgc/mgc_request.c
> > @@ -712,13 +712,6 @@ static int mgc_precleanup(struct obd_device *obd)
> >
> > static int mgc_cleanup(struct obd_device *obd)
> > {
> > - /* COMPAT_146 - old config logs may have added profiles we don't
> > - * know about
> > - */
> > - if (obd->obd_type->typ_refcnt <= 1)
> > - /* Only for the last mgc */
> > - class_del_profiles();
> > -
>
> You didn't add any text to the change log describing this change!!!!
>
> Could you please post it as a separate patch - it is only tangentially
> related to the changes in this patch.
Sure. Also another patch exist which pretty much makes typ_refcnt only
used in the obd_class layer.
More information about the lustre-devel
mailing list