blob: e3a10272d47183f7af6c5a53faf0586ef6ba9f80 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * Definitions for diskquota-operations. When diskquota is configured these
3 * macros expand to the right source-code.
4 *
5 * Author: Marco van Wieringen <mvw@planets.elm.net>
Linus Torvalds1da177e2005-04-16 15:20:36 -07006 */
7#ifndef _LINUX_QUOTAOPS_
8#define _LINUX_QUOTAOPS_
9
Linus Torvalds1da177e2005-04-16 15:20:36 -070010#include <linux/smp_lock.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070011#include <linux/fs.h>
12
Jan Kara03b06342008-07-25 01:46:52 -070013static inline struct quota_info *sb_dqopt(struct super_block *sb)
14{
15 return &sb->s_dquot;
16}
Jan Kara74abb982008-07-25 01:46:51 -070017
Linus Torvalds1da177e2005-04-16 15:20:36 -070018#if defined(CONFIG_QUOTA)
19
20/*
21 * declaration of quota_function calls in kernel.
22 */
Jan Karab85f4b82008-07-25 01:46:50 -070023void sync_dquots(struct super_block *sb, int type);
Linus Torvalds1da177e2005-04-16 15:20:36 -070024
Jan Karab85f4b82008-07-25 01:46:50 -070025int dquot_initialize(struct inode *inode, int type);
26int dquot_drop(struct inode *inode);
Jan Kara3d9ea252008-10-10 16:12:23 +020027int dquot_drop_locked(struct inode *inode);
28struct dquot *dqget(struct super_block *sb, unsigned int id, int type);
29void dqput(struct dquot *dquot);
30int dquot_is_cached(struct super_block *sb, unsigned int id, int type);
Linus Torvalds1da177e2005-04-16 15:20:36 -070031
Jan Karab85f4b82008-07-25 01:46:50 -070032int dquot_alloc_space(struct inode *inode, qsize_t number, int prealloc);
Jan Kara12095462008-08-20 14:45:12 +020033int dquot_alloc_inode(const struct inode *inode, qsize_t number);
Linus Torvalds1da177e2005-04-16 15:20:36 -070034
Jan Karab85f4b82008-07-25 01:46:50 -070035int dquot_free_space(struct inode *inode, qsize_t number);
Jan Kara12095462008-08-20 14:45:12 +020036int dquot_free_inode(const struct inode *inode, qsize_t number);
Linus Torvalds1da177e2005-04-16 15:20:36 -070037
Jan Karab85f4b82008-07-25 01:46:50 -070038int dquot_transfer(struct inode *inode, struct iattr *iattr);
39int dquot_commit(struct dquot *dquot);
40int dquot_acquire(struct dquot *dquot);
41int dquot_release(struct dquot *dquot);
42int dquot_commit_info(struct super_block *sb, int type);
43int dquot_mark_dquot_dirty(struct dquot *dquot);
Linus Torvalds1da177e2005-04-16 15:20:36 -070044
Jan Karab85f4b82008-07-25 01:46:50 -070045int vfs_quota_on(struct super_block *sb, int type, int format_id,
46 char *path, int remount);
Jan Karaf55abc02008-08-20 17:50:32 +020047int vfs_quota_enable(struct inode *inode, int type, int format_id,
48 unsigned int flags);
Al Viro77e69da2008-08-01 04:29:18 -040049int vfs_quota_on_path(struct super_block *sb, int type, int format_id,
50 struct path *path);
Jan Karab85f4b82008-07-25 01:46:50 -070051int vfs_quota_on_mount(struct super_block *sb, char *qf_name,
52 int format_id, int type);
53int vfs_quota_off(struct super_block *sb, int type, int remount);
Jan Karaf55abc02008-08-20 17:50:32 +020054int vfs_quota_disable(struct super_block *sb, int type, unsigned int flags);
Jan Karab85f4b82008-07-25 01:46:50 -070055int vfs_quota_sync(struct super_block *sb, int type);
56int vfs_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
57int vfs_set_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
58int vfs_get_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *di);
59int vfs_set_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *di);
60
61void vfs_dq_drop(struct inode *inode);
62int vfs_dq_transfer(struct inode *inode, struct iattr *iattr);
63int vfs_dq_quota_on_remount(struct super_block *sb);
Linus Torvalds1da177e2005-04-16 15:20:36 -070064
Jan Kara03b06342008-07-25 01:46:52 -070065static inline struct mem_dqinfo *sb_dqinfo(struct super_block *sb, int type)
66{
67 return sb_dqopt(sb)->info + type;
68}
Jan Kara74abb982008-07-25 01:46:51 -070069
70/*
71 * Functions for checking status of quota
72 */
73
Jan Karaf55abc02008-08-20 17:50:32 +020074static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type)
Jan Kara03b06342008-07-25 01:46:52 -070075{
Jan Karaf55abc02008-08-20 17:50:32 +020076 return sb_dqopt(sb)->flags &
77 dquot_state_flag(DQUOT_USAGE_ENABLED, type);
Jan Kara03b06342008-07-25 01:46:52 -070078}
Jan Kara74abb982008-07-25 01:46:51 -070079
Jan Karaf55abc02008-08-20 17:50:32 +020080static inline int sb_has_quota_limits_enabled(struct super_block *sb, int type)
Jan Kara03b06342008-07-25 01:46:52 -070081{
Jan Karaf55abc02008-08-20 17:50:32 +020082 return sb_dqopt(sb)->flags &
83 dquot_state_flag(DQUOT_LIMITS_ENABLED, type);
Jan Kara03b06342008-07-25 01:46:52 -070084}
Jan Kara74abb982008-07-25 01:46:51 -070085
Jan Kara03b06342008-07-25 01:46:52 -070086static inline int sb_has_quota_suspended(struct super_block *sb, int type)
87{
Jan Karaf55abc02008-08-20 17:50:32 +020088 return sb_dqopt(sb)->flags &
89 dquot_state_flag(DQUOT_SUSPENDED, type);
Jan Kara03b06342008-07-25 01:46:52 -070090}
Jan Kara74abb982008-07-25 01:46:51 -070091
Jan Kara03b06342008-07-25 01:46:52 -070092static inline int sb_any_quota_suspended(struct super_block *sb)
93{
94 return sb_has_quota_suspended(sb, USRQUOTA) ||
95 sb_has_quota_suspended(sb, GRPQUOTA);
96}
Jan Kara74abb982008-07-25 01:46:51 -070097
Jan Karaf55abc02008-08-20 17:50:32 +020098/* Does kernel know about any quota information for given sb + type? */
99static inline int sb_has_quota_loaded(struct super_block *sb, int type)
100{
101 /* Currently if anything is on, then quota usage is on as well */
102 return sb_has_quota_usage_enabled(sb, type);
103}
104
105static inline int sb_any_quota_loaded(struct super_block *sb)
106{
107 return sb_has_quota_loaded(sb, USRQUOTA) ||
108 sb_has_quota_loaded(sb, GRPQUOTA);
109}
110
111static inline int sb_has_quota_active(struct super_block *sb, int type)
112{
113 return sb_has_quota_loaded(sb, type) &&
114 !sb_has_quota_suspended(sb, type);
115}
116
117static inline int sb_any_quota_active(struct super_block *sb)
118{
119 return sb_has_quota_active(sb, USRQUOTA) ||
120 sb_has_quota_active(sb, GRPQUOTA);
121}
122
Linus Torvalds1da177e2005-04-16 15:20:36 -0700123/*
124 * Operations supported for diskquotas.
125 */
126extern struct dquot_operations dquot_operations;
127extern struct quotactl_ops vfs_quotactl_ops;
128
129#define sb_dquot_ops (&dquot_operations)
130#define sb_quotactl_ops (&vfs_quotactl_ops)
131
132/* It is better to call this function outside of any transaction as it might
133 * need a lot of space in journal for dquot structure allocation. */
Jan Karab85f4b82008-07-25 01:46:50 -0700134static inline void vfs_dq_init(struct inode *inode)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700135{
136 BUG_ON(!inode->i_sb);
Jan Karaf55abc02008-08-20 17:50:32 +0200137 if (sb_any_quota_active(inode->i_sb) && !IS_NOQUOTA(inode))
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138 inode->i_sb->dq_op->initialize(inode, -1);
139}
140
Linus Torvalds1da177e2005-04-16 15:20:36 -0700141/* The following allocation/freeing/transfer functions *must* be called inside
142 * a transaction (deadlocks possible otherwise) */
Jan Karab85f4b82008-07-25 01:46:50 -0700143static inline int vfs_dq_prealloc_space_nodirty(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700144{
Jan Karaf55abc02008-08-20 17:50:32 +0200145 if (sb_any_quota_active(inode->i_sb)) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700146 /* Used space is updated in alloc_space() */
147 if (inode->i_sb->dq_op->alloc_space(inode, nr, 1) == NO_QUOTA)
148 return 1;
149 }
150 else
151 inode_add_bytes(inode, nr);
152 return 0;
153}
154
Jan Karab85f4b82008-07-25 01:46:50 -0700155static inline int vfs_dq_prealloc_space(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700156{
157 int ret;
Jan Karab85f4b82008-07-25 01:46:50 -0700158 if (!(ret = vfs_dq_prealloc_space_nodirty(inode, nr)))
Linus Torvalds1da177e2005-04-16 15:20:36 -0700159 mark_inode_dirty(inode);
160 return ret;
161}
162
Jan Karab85f4b82008-07-25 01:46:50 -0700163static inline int vfs_dq_alloc_space_nodirty(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700164{
Jan Karaf55abc02008-08-20 17:50:32 +0200165 if (sb_any_quota_active(inode->i_sb)) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700166 /* Used space is updated in alloc_space() */
167 if (inode->i_sb->dq_op->alloc_space(inode, nr, 0) == NO_QUOTA)
168 return 1;
169 }
170 else
171 inode_add_bytes(inode, nr);
172 return 0;
173}
174
Jan Karab85f4b82008-07-25 01:46:50 -0700175static inline int vfs_dq_alloc_space(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700176{
177 int ret;
Jan Karab85f4b82008-07-25 01:46:50 -0700178 if (!(ret = vfs_dq_alloc_space_nodirty(inode, nr)))
Linus Torvalds1da177e2005-04-16 15:20:36 -0700179 mark_inode_dirty(inode);
180 return ret;
181}
182
Jan Karab85f4b82008-07-25 01:46:50 -0700183static inline int vfs_dq_alloc_inode(struct inode *inode)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700184{
Jan Karaf55abc02008-08-20 17:50:32 +0200185 if (sb_any_quota_active(inode->i_sb)) {
Jan Karab85f4b82008-07-25 01:46:50 -0700186 vfs_dq_init(inode);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700187 if (inode->i_sb->dq_op->alloc_inode(inode, 1) == NO_QUOTA)
188 return 1;
189 }
190 return 0;
191}
192
Jan Karab85f4b82008-07-25 01:46:50 -0700193static inline void vfs_dq_free_space_nodirty(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700194{
Jan Karaf55abc02008-08-20 17:50:32 +0200195 if (sb_any_quota_active(inode->i_sb))
Linus Torvalds1da177e2005-04-16 15:20:36 -0700196 inode->i_sb->dq_op->free_space(inode, nr);
197 else
198 inode_sub_bytes(inode, nr);
199}
200
Jan Karab85f4b82008-07-25 01:46:50 -0700201static inline void vfs_dq_free_space(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700202{
Jan Karab85f4b82008-07-25 01:46:50 -0700203 vfs_dq_free_space_nodirty(inode, nr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700204 mark_inode_dirty(inode);
205}
206
Jan Karab85f4b82008-07-25 01:46:50 -0700207static inline void vfs_dq_free_inode(struct inode *inode)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700208{
Jan Karaf55abc02008-08-20 17:50:32 +0200209 if (sb_any_quota_active(inode->i_sb))
Linus Torvalds1da177e2005-04-16 15:20:36 -0700210 inode->i_sb->dq_op->free_inode(inode, 1);
211}
212
Linus Torvalds1da177e2005-04-16 15:20:36 -0700213/* The following two functions cannot be called inside a transaction */
Jan Karab85f4b82008-07-25 01:46:50 -0700214static inline void vfs_dq_sync(struct super_block *sb)
Jan Kara03f6e922008-04-28 02:14:32 -0700215{
216 sync_dquots(sb, -1);
217}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700218
Jan Karab85f4b82008-07-25 01:46:50 -0700219static inline int vfs_dq_off(struct super_block *sb, int remount)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700220{
221 int ret = -ENOSYS;
222
Jan Kara0ff5af82008-04-28 02:14:33 -0700223 if (sb->s_qcop && sb->s_qcop->quota_off)
224 ret = sb->s_qcop->quota_off(sb, -1, remount);
225 return ret;
226}
227
Linus Torvalds1da177e2005-04-16 15:20:36 -0700228#else
229
Jan Karaf55abc02008-08-20 17:50:32 +0200230static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type)
Jan Kara03b06342008-07-25 01:46:52 -0700231{
232 return 0;
233}
234
Jan Karaf55abc02008-08-20 17:50:32 +0200235static inline int sb_has_quota_limits_enabled(struct super_block *sb, int type)
Jan Kara03b06342008-07-25 01:46:52 -0700236{
237 return 0;
238}
239
240static inline int sb_has_quota_suspended(struct super_block *sb, int type)
241{
242 return 0;
243}
244
245static inline int sb_any_quota_suspended(struct super_block *sb)
246{
247 return 0;
248}
Jan Kara74abb982008-07-25 01:46:51 -0700249
Jan Karaf55abc02008-08-20 17:50:32 +0200250/* Does kernel know about any quota information for given sb + type? */
251static inline int sb_has_quota_loaded(struct super_block *sb, int type)
252{
253 return 0;
254}
255
256static inline int sb_any_quota_loaded(struct super_block *sb)
257{
258 return 0;
259}
260
261static inline int sb_has_quota_active(struct super_block *sb, int type)
262{
263 return 0;
264}
265
266static inline int sb_any_quota_active(struct super_block *sb)
267{
268 return 0;
269}
270
Linus Torvalds1da177e2005-04-16 15:20:36 -0700271/*
272 * NO-OP when quota not configured.
273 */
274#define sb_dquot_ops (NULL)
275#define sb_quotactl_ops (NULL)
Andrew Morton50f8c372008-04-28 02:14:35 -0700276
Jan Karab85f4b82008-07-25 01:46:50 -0700277static inline void vfs_dq_init(struct inode *inode)
Andrew Morton50f8c372008-04-28 02:14:35 -0700278{
279}
280
Jan Karab85f4b82008-07-25 01:46:50 -0700281static inline void vfs_dq_drop(struct inode *inode)
Andrew Morton50f8c372008-04-28 02:14:35 -0700282{
283}
284
Jan Karab85f4b82008-07-25 01:46:50 -0700285static inline int vfs_dq_alloc_inode(struct inode *inode)
Andrew Morton50f8c372008-04-28 02:14:35 -0700286{
287 return 0;
288}
289
Jan Karab85f4b82008-07-25 01:46:50 -0700290static inline void vfs_dq_free_inode(struct inode *inode)
Andrew Morton50f8c372008-04-28 02:14:35 -0700291{
292}
293
Jan Karab85f4b82008-07-25 01:46:50 -0700294static inline void vfs_dq_sync(struct super_block *sb)
Andrew Morton50f8c372008-04-28 02:14:35 -0700295{
296}
297
Jan Karab85f4b82008-07-25 01:46:50 -0700298static inline int vfs_dq_off(struct super_block *sb, int remount)
Andrew Morton50f8c372008-04-28 02:14:35 -0700299{
300 return 0;
301}
302
Jan Karab85f4b82008-07-25 01:46:50 -0700303static inline int vfs_dq_quota_on_remount(struct super_block *sb)
Andrew Morton50f8c372008-04-28 02:14:35 -0700304{
305 return 0;
306}
307
Jan Karab85f4b82008-07-25 01:46:50 -0700308static inline int vfs_dq_transfer(struct inode *inode, struct iattr *iattr)
Andrew Morton50f8c372008-04-28 02:14:35 -0700309{
310 return 0;
311}
312
Jan Karab85f4b82008-07-25 01:46:50 -0700313static inline int vfs_dq_prealloc_space_nodirty(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700314{
315 inode_add_bytes(inode, nr);
316 return 0;
317}
318
Jan Karab85f4b82008-07-25 01:46:50 -0700319static inline int vfs_dq_prealloc_space(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700320{
Jan Karab85f4b82008-07-25 01:46:50 -0700321 vfs_dq_prealloc_space_nodirty(inode, nr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700322 mark_inode_dirty(inode);
323 return 0;
324}
325
Jan Karab85f4b82008-07-25 01:46:50 -0700326static inline int vfs_dq_alloc_space_nodirty(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700327{
328 inode_add_bytes(inode, nr);
329 return 0;
330}
331
Jan Karab85f4b82008-07-25 01:46:50 -0700332static inline int vfs_dq_alloc_space(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700333{
Jan Karab85f4b82008-07-25 01:46:50 -0700334 vfs_dq_alloc_space_nodirty(inode, nr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700335 mark_inode_dirty(inode);
336 return 0;
337}
338
Jan Karab85f4b82008-07-25 01:46:50 -0700339static inline void vfs_dq_free_space_nodirty(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700340{
341 inode_sub_bytes(inode, nr);
342}
343
Jan Karab85f4b82008-07-25 01:46:50 -0700344static inline void vfs_dq_free_space(struct inode *inode, qsize_t nr)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700345{
Jan Karab85f4b82008-07-25 01:46:50 -0700346 vfs_dq_free_space_nodirty(inode, nr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700347 mark_inode_dirty(inode);
348}
349
350#endif /* CONFIG_QUOTA */
351
Jan Karab85f4b82008-07-25 01:46:50 -0700352static inline int vfs_dq_prealloc_block_nodirty(struct inode *inode, qsize_t nr)
Jan Kara03f6e922008-04-28 02:14:32 -0700353{
Jan Karab85f4b82008-07-25 01:46:50 -0700354 return vfs_dq_prealloc_space_nodirty(inode,
Jan Kara03f6e922008-04-28 02:14:32 -0700355 nr << inode->i_sb->s_blocksize_bits);
356}
357
Jan Karab85f4b82008-07-25 01:46:50 -0700358static inline int vfs_dq_prealloc_block(struct inode *inode, qsize_t nr)
Jan Kara03f6e922008-04-28 02:14:32 -0700359{
Jan Karab85f4b82008-07-25 01:46:50 -0700360 return vfs_dq_prealloc_space(inode,
Jan Kara03f6e922008-04-28 02:14:32 -0700361 nr << inode->i_sb->s_blocksize_bits);
362}
363
Jan Karab85f4b82008-07-25 01:46:50 -0700364static inline int vfs_dq_alloc_block_nodirty(struct inode *inode, qsize_t nr)
Jan Kara03f6e922008-04-28 02:14:32 -0700365{
Jan Karab85f4b82008-07-25 01:46:50 -0700366 return vfs_dq_alloc_space_nodirty(inode,
Jan Kara03f6e922008-04-28 02:14:32 -0700367 nr << inode->i_sb->s_blocksize_bits);
368}
369
Jan Karab85f4b82008-07-25 01:46:50 -0700370static inline int vfs_dq_alloc_block(struct inode *inode, qsize_t nr)
Jan Kara03f6e922008-04-28 02:14:32 -0700371{
Jan Karab85f4b82008-07-25 01:46:50 -0700372 return vfs_dq_alloc_space(inode,
Jan Kara03f6e922008-04-28 02:14:32 -0700373 nr << inode->i_sb->s_blocksize_bits);
374}
375
Jan Karab85f4b82008-07-25 01:46:50 -0700376static inline void vfs_dq_free_block_nodirty(struct inode *inode, qsize_t nr)
Jan Kara03f6e922008-04-28 02:14:32 -0700377{
Jan Karab85f4b82008-07-25 01:46:50 -0700378 vfs_dq_free_space_nodirty(inode, nr << inode->i_sb->s_blocksize_bits);
Jan Kara03f6e922008-04-28 02:14:32 -0700379}
380
Jan Karab85f4b82008-07-25 01:46:50 -0700381static inline void vfs_dq_free_block(struct inode *inode, qsize_t nr)
Jan Kara03f6e922008-04-28 02:14:32 -0700382{
Jan Karab85f4b82008-07-25 01:46:50 -0700383 vfs_dq_free_space(inode, nr << inode->i_sb->s_blocksize_bits);
Jan Kara03f6e922008-04-28 02:14:32 -0700384}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700385
Jan Karab85f4b82008-07-25 01:46:50 -0700386/*
387 * Define uppercase equivalents for compatibility with old function names
388 * Can go away when we think all users have been converted (15/04/2008)
389 */
390#define DQUOT_INIT(inode) vfs_dq_init(inode)
391#define DQUOT_DROP(inode) vfs_dq_drop(inode)
392#define DQUOT_PREALLOC_SPACE_NODIRTY(inode, nr) \
393 vfs_dq_prealloc_space_nodirty(inode, nr)
394#define DQUOT_PREALLOC_SPACE(inode, nr) vfs_dq_prealloc_space(inode, nr)
395#define DQUOT_ALLOC_SPACE_NODIRTY(inode, nr) \
396 vfs_dq_alloc_space_nodirty(inode, nr)
397#define DQUOT_ALLOC_SPACE(inode, nr) vfs_dq_alloc_space(inode, nr)
398#define DQUOT_PREALLOC_BLOCK_NODIRTY(inode, nr) \
399 vfs_dq_prealloc_block_nodirty(inode, nr)
400#define DQUOT_PREALLOC_BLOCK(inode, nr) vfs_dq_prealloc_block(inode, nr)
401#define DQUOT_ALLOC_BLOCK_NODIRTY(inode, nr) \
402 vfs_dq_alloc_block_nodirty(inode, nr)
403#define DQUOT_ALLOC_BLOCK(inode, nr) vfs_dq_alloc_block(inode, nr)
404#define DQUOT_ALLOC_INODE(inode) vfs_dq_alloc_inode(inode)
405#define DQUOT_FREE_SPACE_NODIRTY(inode, nr) \
406 vfs_dq_free_space_nodirty(inode, nr)
407#define DQUOT_FREE_SPACE(inode, nr) vfs_dq_free_space(inode, nr)
408#define DQUOT_FREE_BLOCK_NODIRTY(inode, nr) \
409 vfs_dq_free_block_nodirty(inode, nr)
410#define DQUOT_FREE_BLOCK(inode, nr) vfs_dq_free_block(inode, nr)
411#define DQUOT_FREE_INODE(inode) vfs_dq_free_inode(inode)
412#define DQUOT_TRANSFER(inode, iattr) vfs_dq_transfer(inode, iattr)
413#define DQUOT_SYNC(sb) vfs_dq_sync(sb)
414#define DQUOT_OFF(sb, remount) vfs_dq_off(sb, remount)
415#define DQUOT_ON_REMOUNT(sb) vfs_dq_quota_on_remount(sb)
416
Linus Torvalds1da177e2005-04-16 15:20:36 -0700417#endif /* _LINUX_QUOTAOPS_ */