From: Jan Kara Subject: Re: [PATCH] quota: clean up quota active checks Date: Fri, 4 Jun 2010 16:56:27 +0200 Message-ID: <20100604145627.GD3414@quack.suse.cz> References: <20100604085629.GB25074@lst.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: jack@suse.cz, linux-fsdevel@vger.kernel.org To: Christoph Hellwig Return-path: Received: from cantor.suse.de ([195.135.220.2]:58686 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756031Ab0FDO4p (ORCPT ); Fri, 4 Jun 2010 10:56:45 -0400 Content-Disposition: inline In-Reply-To: <20100604085629.GB25074@lst.de> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Fri 04-06-10 10:56:29, Christoph Hellwig wrote: > > The various quota operations check for any quota beeing active on > a superblock, and the inode not having the noquota flag. > > Merge these two checks into a dquot_active check and move that > into dquot.c as that's the only place where it's needed. Thanks. Merged. Honza > > Signed-off-by: Christoph Hellwig > > Index: linux-2.6/fs/quota/dquot.c > =================================================================== > --- linux-2.6.orig/fs/quota/dquot.c 2010-06-03 08:51:40.518253807 +0200 > +++ linux-2.6/fs/quota/dquot.c 2010-06-03 09:07:33.795255831 +0200 > @@ -1304,6 +1304,15 @@ static int info_bdq_free(struct dquot *d > return QUOTA_NL_NOWARN; > } > > +static int dquot_active(const struct inode *inode) > +{ > + struct super_block *sb = inode->i_sb; > + > + if (!IS_NOQUOTA(inode)) > + return 0; > + return sb_any_quota_loaded(sb) & ~sb_any_quota_suspended(sb); > +} > + > /* > * Initialize quota pointers in inode > * > @@ -1323,7 +1332,7 @@ static void __dquot_initialize(struct in > > /* First test before acquiring mutex - solves deadlocks when we > * re-enter the quota code and are already holding the mutex */ > - if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) > + if (!dquot_active(inode)) > return; > > /* First get references to structures we might need. */ > @@ -1507,7 +1516,7 @@ int __dquot_alloc_space(struct inode *in > * First test before acquiring mutex - solves deadlocks when we > * re-enter the quota code and are already holding the mutex > */ > - if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) { > + if (!dquot_active(inode)) { > inode_incr_space(inode, number, reserve); > goto out; > } > @@ -1559,7 +1568,7 @@ int dquot_alloc_inode(const struct inode > > /* First test before acquiring mutex - solves deadlocks when we > * re-enter the quota code and are already holding the mutex */ > - if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) > + if (!dquot_active(inode)) > return 0; > for (cnt = 0; cnt < MAXQUOTAS; cnt++) > warntype[cnt] = QUOTA_NL_NOWARN; > @@ -1596,7 +1605,7 @@ int dquot_claim_space_nodirty(struct ino > { > int cnt; > > - if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) { > + if (!dquot_active(inode)) { > inode_claim_rsv_space(inode, number); > return 0; > } > @@ -1629,7 +1638,7 @@ void __dquot_free_space(struct inode *in > > /* First test before acquiring mutex - solves deadlocks when we > * re-enter the quota code and are already holding the mutex */ > - if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) { > + if (!dquot_active(inode)) { > inode_decr_space(inode, number, reserve); > return; > } > @@ -1667,7 +1676,7 @@ void dquot_free_inode(const struct inode > > /* First test before acquiring mutex - solves deadlocks when we > * re-enter the quota code and are already holding the mutex */ > - if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) > + if (!dquot_active(inode)) > return; > > down_read(&sb_dqopt(inode->i_sb)->dqptr_sem); > @@ -1790,7 +1799,7 @@ int dquot_transfer(struct inode *inode, > struct super_block *sb = inode->i_sb; > int ret; > > - if (!sb_any_quota_active(sb) || IS_NOQUOTA(inode)) > + if (!dquot_active(inode)) > return 0; > > if (iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) > Index: linux-2.6/include/linux/quotaops.h > =================================================================== > --- linux-2.6.orig/include/linux/quotaops.h 2010-06-03 08:51:40.529254366 +0200 > +++ linux-2.6/include/linux/quotaops.h 2010-06-03 08:51:48.320004051 +0200 > @@ -145,11 +145,6 @@ static inline bool sb_has_quota_active(s > !sb_has_quota_suspended(sb, type); > } > > -static inline unsigned sb_any_quota_active(struct super_block *sb) > -{ > - return sb_any_quota_loaded(sb) & ~sb_any_quota_suspended(sb); > -} > - > /* > * Operations supported for diskquotas. > */ > @@ -193,11 +188,6 @@ static inline int sb_has_quota_active(st > { > return 0; > } > - > -static inline int sb_any_quota_active(struct super_block *sb) > -{ > - return 0; > -} > > static inline void dquot_initialize(struct inode *inode) > { -- Jan Kara SUSE Labs, CR