diff options
| author | Christoph Hellwig <hch@lst.de> | 2010-06-04 10:56:29 +0200 | 
|---|---|---|
| committer | Jan Kara <jack@suse.cz> | 2010-07-21 16:01:47 +0200 | 
| commit | 189eef59e70e3e56edf726864629f310d114eefb (patch) | |
| tree | eff40faa6d8f4b103f10709892c1b47c8be6ae4e /fs/quota | |
| parent | ade7ce31c22e961dfbe1a6d57fd362c90c187cbd (diff) | |
quota: clean up quota active checks
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.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/quota')
| -rw-r--r-- | fs/quota/dquot.c | 23 | 
1 files changed, 16 insertions, 7 deletions
| diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index 2857fd67ff33..2eebf72d07c8 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c @@ -1315,6 +1315,15 @@ static int info_bdq_free(struct dquot *dquot, qsize_t space)  	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   * @@ -1334,7 +1343,7 @@ static void __dquot_initialize(struct inode *inode, int type)  	/* 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. */ @@ -1518,7 +1527,7 @@ int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags)  	 * 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;  	} @@ -1570,7 +1579,7 @@ int dquot_alloc_inode(const struct inode *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; @@ -1607,7 +1616,7 @@ int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)  {  	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;  	} @@ -1640,7 +1649,7 @@ void __dquot_free_space(struct inode *inode, qsize_t number, int flags)  	/* 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;  	} @@ -1678,7 +1687,7 @@ void dquot_free_inode(const struct inode *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); @@ -1801,7 +1810,7 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr)  	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) | 
