aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2010-06-04 04:56:29 -0400
committerJan Kara <jack@suse.cz>2010-07-21 10:01:47 -0400
commit189eef59e70e3e56edf726864629f310d114eefb (patch)
treeeff40faa6d8f4b103f10709892c1b47c8be6ae4e
parentade7ce31c22e961dfbe1a6d57fd362c90c187cbd (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>
-rw-r--r--fs/quota/dquot.c23
-rw-r--r--include/linux/quotaops.h10
2 files changed, 16 insertions, 17 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)
1315 return QUOTA_NL_NOWARN; 1315 return QUOTA_NL_NOWARN;
1316} 1316}
1317 1317
1318static int dquot_active(const struct inode *inode)
1319{
1320 struct super_block *sb = inode->i_sb;
1321
1322 if (IS_NOQUOTA(inode))
1323 return 0;
1324 return sb_any_quota_loaded(sb) & ~sb_any_quota_suspended(sb);
1325}
1326
1318/* 1327/*
1319 * Initialize quota pointers in inode 1328 * Initialize quota pointers in inode
1320 * 1329 *
@@ -1334,7 +1343,7 @@ static void __dquot_initialize(struct inode *inode, int type)
1334 1343
1335 /* First test before acquiring mutex - solves deadlocks when we 1344 /* First test before acquiring mutex - solves deadlocks when we
1336 * re-enter the quota code and are already holding the mutex */ 1345 * re-enter the quota code and are already holding the mutex */
1337 if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) 1346 if (!dquot_active(inode))
1338 return; 1347 return;
1339 1348
1340 /* First get references to structures we might need. */ 1349 /* First get references to structures we might need. */
@@ -1518,7 +1527,7 @@ int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags)
1518 * First test before acquiring mutex - solves deadlocks when we 1527 * First test before acquiring mutex - solves deadlocks when we
1519 * re-enter the quota code and are already holding the mutex 1528 * re-enter the quota code and are already holding the mutex
1520 */ 1529 */
1521 if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) { 1530 if (!dquot_active(inode)) {
1522 inode_incr_space(inode, number, reserve); 1531 inode_incr_space(inode, number, reserve);
1523 goto out; 1532 goto out;
1524 } 1533 }
@@ -1570,7 +1579,7 @@ int dquot_alloc_inode(const struct inode *inode)
1570 1579
1571 /* First test before acquiring mutex - solves deadlocks when we 1580 /* First test before acquiring mutex - solves deadlocks when we
1572 * re-enter the quota code and are already holding the mutex */ 1581 * re-enter the quota code and are already holding the mutex */
1573 if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) 1582 if (!dquot_active(inode))
1574 return 0; 1583 return 0;
1575 for (cnt = 0; cnt < MAXQUOTAS; cnt++) 1584 for (cnt = 0; cnt < MAXQUOTAS; cnt++)
1576 warntype[cnt] = QUOTA_NL_NOWARN; 1585 warntype[cnt] = QUOTA_NL_NOWARN;
@@ -1607,7 +1616,7 @@ int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
1607{ 1616{
1608 int cnt; 1617 int cnt;
1609 1618
1610 if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) { 1619 if (!dquot_active(inode)) {
1611 inode_claim_rsv_space(inode, number); 1620 inode_claim_rsv_space(inode, number);
1612 return 0; 1621 return 0;
1613 } 1622 }
@@ -1640,7 +1649,7 @@ void __dquot_free_space(struct inode *inode, qsize_t number, int flags)
1640 1649
1641 /* First test before acquiring mutex - solves deadlocks when we 1650 /* First test before acquiring mutex - solves deadlocks when we
1642 * re-enter the quota code and are already holding the mutex */ 1651 * re-enter the quota code and are already holding the mutex */
1643 if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) { 1652 if (!dquot_active(inode)) {
1644 inode_decr_space(inode, number, reserve); 1653 inode_decr_space(inode, number, reserve);
1645 return; 1654 return;
1646 } 1655 }
@@ -1678,7 +1687,7 @@ void dquot_free_inode(const struct inode *inode)
1678 1687
1679 /* First test before acquiring mutex - solves deadlocks when we 1688 /* First test before acquiring mutex - solves deadlocks when we
1680 * re-enter the quota code and are already holding the mutex */ 1689 * re-enter the quota code and are already holding the mutex */
1681 if (!sb_any_quota_active(inode->i_sb) || IS_NOQUOTA(inode)) 1690 if (!dquot_active(inode))
1682 return; 1691 return;
1683 1692
1684 down_read(&sb_dqopt(inode->i_sb)->dqptr_sem); 1693 down_read(&sb_dqopt(inode->i_sb)->dqptr_sem);
@@ -1801,7 +1810,7 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr)
1801 struct super_block *sb = inode->i_sb; 1810 struct super_block *sb = inode->i_sb;
1802 int ret; 1811 int ret;
1803 1812
1804 if (!sb_any_quota_active(sb) || IS_NOQUOTA(inode)) 1813 if (!dquot_active(inode))
1805 return 0; 1814 return 0;
1806 1815
1807 if (iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) 1816 if (iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid)
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index aa36793b48bd..126193c1a5ce 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -145,11 +145,6 @@ static inline bool sb_has_quota_active(struct super_block *sb, int type)
145 !sb_has_quota_suspended(sb, type); 145 !sb_has_quota_suspended(sb, type);
146} 146}
147 147
148static inline unsigned sb_any_quota_active(struct super_block *sb)
149{
150 return sb_any_quota_loaded(sb) & ~sb_any_quota_suspended(sb);
151}
152
153/* 148/*
154 * Operations supported for diskquotas. 149 * Operations supported for diskquotas.
155 */ 150 */
@@ -194,11 +189,6 @@ static inline int sb_has_quota_active(struct super_block *sb, int type)
194 return 0; 189 return 0;
195} 190}
196 191
197static inline int sb_any_quota_active(struct super_block *sb)
198{
199 return 0;
200}
201
202static inline void dquot_initialize(struct inode *inode) 192static inline void dquot_initialize(struct inode *inode)
203{ 193{
204} 194}