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@xxxxxxxxxxxxxx> --- fs/quota/dquot.c | 21 +++++++++++++++++---- include/linux/quotaops.h | 2 ++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index bbe3be21ff43..93bcdb83b69a 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c @@ -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. diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 185d94829701..9c0f76e5e0b1 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h @@ -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, -- 2.24.0.rc1 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/