[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