[03/10] quota: Introduce dquot_enable_sb()
diff mbox series

Message ID 20191030152702.14269-4-s.hauer@pengutronix.de
State New
Headers show
Series
  • Add quota support to UBIFS
Related show

Commit Message

Sascha Hauer Oct. 30, 2019, 3:26 p.m. UTC
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(-)

Patch
diff mbox series

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,