xref: /openbmc/linux/include/linux/quotaops.h (revision 7d9056ba)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  * Definitions for diskquota-operations. When diskquota is configured these
31da177e4SLinus Torvalds  * macros expand to the right source-code.
41da177e4SLinus Torvalds  *
51da177e4SLinus Torvalds  * Author:  Marco van Wieringen <mvw@planets.elm.net>
61da177e4SLinus Torvalds  */
71da177e4SLinus Torvalds #ifndef _LINUX_QUOTAOPS_
81da177e4SLinus Torvalds #define _LINUX_QUOTAOPS_
91da177e4SLinus Torvalds 
101da177e4SLinus Torvalds #include <linux/smp_lock.h>
111da177e4SLinus Torvalds #include <linux/fs.h>
121da177e4SLinus Torvalds 
1303b06343SJan Kara static inline struct quota_info *sb_dqopt(struct super_block *sb)
1403b06343SJan Kara {
1503b06343SJan Kara 	return &sb->s_dquot;
1603b06343SJan Kara }
1774abb989SJan Kara 
181da177e4SLinus Torvalds #if defined(CONFIG_QUOTA)
191da177e4SLinus Torvalds 
201da177e4SLinus Torvalds /*
211da177e4SLinus Torvalds  * declaration of quota_function calls in kernel.
221da177e4SLinus Torvalds  */
23b85f4b87SJan Kara void sync_dquots(struct super_block *sb, int type);
241da177e4SLinus Torvalds 
25b85f4b87SJan Kara int dquot_initialize(struct inode *inode, int type);
26b85f4b87SJan Kara int dquot_drop(struct inode *inode);
273d9ea253SJan Kara int dquot_drop_locked(struct inode *inode);
283d9ea253SJan Kara struct dquot *dqget(struct super_block *sb, unsigned int id, int type);
293d9ea253SJan Kara void dqput(struct dquot *dquot);
303d9ea253SJan Kara int dquot_is_cached(struct super_block *sb, unsigned int id, int type);
3112c77527SJan Kara int dquot_scan_active(struct super_block *sb,
3212c77527SJan Kara 		      int (*fn)(struct dquot *dquot, unsigned long priv),
3312c77527SJan Kara 		      unsigned long priv);
347d9056baSJan Kara struct dquot *dquot_alloc(struct super_block *sb, int type);
357d9056baSJan Kara void dquot_destroy(struct dquot *dquot);
361da177e4SLinus Torvalds 
37b85f4b87SJan Kara int dquot_alloc_space(struct inode *inode, qsize_t number, int prealloc);
3812095460SJan Kara int dquot_alloc_inode(const struct inode *inode, qsize_t number);
391da177e4SLinus Torvalds 
40b85f4b87SJan Kara int dquot_free_space(struct inode *inode, qsize_t number);
4112095460SJan Kara int dquot_free_inode(const struct inode *inode, qsize_t number);
421da177e4SLinus Torvalds 
43b85f4b87SJan Kara int dquot_transfer(struct inode *inode, struct iattr *iattr);
44b85f4b87SJan Kara int dquot_commit(struct dquot *dquot);
45b85f4b87SJan Kara int dquot_acquire(struct dquot *dquot);
46b85f4b87SJan Kara int dquot_release(struct dquot *dquot);
47b85f4b87SJan Kara int dquot_commit_info(struct super_block *sb, int type);
48b85f4b87SJan Kara int dquot_mark_dquot_dirty(struct dquot *dquot);
491da177e4SLinus Torvalds 
50b85f4b87SJan Kara int vfs_quota_on(struct super_block *sb, int type, int format_id,
510ff5af83SJan Kara  	char *path, int remount);
52f55abc0fSJan Kara int vfs_quota_enable(struct inode *inode, int type, int format_id,
53f55abc0fSJan Kara 	unsigned int flags);
5477e69dacSAl Viro int vfs_quota_on_path(struct super_block *sb, int type, int format_id,
5577e69dacSAl Viro  	struct path *path);
56b85f4b87SJan Kara int vfs_quota_on_mount(struct super_block *sb, char *qf_name,
5784de856eSChristoph Hellwig  	int format_id, int type);
58b85f4b87SJan Kara int vfs_quota_off(struct super_block *sb, int type, int remount);
59f55abc0fSJan Kara int vfs_quota_disable(struct super_block *sb, int type, unsigned int flags);
60b85f4b87SJan Kara int vfs_quota_sync(struct super_block *sb, int type);
61b85f4b87SJan Kara int vfs_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
62b85f4b87SJan Kara int vfs_set_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
63b85f4b87SJan Kara int vfs_get_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *di);
64b85f4b87SJan Kara int vfs_set_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *di);
65b85f4b87SJan Kara 
66b85f4b87SJan Kara void vfs_dq_drop(struct inode *inode);
67b85f4b87SJan Kara int vfs_dq_transfer(struct inode *inode, struct iattr *iattr);
68b85f4b87SJan Kara int vfs_dq_quota_on_remount(struct super_block *sb);
691da177e4SLinus Torvalds 
7003b06343SJan Kara static inline struct mem_dqinfo *sb_dqinfo(struct super_block *sb, int type)
7103b06343SJan Kara {
7203b06343SJan Kara 	return sb_dqopt(sb)->info + type;
7303b06343SJan Kara }
7474abb989SJan Kara 
7574abb989SJan Kara /*
7674abb989SJan Kara  * Functions for checking status of quota
7774abb989SJan Kara  */
7874abb989SJan Kara 
79f55abc0fSJan Kara static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type)
8003b06343SJan Kara {
81f55abc0fSJan Kara 	return sb_dqopt(sb)->flags &
82f55abc0fSJan Kara 				dquot_state_flag(DQUOT_USAGE_ENABLED, type);
8303b06343SJan Kara }
8474abb989SJan Kara 
85f55abc0fSJan Kara static inline int sb_has_quota_limits_enabled(struct super_block *sb, int type)
8603b06343SJan Kara {
87f55abc0fSJan Kara 	return sb_dqopt(sb)->flags &
88f55abc0fSJan Kara 				dquot_state_flag(DQUOT_LIMITS_ENABLED, type);
8903b06343SJan Kara }
9074abb989SJan Kara 
9103b06343SJan Kara static inline int sb_has_quota_suspended(struct super_block *sb, int type)
9203b06343SJan Kara {
93f55abc0fSJan Kara 	return sb_dqopt(sb)->flags &
94f55abc0fSJan Kara 				dquot_state_flag(DQUOT_SUSPENDED, type);
9503b06343SJan Kara }
9674abb989SJan Kara 
9703b06343SJan Kara static inline int sb_any_quota_suspended(struct super_block *sb)
9803b06343SJan Kara {
9903b06343SJan Kara 	return sb_has_quota_suspended(sb, USRQUOTA) ||
10003b06343SJan Kara 		sb_has_quota_suspended(sb, GRPQUOTA);
10103b06343SJan Kara }
10274abb989SJan Kara 
103f55abc0fSJan Kara /* Does kernel know about any quota information for given sb + type? */
104f55abc0fSJan Kara static inline int sb_has_quota_loaded(struct super_block *sb, int type)
105f55abc0fSJan Kara {
106f55abc0fSJan Kara 	/* Currently if anything is on, then quota usage is on as well */
107f55abc0fSJan Kara 	return sb_has_quota_usage_enabled(sb, type);
108f55abc0fSJan Kara }
109f55abc0fSJan Kara 
110f55abc0fSJan Kara static inline int sb_any_quota_loaded(struct super_block *sb)
111f55abc0fSJan Kara {
112f55abc0fSJan Kara 	return sb_has_quota_loaded(sb, USRQUOTA) ||
113f55abc0fSJan Kara 		sb_has_quota_loaded(sb, GRPQUOTA);
114f55abc0fSJan Kara }
115f55abc0fSJan Kara 
116f55abc0fSJan Kara static inline int sb_has_quota_active(struct super_block *sb, int type)
117f55abc0fSJan Kara {
118f55abc0fSJan Kara 	return sb_has_quota_loaded(sb, type) &&
119f55abc0fSJan Kara 	       !sb_has_quota_suspended(sb, type);
120f55abc0fSJan Kara }
121f55abc0fSJan Kara 
122f55abc0fSJan Kara static inline int sb_any_quota_active(struct super_block *sb)
123f55abc0fSJan Kara {
124f55abc0fSJan Kara 	return sb_has_quota_active(sb, USRQUOTA) ||
125f55abc0fSJan Kara 	       sb_has_quota_active(sb, GRPQUOTA);
126f55abc0fSJan Kara }
127f55abc0fSJan Kara 
1281da177e4SLinus Torvalds /*
1291da177e4SLinus Torvalds  * Operations supported for diskquotas.
1301da177e4SLinus Torvalds  */
1311da177e4SLinus Torvalds extern struct dquot_operations dquot_operations;
1321da177e4SLinus Torvalds extern struct quotactl_ops vfs_quotactl_ops;
1331da177e4SLinus Torvalds 
1341da177e4SLinus Torvalds #define sb_dquot_ops (&dquot_operations)
1351da177e4SLinus Torvalds #define sb_quotactl_ops (&vfs_quotactl_ops)
1361da177e4SLinus Torvalds 
1371da177e4SLinus Torvalds /* It is better to call this function outside of any transaction as it might
1381da177e4SLinus Torvalds  * need a lot of space in journal for dquot structure allocation. */
139b85f4b87SJan Kara static inline void vfs_dq_init(struct inode *inode)
1401da177e4SLinus Torvalds {
1411da177e4SLinus Torvalds 	BUG_ON(!inode->i_sb);
142f55abc0fSJan Kara 	if (sb_any_quota_active(inode->i_sb) && !IS_NOQUOTA(inode))
1431da177e4SLinus Torvalds 		inode->i_sb->dq_op->initialize(inode, -1);
1441da177e4SLinus Torvalds }
1451da177e4SLinus Torvalds 
1461da177e4SLinus Torvalds /* The following allocation/freeing/transfer functions *must* be called inside
1471da177e4SLinus Torvalds  * a transaction (deadlocks possible otherwise) */
148b85f4b87SJan Kara static inline int vfs_dq_prealloc_space_nodirty(struct inode *inode, qsize_t nr)
1491da177e4SLinus Torvalds {
150f55abc0fSJan Kara 	if (sb_any_quota_active(inode->i_sb)) {
1511da177e4SLinus Torvalds 		/* Used space is updated in alloc_space() */
1521da177e4SLinus Torvalds 		if (inode->i_sb->dq_op->alloc_space(inode, nr, 1) == NO_QUOTA)
1531da177e4SLinus Torvalds 			return 1;
1541da177e4SLinus Torvalds 	}
1551da177e4SLinus Torvalds 	else
1561da177e4SLinus Torvalds 		inode_add_bytes(inode, nr);
1571da177e4SLinus Torvalds 	return 0;
1581da177e4SLinus Torvalds }
1591da177e4SLinus Torvalds 
160b85f4b87SJan Kara static inline int vfs_dq_prealloc_space(struct inode *inode, qsize_t nr)
1611da177e4SLinus Torvalds {
1621da177e4SLinus Torvalds 	int ret;
163b85f4b87SJan Kara         if (!(ret =  vfs_dq_prealloc_space_nodirty(inode, nr)))
1641da177e4SLinus Torvalds 		mark_inode_dirty(inode);
1651da177e4SLinus Torvalds 	return ret;
1661da177e4SLinus Torvalds }
1671da177e4SLinus Torvalds 
168b85f4b87SJan Kara static inline int vfs_dq_alloc_space_nodirty(struct inode *inode, qsize_t nr)
1691da177e4SLinus Torvalds {
170f55abc0fSJan Kara 	if (sb_any_quota_active(inode->i_sb)) {
1711da177e4SLinus Torvalds 		/* Used space is updated in alloc_space() */
1721da177e4SLinus Torvalds 		if (inode->i_sb->dq_op->alloc_space(inode, nr, 0) == NO_QUOTA)
1731da177e4SLinus Torvalds 			return 1;
1741da177e4SLinus Torvalds 	}
1751da177e4SLinus Torvalds 	else
1761da177e4SLinus Torvalds 		inode_add_bytes(inode, nr);
1771da177e4SLinus Torvalds 	return 0;
1781da177e4SLinus Torvalds }
1791da177e4SLinus Torvalds 
180b85f4b87SJan Kara static inline int vfs_dq_alloc_space(struct inode *inode, qsize_t nr)
1811da177e4SLinus Torvalds {
1821da177e4SLinus Torvalds 	int ret;
183b85f4b87SJan Kara 	if (!(ret = vfs_dq_alloc_space_nodirty(inode, nr)))
1841da177e4SLinus Torvalds 		mark_inode_dirty(inode);
1851da177e4SLinus Torvalds 	return ret;
1861da177e4SLinus Torvalds }
1871da177e4SLinus Torvalds 
188b85f4b87SJan Kara static inline int vfs_dq_alloc_inode(struct inode *inode)
1891da177e4SLinus Torvalds {
190f55abc0fSJan Kara 	if (sb_any_quota_active(inode->i_sb)) {
191b85f4b87SJan Kara 		vfs_dq_init(inode);
1921da177e4SLinus Torvalds 		if (inode->i_sb->dq_op->alloc_inode(inode, 1) == NO_QUOTA)
1931da177e4SLinus Torvalds 			return 1;
1941da177e4SLinus Torvalds 	}
1951da177e4SLinus Torvalds 	return 0;
1961da177e4SLinus Torvalds }
1971da177e4SLinus Torvalds 
198b85f4b87SJan Kara static inline void vfs_dq_free_space_nodirty(struct inode *inode, qsize_t nr)
1991da177e4SLinus Torvalds {
200f55abc0fSJan Kara 	if (sb_any_quota_active(inode->i_sb))
2011da177e4SLinus Torvalds 		inode->i_sb->dq_op->free_space(inode, nr);
2021da177e4SLinus Torvalds 	else
2031da177e4SLinus Torvalds 		inode_sub_bytes(inode, nr);
2041da177e4SLinus Torvalds }
2051da177e4SLinus Torvalds 
206b85f4b87SJan Kara static inline void vfs_dq_free_space(struct inode *inode, qsize_t nr)
2071da177e4SLinus Torvalds {
208b85f4b87SJan Kara 	vfs_dq_free_space_nodirty(inode, nr);
2091da177e4SLinus Torvalds 	mark_inode_dirty(inode);
2101da177e4SLinus Torvalds }
2111da177e4SLinus Torvalds 
212b85f4b87SJan Kara static inline void vfs_dq_free_inode(struct inode *inode)
2131da177e4SLinus Torvalds {
214f55abc0fSJan Kara 	if (sb_any_quota_active(inode->i_sb))
2151da177e4SLinus Torvalds 		inode->i_sb->dq_op->free_inode(inode, 1);
2161da177e4SLinus Torvalds }
2171da177e4SLinus Torvalds 
2181da177e4SLinus Torvalds /* The following two functions cannot be called inside a transaction */
219b85f4b87SJan Kara static inline void vfs_dq_sync(struct super_block *sb)
22003f6e92bSJan Kara {
22103f6e92bSJan Kara 	sync_dquots(sb, -1);
22203f6e92bSJan Kara }
2231da177e4SLinus Torvalds 
224b85f4b87SJan Kara static inline int vfs_dq_off(struct super_block *sb, int remount)
2251da177e4SLinus Torvalds {
2261da177e4SLinus Torvalds 	int ret = -ENOSYS;
2271da177e4SLinus Torvalds 
2280ff5af83SJan Kara 	if (sb->s_qcop && sb->s_qcop->quota_off)
2290ff5af83SJan Kara 		ret = sb->s_qcop->quota_off(sb, -1, remount);
2300ff5af83SJan Kara 	return ret;
2310ff5af83SJan Kara }
2320ff5af83SJan Kara 
2331da177e4SLinus Torvalds #else
2341da177e4SLinus Torvalds 
235f55abc0fSJan Kara static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type)
23603b06343SJan Kara {
23703b06343SJan Kara 	return 0;
23803b06343SJan Kara }
23903b06343SJan Kara 
240f55abc0fSJan Kara static inline int sb_has_quota_limits_enabled(struct super_block *sb, int type)
24103b06343SJan Kara {
24203b06343SJan Kara 	return 0;
24303b06343SJan Kara }
24403b06343SJan Kara 
24503b06343SJan Kara static inline int sb_has_quota_suspended(struct super_block *sb, int type)
24603b06343SJan Kara {
24703b06343SJan Kara 	return 0;
24803b06343SJan Kara }
24903b06343SJan Kara 
25003b06343SJan Kara static inline int sb_any_quota_suspended(struct super_block *sb)
25103b06343SJan Kara {
25203b06343SJan Kara 	return 0;
25303b06343SJan Kara }
25474abb989SJan Kara 
255f55abc0fSJan Kara /* Does kernel know about any quota information for given sb + type? */
256f55abc0fSJan Kara static inline int sb_has_quota_loaded(struct super_block *sb, int type)
257f55abc0fSJan Kara {
258f55abc0fSJan Kara 	return 0;
259f55abc0fSJan Kara }
260f55abc0fSJan Kara 
261f55abc0fSJan Kara static inline int sb_any_quota_loaded(struct super_block *sb)
262f55abc0fSJan Kara {
263f55abc0fSJan Kara 	return 0;
264f55abc0fSJan Kara }
265f55abc0fSJan Kara 
266f55abc0fSJan Kara static inline int sb_has_quota_active(struct super_block *sb, int type)
267f55abc0fSJan Kara {
268f55abc0fSJan Kara 	return 0;
269f55abc0fSJan Kara }
270f55abc0fSJan Kara 
271f55abc0fSJan Kara static inline int sb_any_quota_active(struct super_block *sb)
272f55abc0fSJan Kara {
273f55abc0fSJan Kara 	return 0;
274f55abc0fSJan Kara }
275f55abc0fSJan Kara 
2761da177e4SLinus Torvalds /*
2771da177e4SLinus Torvalds  * NO-OP when quota not configured.
2781da177e4SLinus Torvalds  */
2791da177e4SLinus Torvalds #define sb_dquot_ops				(NULL)
2801da177e4SLinus Torvalds #define sb_quotactl_ops				(NULL)
28150f8c370SAndrew Morton 
282b85f4b87SJan Kara static inline void vfs_dq_init(struct inode *inode)
28350f8c370SAndrew Morton {
28450f8c370SAndrew Morton }
28550f8c370SAndrew Morton 
286b85f4b87SJan Kara static inline void vfs_dq_drop(struct inode *inode)
28750f8c370SAndrew Morton {
28850f8c370SAndrew Morton }
28950f8c370SAndrew Morton 
290b85f4b87SJan Kara static inline int vfs_dq_alloc_inode(struct inode *inode)
29150f8c370SAndrew Morton {
29250f8c370SAndrew Morton 	return 0;
29350f8c370SAndrew Morton }
29450f8c370SAndrew Morton 
295b85f4b87SJan Kara static inline void vfs_dq_free_inode(struct inode *inode)
29650f8c370SAndrew Morton {
29750f8c370SAndrew Morton }
29850f8c370SAndrew Morton 
299b85f4b87SJan Kara static inline void vfs_dq_sync(struct super_block *sb)
30050f8c370SAndrew Morton {
30150f8c370SAndrew Morton }
30250f8c370SAndrew Morton 
303b85f4b87SJan Kara static inline int vfs_dq_off(struct super_block *sb, int remount)
30450f8c370SAndrew Morton {
30550f8c370SAndrew Morton 	return 0;
30650f8c370SAndrew Morton }
30750f8c370SAndrew Morton 
308b85f4b87SJan Kara static inline int vfs_dq_quota_on_remount(struct super_block *sb)
30950f8c370SAndrew Morton {
31050f8c370SAndrew Morton 	return 0;
31150f8c370SAndrew Morton }
31250f8c370SAndrew Morton 
313b85f4b87SJan Kara static inline int vfs_dq_transfer(struct inode *inode, struct iattr *iattr)
31450f8c370SAndrew Morton {
31550f8c370SAndrew Morton 	return 0;
31650f8c370SAndrew Morton }
31750f8c370SAndrew Morton 
318b85f4b87SJan Kara static inline int vfs_dq_prealloc_space_nodirty(struct inode *inode, qsize_t nr)
3191da177e4SLinus Torvalds {
3201da177e4SLinus Torvalds 	inode_add_bytes(inode, nr);
3211da177e4SLinus Torvalds 	return 0;
3221da177e4SLinus Torvalds }
3231da177e4SLinus Torvalds 
324b85f4b87SJan Kara static inline int vfs_dq_prealloc_space(struct inode *inode, qsize_t nr)
3251da177e4SLinus Torvalds {
326b85f4b87SJan Kara 	vfs_dq_prealloc_space_nodirty(inode, nr);
3271da177e4SLinus Torvalds 	mark_inode_dirty(inode);
3281da177e4SLinus Torvalds 	return 0;
3291da177e4SLinus Torvalds }
3301da177e4SLinus Torvalds 
331b85f4b87SJan Kara static inline int vfs_dq_alloc_space_nodirty(struct inode *inode, qsize_t nr)
3321da177e4SLinus Torvalds {
3331da177e4SLinus Torvalds 	inode_add_bytes(inode, nr);
3341da177e4SLinus Torvalds 	return 0;
3351da177e4SLinus Torvalds }
3361da177e4SLinus Torvalds 
337b85f4b87SJan Kara static inline int vfs_dq_alloc_space(struct inode *inode, qsize_t nr)
3381da177e4SLinus Torvalds {
339b85f4b87SJan Kara 	vfs_dq_alloc_space_nodirty(inode, nr);
3401da177e4SLinus Torvalds 	mark_inode_dirty(inode);
3411da177e4SLinus Torvalds 	return 0;
3421da177e4SLinus Torvalds }
3431da177e4SLinus Torvalds 
344b85f4b87SJan Kara static inline void vfs_dq_free_space_nodirty(struct inode *inode, qsize_t nr)
3451da177e4SLinus Torvalds {
3461da177e4SLinus Torvalds 	inode_sub_bytes(inode, nr);
3471da177e4SLinus Torvalds }
3481da177e4SLinus Torvalds 
349b85f4b87SJan Kara static inline void vfs_dq_free_space(struct inode *inode, qsize_t nr)
3501da177e4SLinus Torvalds {
351b85f4b87SJan Kara 	vfs_dq_free_space_nodirty(inode, nr);
3521da177e4SLinus Torvalds 	mark_inode_dirty(inode);
3531da177e4SLinus Torvalds }
3541da177e4SLinus Torvalds 
3551da177e4SLinus Torvalds #endif /* CONFIG_QUOTA */
3561da177e4SLinus Torvalds 
357b85f4b87SJan Kara static inline int vfs_dq_prealloc_block_nodirty(struct inode *inode, qsize_t nr)
35803f6e92bSJan Kara {
359b85f4b87SJan Kara 	return vfs_dq_prealloc_space_nodirty(inode,
36003f6e92bSJan Kara 			nr << inode->i_sb->s_blocksize_bits);
36103f6e92bSJan Kara }
36203f6e92bSJan Kara 
363b85f4b87SJan Kara static inline int vfs_dq_prealloc_block(struct inode *inode, qsize_t nr)
36403f6e92bSJan Kara {
365b85f4b87SJan Kara 	return vfs_dq_prealloc_space(inode,
36603f6e92bSJan Kara 			nr << inode->i_sb->s_blocksize_bits);
36703f6e92bSJan Kara }
36803f6e92bSJan Kara 
369b85f4b87SJan Kara static inline int vfs_dq_alloc_block_nodirty(struct inode *inode, qsize_t nr)
37003f6e92bSJan Kara {
371b85f4b87SJan Kara  	return vfs_dq_alloc_space_nodirty(inode,
37203f6e92bSJan Kara 			nr << inode->i_sb->s_blocksize_bits);
37303f6e92bSJan Kara }
37403f6e92bSJan Kara 
375b85f4b87SJan Kara static inline int vfs_dq_alloc_block(struct inode *inode, qsize_t nr)
37603f6e92bSJan Kara {
377b85f4b87SJan Kara 	return vfs_dq_alloc_space(inode,
37803f6e92bSJan Kara 			nr << inode->i_sb->s_blocksize_bits);
37903f6e92bSJan Kara }
38003f6e92bSJan Kara 
381b85f4b87SJan Kara static inline void vfs_dq_free_block_nodirty(struct inode *inode, qsize_t nr)
38203f6e92bSJan Kara {
383b85f4b87SJan Kara 	vfs_dq_free_space_nodirty(inode, nr << inode->i_sb->s_blocksize_bits);
38403f6e92bSJan Kara }
38503f6e92bSJan Kara 
386b85f4b87SJan Kara static inline void vfs_dq_free_block(struct inode *inode, qsize_t nr)
38703f6e92bSJan Kara {
388b85f4b87SJan Kara 	vfs_dq_free_space(inode, nr << inode->i_sb->s_blocksize_bits);
38903f6e92bSJan Kara }
3901da177e4SLinus Torvalds 
391b85f4b87SJan Kara /*
392b85f4b87SJan Kara  * Define uppercase equivalents for compatibility with old function names
393b85f4b87SJan Kara  * Can go away when we think all users have been converted (15/04/2008)
394b85f4b87SJan Kara  */
395b85f4b87SJan Kara #define DQUOT_INIT(inode) vfs_dq_init(inode)
396b85f4b87SJan Kara #define DQUOT_DROP(inode) vfs_dq_drop(inode)
397b85f4b87SJan Kara #define DQUOT_PREALLOC_SPACE_NODIRTY(inode, nr) \
398b85f4b87SJan Kara 				vfs_dq_prealloc_space_nodirty(inode, nr)
399b85f4b87SJan Kara #define DQUOT_PREALLOC_SPACE(inode, nr) vfs_dq_prealloc_space(inode, nr)
400b85f4b87SJan Kara #define DQUOT_ALLOC_SPACE_NODIRTY(inode, nr) \
401b85f4b87SJan Kara 				vfs_dq_alloc_space_nodirty(inode, nr)
402b85f4b87SJan Kara #define DQUOT_ALLOC_SPACE(inode, nr) vfs_dq_alloc_space(inode, nr)
403b85f4b87SJan Kara #define DQUOT_PREALLOC_BLOCK_NODIRTY(inode, nr) \
404b85f4b87SJan Kara 				vfs_dq_prealloc_block_nodirty(inode, nr)
405b85f4b87SJan Kara #define DQUOT_PREALLOC_BLOCK(inode, nr) vfs_dq_prealloc_block(inode, nr)
406b85f4b87SJan Kara #define DQUOT_ALLOC_BLOCK_NODIRTY(inode, nr) \
407b85f4b87SJan Kara 				vfs_dq_alloc_block_nodirty(inode, nr)
408b85f4b87SJan Kara #define DQUOT_ALLOC_BLOCK(inode, nr) vfs_dq_alloc_block(inode, nr)
409b85f4b87SJan Kara #define DQUOT_ALLOC_INODE(inode) vfs_dq_alloc_inode(inode)
410b85f4b87SJan Kara #define DQUOT_FREE_SPACE_NODIRTY(inode, nr) \
411b85f4b87SJan Kara 				vfs_dq_free_space_nodirty(inode, nr)
412b85f4b87SJan Kara #define DQUOT_FREE_SPACE(inode, nr) vfs_dq_free_space(inode, nr)
413b85f4b87SJan Kara #define DQUOT_FREE_BLOCK_NODIRTY(inode, nr) \
414b85f4b87SJan Kara 				vfs_dq_free_block_nodirty(inode, nr)
415b85f4b87SJan Kara #define DQUOT_FREE_BLOCK(inode, nr) vfs_dq_free_block(inode, nr)
416b85f4b87SJan Kara #define DQUOT_FREE_INODE(inode) vfs_dq_free_inode(inode)
417b85f4b87SJan Kara #define DQUOT_TRANSFER(inode, iattr) vfs_dq_transfer(inode, iattr)
418b85f4b87SJan Kara #define DQUOT_SYNC(sb) vfs_dq_sync(sb)
419b85f4b87SJan Kara #define DQUOT_OFF(sb, remount) vfs_dq_off(sb, remount)
420b85f4b87SJan Kara #define DQUOT_ON_REMOUNT(sb) vfs_dq_quota_on_remount(sb)
421b85f4b87SJan Kara 
4221da177e4SLinus Torvalds #endif /* _LINUX_QUOTAOPS_ */
423