Commit 9a861816 authored by Ian Kent's avatar Ian Kent Committed by Darrick J. Wong

xfs: move xfs_parseargs() validation to a helper

Move the validation code of xfs_parseargs() into a helper for later
use within the mount context methods.
Signed-off-by: default avatarIan Kent <raven@themaw.net>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 48a06e1b
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment