All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: sandeen@sandeen.net, linux-xfs@vger.kernel.org
Cc: jack@suse.com, jeffm@suse.com, okurz@suse.com,
	lpechacek@suse.com, "Luis R. Rodriguez" <mcgrof@kernel.org>
Subject: [PATCH 7/9] mkfs.xfs: move ropts to struct mkfs_xfs_opts
Date: Fri,  3 Mar 2017 15:13:14 -0800	[thread overview]
Message-ID: <20170303231316.12716-8-mcgrof@kernel.org> (raw)
In-Reply-To: <20170303231316.12716-1-mcgrof@kernel.org>

This moves all main() ropts to struct mkfs_xfs_opts in
order to help with clutter and later enable re-parsing
options for other purposes.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
 mkfs/xfs_mkfs.c | 98 +++++++++++++++++++++++++++------------------------------
 1 file changed, 47 insertions(+), 51 deletions(-)

diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index b2f4495d858d..39ab08148687 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -779,6 +779,10 @@ struct mkfs_xfs_opts {
 	int			nlflag;
 	int			nvflag; /* unused */
 	int			nsflag;
+
+	char			*rtextsize;
+	char			*rtsize;
+	int			norsflag;
 };
 
 #define TERABYTES(count, blog)	((__uint64_t)(count) << (40 - (blog)))
@@ -1728,6 +1732,34 @@ parse_subopts(
 			}
 		}
 		break;
+	case 'r':
+		while (*p != '\0') {
+			switch (getsubopt(&p, (char **)ropts.subopts, &value)) {
+			case R_EXTSIZE:
+				params->rtextsize =
+					getstr(value, &ropts, R_EXTSIZE);
+				break;
+			case R_FILE:
+				params->xi.risfile =
+					getnum(value, &ropts, R_FILE);
+				break;
+			case R_NAME:
+			case R_DEV:
+				params->xi.rtname =
+					getstr(value, &ropts, R_NAME);
+				break;
+			case R_SIZE:
+				params->rtsize = getstr(value, &ropts, R_SIZE);
+				break;
+			case R_NOALIGN:
+				params->norsflag =
+					getnum(value, &ropts, R_NOALIGN);
+				break;
+			default:
+				unknown('r', value);
+			}
+		}
+		break;
 	default:
 		usage();
 	}
