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