From: Brian Foster <bfoster@redhat.com>
To: Ian Kent <raven@themaw.net>
Cc: linux-xfs <linux-xfs@vger.kernel.org>,
Dave Chinner <dchinner@redhat.com>,
David Howells <dhowells@redhat.com>,
Al Viro <viro@zeniv.linux.org.uk>,
Eric Sandeen <sandeen@sandeen.net>
Subject: Re: [PATCH v2 06/15] xfs: mount-api - move xfs_parseargs() validation to a helper
Date: Tue, 27 Aug 2019 08:41:58 -0400 [thread overview]
Message-ID: <20190827124158.GE10636@bfoster> (raw)
In-Reply-To: <156652198915.2607.7532914515862448103.stgit@fedora-28>
On Fri, Aug 23, 2019 at 08:59:49AM +0800, Ian Kent wrote:
> 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>
> ---
> fs/xfs/xfs_super.c | 180 ++++++++++++++++++++++++++++------------------------
> 1 file changed, 98 insertions(+), 82 deletions(-)
>
> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> index 754d2ccfd960..7cdda17ee0ff 100644
> --- a/fs/xfs/xfs_super.c
> +++ b/fs/xfs/xfs_super.c
...
> @@ -442,89 +535,12 @@ xfs_parseargs(
> ret = xfs_parse_param(&fc, ¶m);
> kfree(param.string);
> if (ret < 0)
> - return ret;
> - }
> -
> - /*
> - * no recovery flag requires a read-only mount
> - */
> - if ((mp->m_flags & XFS_MOUNT_NORECOVERY) &&
> - !(mp->m_flags & XFS_MOUNT_RDONLY)) {
> - xfs_warn(mp, "no-recovery mounts must be read-only.");
> - return -EINVAL;
> - }
> -
> - if ((mp->m_flags & XFS_MOUNT_NOALIGN) && (ctx->dsunit || ctx->dswidth)) {
> - xfs_warn(mp,
> - "sunit and swidth options incompatible with the noalign option");
> - return -EINVAL;
> - }
> -
> -#ifndef CONFIG_XFS_QUOTA
> - if (XFS_IS_QUOTA_RUNNING(mp)) {
> - xfs_warn(mp, "quota support not available in this kernel.");
> - return -EINVAL;
> - }
> -#endif
> -
> - if ((ctx->dsunit && !ctx->dswidth) || (!ctx->dsunit && ctx->dswidth)) {
> - xfs_warn(mp, "sunit and swidth must be specified together");
> - return -EINVAL;
> - }
> -
> - if (ctx->dsunit && (ctx->dswidth % ctx->dsunit != 0)) {
> - xfs_warn(mp,
> - "stripe width (%d) must be a multiple of the stripe unit (%d)",
> - ctx->dswidth, ctx->dsunit);
> - return -EINVAL;
> + goto done;
> }
>
> + ret = xfs_validate_params(mp, ctx, false);
> done:
This label now directly returns, which means it's not that useful in its
current form. How about we move the validate call below the label
(and perhaps rename the label to validate or some such) and just return
directly from the other user of done?
Brian
> - if (ctx->dsunit && !(mp->m_flags & XFS_MOUNT_NOALIGN)) {
> - /*
> - * At this point the superblock has not been read
> - * in, therefore we do not know the block size.
> - * Before the mount call ends we will convert
> - * these to FSBs.
> - */
> - mp->m_dalign = ctx->dsunit;
> - mp->m_swidth = ctx->dswidth;
> - }
> -
> - if (mp->m_logbufs != -1 &&
> - mp->m_logbufs != 0 &&
> - (mp->m_logbufs < XLOG_MIN_ICLOGS ||
> - mp->m_logbufs > XLOG_MAX_ICLOGS)) {
> - xfs_warn(mp, "invalid logbufs value: %d [not %d-%d]",
> - mp->m_logbufs, XLOG_MIN_ICLOGS, XLOG_MAX_ICLOGS);
> - return -EINVAL;
> - }
> - if (mp->m_logbsize != -1 &&
> - mp->m_logbsize != 0 &&
> - (mp->m_logbsize < XLOG_MIN_RECORD_BSIZE ||
> - mp->m_logbsize > XLOG_MAX_RECORD_BSIZE ||
> - !is_power_of_2(mp->m_logbsize))) {
> - xfs_warn(mp,
> - "invalid logbufsize: %d [not 16k,32k,64k,128k or 256k]",
> - mp->m_logbsize);
> - return -EINVAL;
> - }
> -
> - if (ctx->iosizelog) {
> - if (ctx->iosizelog > XFS_MAX_IO_LOG ||
> - ctx->iosizelog < XFS_MIN_IO_LOG) {
> - xfs_warn(mp, "invalid log iosize: %d [not %d-%d]",
> - ctx->iosizelog, XFS_MIN_IO_LOG,
> - XFS_MAX_IO_LOG);
> - return -EINVAL;
> - }
> -
> - mp->m_flags |= XFS_MOUNT_DFLT_IOSIZE;
> - mp->m_readio_log = ctx->iosizelog;
> - mp->m_writeio_log = ctx->iosizelog;
> - }
> -
> - return 0;
> + return ret;
> }
>
> struct proc_xfs_info {
>
next prev parent reply other threads:[~2019-08-27 12:42 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-23 0:59 [PATCH v2 00/15] xfs: mount API patch series Ian Kent
2019-08-23 0:59 ` [PATCH v2 01/15] vfs: Create fs_context-aware mount_bdev() replacement Ian Kent
2019-08-23 0:59 ` [PATCH v2 02/15] xfs: mount-api - add fs parameter description Ian Kent
2019-08-27 12:39 ` Brian Foster
2019-08-30 10:31 ` Ian Kent
2019-08-30 11:56 ` Brian Foster
2019-09-17 3:13 ` Ian Kent
2019-09-17 12:10 ` Brian Foster
2019-09-18 3:43 ` Ian Kent
2019-09-18 3:49 ` Ian Kent
2019-08-23 0:59 ` [PATCH v2 03/15] xfs: mount-api - refactor suffix_kstrtoint() Ian Kent
2019-08-27 12:40 ` Brian Foster
2019-08-30 10:33 ` Ian Kent
2019-09-17 4:31 ` Ian Kent
2019-09-17 12:10 ` Brian Foster
2019-08-23 0:59 ` [PATCH v2 04/15] xfs: mount-api - refactor xfs_parseags() Ian Kent
2019-08-27 12:40 ` Brian Foster
2019-08-23 0:59 ` [PATCH v2 05/15] xfs: mount-api - make xfs_parse_param() take context .parse_param() args Ian Kent
2019-08-26 19:19 ` Eric Sandeen
2019-08-26 19:31 ` Eric Sandeen
2019-08-26 19:32 ` Eric Sandeen
2019-08-30 10:23 ` Ian Kent
2019-08-27 12:41 ` Brian Foster
2019-08-27 15:10 ` Darrick J. Wong
2019-08-27 15:15 ` Eric Sandeen
2019-08-28 0:55 ` Ian Kent
2019-08-30 10:51 ` Ian Kent
2019-08-23 0:59 ` [PATCH v2 06/15] xfs: mount-api - move xfs_parseargs() validation to a helper Ian Kent
2019-08-27 12:41 ` Brian Foster [this message]
2019-08-30 10:55 ` Ian Kent
2019-08-23 0:59 ` [PATCH v2 07/15] xfs: mount-api - refactor xfs_fs_fill_super() Ian Kent
2019-08-27 12:42 ` Brian Foster
2019-08-30 10:56 ` Ian Kent
2019-08-23 0:59 ` [PATCH v2 08/15] xfs: mount-api - add xfs_get_tree() Ian Kent
2019-08-28 13:27 ` Brian Foster
2019-08-30 11:01 ` Ian Kent
2019-08-23 1:00 ` [PATCH v2 09/15] xfs: mount-api - add xfs_remount_rw() helper Ian Kent
2019-08-28 13:27 ` Brian Foster
2019-08-23 1:00 ` [PATCH v2 10/15] xfs: mount-api - add xfs_remount_ro() helper Ian Kent
2019-08-28 13:27 ` Brian Foster
2019-08-23 1:00 ` [PATCH v2 11/15] xfs: mount api - add xfs_reconfigure() Ian Kent
2019-08-28 13:28 ` Brian Foster
2019-08-30 11:10 ` Ian Kent
2019-08-30 11:56 ` Brian Foster
2019-09-02 2:41 ` Ian Kent
2019-08-23 1:00 ` [PATCH v2 12/15] xfs: mount-api - add xfs_fc_free() Ian Kent
2019-08-28 13:28 ` Brian Foster
2019-08-30 11:19 ` Ian Kent
2019-08-30 11:20 ` Ian Kent
2019-08-23 1:00 ` [PATCH v2 13/15] xfs: mount-api - dont set sb in xfs_mount_alloc() Ian Kent
2019-08-28 13:28 ` Brian Foster
2019-08-23 1:00 ` [PATCH v2 14/15] xfs: mount-api - switch to new mount-api Ian Kent
2019-08-28 13:29 ` Brian Foster
2019-08-28 13:34 ` Eric Sandeen
2019-08-30 11:30 ` Ian Kent
2019-08-30 11:27 ` Ian Kent
2019-08-23 1:00 ` [PATCH v2 15/15] xfs: mount-api - remove legacy mount functions Ian Kent
2019-08-26 19:33 ` [PATCH v2 00/15] xfs: mount API patch series Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190827124158.GE10636@bfoster \
--to=bfoster@redhat.com \
--cc=dchinner@redhat.com \
--cc=dhowells@redhat.com \
--cc=linux-xfs@vger.kernel.org \
--cc=raven@themaw.net \
--cc=sandeen@sandeen.net \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).