@@ -1776,7 +1808,6 @@ main(
 	xfs_mount_t		*mp;
 	xfs_mount_t		mbuf;
 	xfs_extlen_t		nbmblocks;
-	int			norsflag;
 	xfs_alloc_rec_t		*nrec;
 	int			Nflag;
 	int			discard = 1;
@@ -1787,9 +1818,7 @@ main(
 	xfs_rfsblock_t		rtblocks;
 	xfs_extlen_t		rtextblocks;
 	xfs_rtblock_t		rtextents;
-	char			*rtextsize;
 	char			*rtfile;
-	char			*rtsize;
 	xfs_sb_t		*sbp;
 	__uint64_t		sector_mask;
 	__uint64_t		tmp_agsize;
@@ -1815,10 +1844,8 @@ main(
 	logblocks = rtblocks = rtextblocks = 0;
 	Nflag = 0;
 	qflag = 0;
-	dfile = rtfile = NULL;
-	rtsize = rtextsize = protofile = NULL;
+	dfile = rtfile = protofile = NULL;
 	lalign = 0;
-	norsflag = 0;
 	force_overwrite = 0;
 	worst_freelist = 0;
 
@@ -1837,6 +1864,7 @@ main(
 		case 'l':
 		case 'm':
 		case 'n':
+		case 'r':
 			p = optarg;
 			parse_subopts(c, p, &params);
 			break;
@@ -1859,38 +1887,6 @@ main(
 		case 'q':
 			qflag = 1;
 			break;
-		case 'r':
-			p = optarg;
-			while (*p != '\0') {
-				char	**subopts = (char **)ropts.subopts;
-				char	*value;
-
-				switch (getsubopt(&p, subopts, &value)) {
-				case R_EXTSIZE:
-					rtextsize = getstr(value, &ropts,
-							   R_EXTSIZE);
-					break;
-				case R_FILE:
-					params.xi.risfile = getnum(value, &ropts,
-							    R_FILE);
-					break;
-				case R_NAME:
-				case R_DEV:
-					params.xi.rtname = getstr(value, &ropts,
-							   R_NAME);
-					break;
-				case R_SIZE:
-					rtsize = getstr(value, &ropts, R_SIZE);
-					break;
-				case R_NOALIGN:
-					norsflag = getnum(value, &ropts,
-								R_NOALIGN);
-					break;
-				default:
-					unknown('r', value);
-				}
-			}
-			break;
 		case 's':
 			p = optarg;
 			while (*p != '\0') {
@@ -1997,7 +1993,7 @@ _("Minimum block size for CRC enabled filesystems is %d bytes.\n"),
 	if (params.xi.rtname)
 		check_device_type(params.xi.rtname,
 				  &params.xi.risfile,
-				  !rtsize,
+				  !params.rtsize,
 				  !params.xi.rtname,
 				  Nflag ? NULL : &params.xi.rcreat,
 				  force_overwrite, "r");
@@ -2230,10 +2226,10 @@ _("rmapbt not supported with realtime devices\n"));
 				(long long)logbytes, blocksize,
 				(long long)(logblocks << params.blocklog));
 	}
-	if (rtsize) {
+	if (params.rtsize) {
 		__uint64_t rtbytes;
 
-		rtbytes = getnum(rtsize, &ropts, R_SIZE);
+		rtbytes = getnum(params.rtsize, &ropts, R_SIZE);
 		if (rtbytes % XFS_MIN_BLOCKSIZE) {
 			fprintf(stderr,
 			_("illegal rt length %lld, not a multiple of %d\n"),
@@ -2250,10 +2246,10 @@ _("rmapbt not supported with realtime devices\n"));
 	/*
 	 * If specified, check rt extent size against its constraints.
 	 */
-	if (rtextsize) {
+	if (params.rtextsize) {
 		__uint64_t rtextbytes;
 
-		rtextbytes = getnum(rtextsize, &ropts, R_EXTSIZE);
+		rtextbytes = getnum(params.rtextsize, &ropts, R_EXTSIZE);
 		if (rtextbytes % blocksize) {
 			fprintf(stderr,
 		_("illegal rt extent size %lld, not a multiple of %d\n"),
@@ -2270,14 +2266,14 @@ _("rmapbt not supported with realtime devices\n"));
 		__uint64_t	rswidth;
 		__uint64_t	rtextbytes;
 
-		if (!norsflag && !params.xi.risfile &&
-		    !(!rtsize && params.xi.disfile))
+		if (!params.norsflag && !params.xi.risfile &&
+		    !(!params.rtsize && params.xi.disfile))
 			rswidth = ft.rtswidth;
 		else
 			rswidth = 0;
 
 		/* check that rswidth is a multiple of fs blocksize */
-		if (!norsflag && rswidth && !(BBTOB(rswidth) % blocksize)) {
+		if (!params.norsflag && rswidth && !(BBTOB(rswidth) % blocksize)) {
 			rswidth = DTOBT(rswidth);
 			rtextbytes = rswidth << params.blocklog;
 			if (XFS_MIN_RTEXTSIZE <= rtextbytes &&
@@ -2427,22 +2423,22 @@ reported by the device (%u).\n"),
 reported by the device (%u).\n"),
 			params.lsectorsize, params.xi.lbsize);
 	}
-	if (rtsize && params.xi.rtsize > 0 && params.xi.rtbsize > sectorsize) {
+	if (params.rtsize && params.xi.rtsize > 0 && params.xi.rtbsize > sectorsize) {
 		fprintf(stderr, _(
 "Warning: the realtime subvolume sector size %u is less than the sector size\n\
 reported by the device (%u).\n"),
 			sectorsize, params.xi.rtbsize);
 	}
 
-	if (rtsize && params.xi.rtsize > 0 && rtblocks > DTOBT(params.xi.rtsize)) {
+	if (params.rtsize && params.xi.rtsize > 0 && rtblocks > DTOBT(params.xi.rtsize)) {
 		fprintf(stderr,
 			_("size %s specified for rt subvolume is too large, "
 			"maximum is %lld blocks\n"),
-			rtsize, (long long)DTOBT(params.xi.rtsize));
+			params.rtsize, (long long)DTOBT(params.xi.rtsize));
 		usage();
-	} else if (!rtsize && params.xi.rtsize > 0)
+	} else if (!params.rtsize && params.xi.rtsize > 0)
 		rtblocks = DTOBT(params.xi.rtsize);
-	else if (rtsize && !params.xi.rtdev) {
+	else if (params.rtsize && !params.xi.rtdev) {
 		fprintf(stderr,
 			_("size specified for non-existent rt subvolume\n"));
 		usage();
-- 
2.11.0


  parent reply	other threads:[~2017-03-03 23:14 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-03 23:13 [PATCH 0/9] mkfs.xfs: add mkfs.xfs.conf support Luis R. Rodriguez
2017-03-03 23:13 ` [PATCH 1/9] mkfs.xfs: add helper to parse command line options Luis R. Rodriguez
2017-03-03 23:13 ` [PATCH 2/9] mkfs.xfs: move dopts to struct mkfs_xfs_opts Luis R. Rodriguez
2017-03-03 23:13 ` [PATCH 3/9] mkfs.xfs: move iopts to " Luis R. Rodriguez
2017-03-03 23:13 ` [PATCH 4/9] mkfs.xfs: move lopts " Luis R. Rodriguez
2017-03-03 23:13 ` [PATCH 5/9] mkfs.xfs: move mopts " Luis R. Rodriguez
2017-03-03 23:13 ` [PATCH 6/9] mkfs.xfs: move nopts " Luis R. Rodriguez
2017-03-03 23:13 ` Luis R. Rodriguez [this message]
2017-03-03 23:13 ` [PATCH 8/9] mkfs.xfs: use parse_subopts() to parse sopts Luis R. Rodriguez
2017-03-03 23:13 ` [PATCH 9/9] mkfs.xfs: add mkfs.xfs.conf parse support Luis R. Rodriguez
2017-03-03 23:55   ` Dave Chinner
2017-03-09  5:38   ` Eric Sandeen
2017-03-03 23:24 ` [PATCH 0/9] mkfs.xfs: add mkfs.xfs.conf support Luis R. Rodriguez
2017-03-04  3:49 ` Eric Sandeen
2017-03-04  4:56   ` Dave Chinner
2017-03-06  0:08     ` Eric Sandeen
2017-03-07 20:07       ` Jeff Mahoney
2017-03-07 20:09         ` Eric Sandeen
2017-03-06  8:50   ` Jan Kara
2017-03-09  0:16 ` Eric Sandeen
2017-03-09  0:51   ` Luis R. Rodriguez
2017-03-09  4:41     ` Eric Sandeen
2017-03-09 10:12       ` Jan Tulak
2017-03-09 14:31         ` Eric Sandeen
2017-03-09 15:21           ` Jan Tulak
2017-03-09 17:57       ` Luis R. Rodriguez
2017-03-09 22:34         ` Dave Chinner
2017-04-24  5:00           ` Luis R. Rodriguez
2017-04-24  7:26             ` Jan Tulak
2017-04-24  8:25               ` Luis R. Rodriguez
2017-05-11 22:46                 ` Luis R. Rodriguez
2017-05-11 22:57                   ` Eric Sandeen
2017-05-11 23:08                     ` Luis R. Rodriguez
2017-05-12  0:48                       ` Darrick J. Wong
2017-05-12 16:05                       ` Eric Sandeen
2017-05-12 17:03                         ` Luis R. Rodriguez
2017-05-12 17:05                         ` Jeff Mahoney
2017-05-12 17:30                           ` Luis R. Rodriguez
2017-05-11 23:00                   ` Darrick J. Wong
2017-05-11 23:19                     ` Luis R. Rodriguez

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=20170303231316.12716-8-mcgrof@kernel.org \
    --to=mcgrof@kernel.org \
    --cc=jack@suse.com \
    --cc=jeffm@suse.com \
    --cc=linux-xfs@vger.kernel.org \
    --cc=lpechacek@suse.com \
    --cc=okurz@suse.com \
    --cc=sandeen@sandeen.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.