]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
xfs: move xfs_parseargs() validation to a helper
authorIan Kent <raven@themaw.net>
Mon, 4 Nov 2019 21:58:45 +0000 (13:58 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Tue, 5 Nov 2019 16:28:26 +0000 (08:28 -0800)
Move the validation code of xfs_parseargs() into a helper for later
use within the mount context methods.

Signed-off-by: Ian Kent <raven@themaw.net>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_super.c

index 391c07ca6a3262b8f6b317497bd60569f20debd3..4b570ba3456ae93c9aaf4707f684987fc3e7848b 100644 (file)
@@ -308,59 +308,10 @@ xfs_fc_parse_param(
        return 0;
 }
 
-/*
- * This function fills in xfs_mount_t fields based on mount args.
- * Note: the superblock has _not_ yet been read in.
- *
- * Note that this function leaks the various device name allocations on
- * failure.  The caller takes care of them.
- *
- * *sb is const because this is also used to test options on the remount
- * path, and we don't want this to have any side effects at remount time.
- * Today this function does not change *sb, but just to future-proof...
- */
 static int
-xfs_parseargs(
-       struct xfs_mount        *mp,
-       char                    *options)
+xfs_fc_validate_params(
+       struct xfs_mount        *mp)
 {
-       const struct super_block *sb = mp->m_super;
-       char                    *p;
-       substring_t             args[MAX_OPT_ARGS];
-
-       /*
-        * Copy binary VFS mount flags we are interested in.
-        */
-       if (sb_rdonly(sb))
-               mp->m_flags |= XFS_MOUNT_RDONLY;
-       if (sb->s_flags & SB_DIRSYNC)
-               mp->m_flags |= XFS_MOUNT_DIRSYNC;
-       if (sb->s_flags & SB_SYNCHRONOUS)
-               mp->m_flags |= XFS_MOUNT_WSYNC;
-
-       /*
-        * These can be overridden by the mount option parsing.
-        */
-       mp->m_logbufs = -1;
-       mp->m_logbsize = -1;
-       mp->m_allocsize_log = 16; /* 64k */
-
-       if (!options)
-               return 0;
-
-       while ((p = strsep(&options, ",")) != NULL) {
-               int             token;
-               int             ret;
-
-               if (!*p)
-                       continue;
-
-               token = match_token(p, tokens, args);
-               ret = xfs_fc_parse_param(token, p, args, mp);
-               if (ret)
-                       return ret;
-       }
-
        /*
         * no recovery flag requires a read-only mount
         */
@@ -425,6 +376,62 @@ xfs_parseargs(
        return 0;
 }
 
+/*
+ * This function fills in xfs_mount_t fields based on mount args.
+ * Note: the superblock has _not_ yet been read in.
+ *
+ * Note that this function leaks the various device name allocations on
+ * failure.  The caller takes care of them.
+ *
+ * *sb is const because this is also used to test options on the remount
+ * path, and we don't want this to have any side effects at remount time.
+ * Today this function does not change *sb, but just to future-proof...
+ */
+static int
+xfs_parseargs(
+       struct xfs_mount        *mp,
+       char                    *options)
+{
+       const struct super_block *sb = mp->m_super;
+       char                    *p;
+       substring_t             args[MAX_OPT_ARGS];
+
+       /*
+        * Copy binary VFS mount flags we are interested in.
+        */
+       if (sb_rdonly(sb))
+               mp->m_flags |= XFS_MOUNT_RDONLY;
+       if (sb->s_flags & SB_DIRSYNC)
+               mp->m_flags |= XFS_MOUNT_DIRSYNC;
+       if (sb->s_flags & SB_SYNCHRONOUS)
+               mp->m_flags |= XFS_MOUNT_WSYNC;
+
+       /*
+        * These can be overridden by the mount option parsing.
+        */
+       mp->m_logbufs = -1;
+       mp->m_logbsize = -1;
+       mp->m_allocsize_log = 16; /* 64k */
+
+       if (!options)
+               return 0;
+
+       while ((p = strsep(&options, ",")) != NULL) {
+               int             token;
+               int             ret;
+
+               if (!*p)
+                       continue;
+
+               token = match_token(p, tokens, args);
+               ret = xfs_fc_parse_param(token, p, args, mp);
+               if (ret)
+                       return ret;
+       }
+
+       return xfs_fc_validate_params(mp);
+}
+
 struct proc_xfs_info {
        uint64_t        flag;
        char            *str;