@@ -2473,11 +2473,9 @@ EXPORT_SYMBOL(dquot_quota_on);
* More powerful function for turning on quotas allowing setting
* of individual quota flags
*/
-int dquot_enable(struct inode *inode, int type, int format_id,
- unsigned int flags)
+static int __dquot_enable(struct super_block *sb, struct inode *inode,
+ int type, int format_id, unsigned int flags)
{
- struct super_block *sb = inode->i_sb;
-
/* Just unsuspend quotas? */
BUG_ON(flags & DQUOT_SUSPENDED);
/* s_umount should be held in exclusive mode */
@@ -2502,8 +2500,23 @@ int dquot_enable(struct inode *inode, int type, int format_id,
return vfs_load_quota_inode(sb, inode, type, format_id, flags);
}
+
+int dquot_enable(struct inode *inode, int type, int format_id,
+ unsigned int flags)
+{
+ struct super_block *sb = inode->i_sb;
+
+ return __dquot_enable(sb, inode, type, format_id, flags);
+}
EXPORT_SYMBOL(dquot_enable);
+int dquot_enable_sb(struct super_block *sb, int type,
+ int format_id, unsigned int flags)
+{
+ return __dquot_enable(sb, NULL, type, format_id, flags);
+}
+EXPORT_SYMBOL(dquot_enable_sb);
+
/*
* This function is used when filesystem needs to initialize quotas
* during mount time.
@@ -89,6 +89,8 @@ int dquot_file_open(struct inode *inode, struct file *file);
int dquot_enable(struct inode *inode, int type, int format_id,
unsigned int flags);
+int dquot_enable_sb(struct super_block *sb, int type, int format_id,
+ unsigned int flags);
int dquot_quota_on(struct super_block *sb, int type, int format_id,
const struct path *path);
int dquot_quota_on_mount(struct super_block *sb, char *qf_name,
To support filesystems that do not store the quota informations in an inode create dquot_enable_sb(). This is a variant of dquot_enable() which takes a superblock instead of an inode This is a variant of dquot_enable() which takes a superblock instead of an inode. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- fs/quota/dquot.c | 21 +++++++++++++++++---- include/linux/quotaops.h | 2 ++ 2 files changed, 19 insertions(+), 4 deletions(-)