From: Dave Chinner <david@fromorbit.com>
To: linux-xfs@vger.kernel.org
Subject: [PATCH 40/42] mkfs: cleanup redundant temporary code
Date: Wed, 30 Aug 2017 09:50:50 +1000 [thread overview]
Message-ID: <20170829235052.21050-41-david@fromorbit.com> (raw)
In-Reply-To: <20170829235052.21050-1-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
Now the factoring is complete, we can remove the remaining temporary
code that was used to isolate the factoring from the rest of the
code.
Signed-Off-By: Dave Chinner <dchinner@redhat.com>
---
mkfs/xfs_mkfs.c | 185 +++++++++++---------------------------------------------
1 file changed, 34 insertions(+), 151 deletions(-)
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index cbba679ba06d..9d087bc068a7 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -33,8 +33,8 @@ static void unknown(char opt, char *s);
static int ispow2(unsigned int i);
/*
- * The configured block and sector sizes are defined as global variables so
- * that they don't need to be passed to functions that require them.
+ * XXX: The configured block and sector sizes are defined as global variables so
+ * that they don't need to be passed to getnum/cvtnum().
*/
unsigned int blocksize;
unsigned int sectorsize;
@@ -3638,52 +3638,34 @@ main(
int argc,
char **argv)
{
- uint64_t agcount;
xfs_agnumber_t agno;
- uint64_t agsize;
- int blocklog;
xfs_buf_t *buf;
int c;
- xfs_rfsblock_t dblocks;
- char *dfile;
- int dirblocklog;
- int dirblocksize;
- int dsunit;
- int dswidth;
- int force_overwrite;
- struct fsxattr fsx;
- int imaxpct;
- int inodelog;
- int inopblock;
- int isize;
- char *label = NULL;
- xfs_agnumber_t logagno;
- xfs_rfsblock_t logblocks;
- char *logfile;
- int loginternal;
- xfs_fsblock_t logstart;
- int lsectorlog;
- int lsectorsize;
- int lsunit;
- xfs_extlen_t nbmblocks;
+ char *dfile = NULL;
+ char *logfile = NULL;
+ char *rtfile = NULL;
int dry_run = 0;
int discard = 1;
- char *protofile;
- char *protostring;
+ int force_overwrite = 0;
int quiet = 0;
- xfs_rfsblock_t rtblocks;
- xfs_extlen_t rtextblocks;
- xfs_rtblock_t rtextents;
- char *rtfile;
- int sectorlog;
- uuid_t uuid;
- int worst_freelist;
- libxfs_init_t xi;
+ char *protofile = NULL;
+ char *protostring = NULL;
+ int worst_freelist = 0;
+
+ struct libxfs_xinit xi = {
+ .isdirect = LIBXFS_DIRECT,
+ .isreadonly = LIBXFS_EXCLUSIVELY,
+ };
struct xfs_mount mbuf = {};
struct xfs_mount *mp = &mbuf;
struct xfs_sb *sbp = &mp->m_sb;
- struct fs_topology ft;
- struct sb_feat_args sb_feat;
+ struct fs_topology ft = {};
+ struct cli_params cli = {
+ .xi = &xi,
+ .loginternal = 1,
+ };
+ struct mkfs_params cfg = {};
+
/* build time defaults */
struct mkfs_default_params dft = {
.source = "package build definitions",
@@ -3708,10 +3690,6 @@ main(
.nortalign = false,
},
};
- struct cli_params cli = {
- .xi = &xi,
- };
- struct mkfs_params cfg = {};
platform_uuid_generate(&cli.uuid);
progname = basename(argv[0]);
@@ -3735,28 +3713,6 @@ main(
memcpy(&cli.sb_feat, &dft.sb_feat, sizeof(cli.sb_feat));
memcpy(&cli.fsx, &dft.fsx, sizeof(cli.fsx));
- /*
- * Initialise cli parameters that can be set to zero to an appropriate
- * value so we can tell if they have been set or or changed from the
- * default value.
- */
- cli.loginternal = 1; /* internal by default */
-
- agsize = dblocks = 0;
- loginternal = 1;
- logagno = logblocks = rtblocks = rtextblocks = 0;
- imaxpct = inodelog = inopblock = isize = 0;
- dfile = logfile = rtfile = NULL;
- protofile = NULL;
- dsunit = dswidth = lsunit = 0;
- force_overwrite = 0;
- worst_freelist = 0;
- memset(&fsx, 0, sizeof(fsx));
-
- memset(&xi, 0, sizeof(xi));
- xi.isdirect = LIBXFS_DIRECT;
- xi.isreadonly = LIBXFS_EXCLUSIVELY;
-
while ((c = getopt(argc, argv, "b:d:i:l:L:m:n:KNp:qr:s:CfV")) != EOF) {
switch (c) {
case 'C':
@@ -3764,33 +3720,19 @@ main(
force_overwrite = 1;
break;
case 'b':
+ case 'd':
case 'i':
case 'l':
+ case 'm':
case 'n':
case 'r':
case 's':
parse_subopts(c, optarg, &cli);
break;
- case 'd':
- parse_subopts(c, optarg, &cli);
-
- /* temp don't break code */
- fsx.fsx_xflags |= cli.fsx.fsx_xflags;
- fsx.fsx_projid = cli.fsx.fsx_projid;
- fsx.fsx_extsize = cli.fsx.fsx_extsize;
- /* end temp don't break code */
- break;
case 'L':
if (strlen(optarg) > sizeof(sbp->sb_fname))
illegal(optarg, "L");
- label = optarg;
- break;
- case 'm':
- parse_subopts(c, optarg, &cli);
-
- /* temp don't break code */
- platform_uuid_copy(&uuid, &cli.uuid);
- /* end temp don't break code */
+ cfg.label = optarg;
break;
case 'N':
dry_run = 1;
@@ -3821,9 +3763,7 @@ main(
} else
dfile = xi.dname;
- /* temp don't break code */
- sb_feat = cli.sb_feat;
- /* end temp don't break code */
+ protostring = setup_proto(protofile);
/*
* Extract as much of the valid config as we can from the CLI input
@@ -3832,6 +3772,14 @@ main(
validate_blocksize(&cfg, &cli, &dft);
validate_sectorsize(&cfg, &cli, &dft, &ft, dfile, dry_run,
force_overwrite);
+
+ /*
+ * XXX: we still need to set block size and sector size global variables
+ * so that getnum/cvtnum works correctly
+ */
+ blocksize = cfg.blocksize;
+ sectorsize = cfg.sectorsize;
+
validate_log_sectorsize(&cfg, &cli, &dft);
validate_sb_features(&cfg, &cli);
@@ -3887,71 +3835,6 @@ main(
*/
calculate_log_size(&cfg, &cli, mp);
- protostring = setup_proto(protofile);
-
- /* temp don't break code */
- sectorsize = cfg.sectorsize;
- sectorlog = cfg.sectorlog;
- blocksize = cfg.blocksize;
- blocklog = cfg.blocklog;
- lsectorsize = cfg.lsectorsize;
- lsectorlog = cfg.lsectorlog;
- sb_feat = cfg.sb_feat;
- platform_uuid_copy(&uuid, &cfg.uuid);
- dirblocksize = cfg.dirblocksize;
- dirblocklog = cfg.dirblocklog;
- isize = cfg.inodesize;
- inodelog = cfg.inodelog;
- inopblock = cfg.inopblock;
- dblocks = cfg.dblocks;
- logblocks = cfg.logblocks;
- rtblocks = cfg.rtblocks;
- rtextblocks = cfg.rtextblocks;
- nbmblocks = cfg.rtbmblocks;
- rtextents = cfg.rtextents;
- dsunit = cfg.dsunit;
- dswidth = cfg.dswidth;
- lsunit = cfg.lsunit;
- agsize = cfg.agsize;
- agcount = cfg.agcount;
- imaxpct = cfg.imaxpct;
- logagno = cfg.logagno;
- logstart = cfg.logstart;
- /* end temp don't break code */
-
- /* Temp support code to set up mkfs cfg parameters */
- cfg.blocksize = blocksize;
- cfg.blocklog = blocklog;
- cfg.sectorsize = sectorsize;
- cfg.sectorlog = sectorlog;
- cfg.lsectorsize = lsectorsize;
- cfg.lsectorlog = lsectorlog;
- cfg.dirblocksize = dirblocksize;
- cfg.dirblocklog = dirblocklog;
- cfg.inodesize = isize;
- cfg.inodelog = inodelog;
- cfg.inopblock = inopblock;
-
- cfg.dblocks = dblocks;
- cfg.logblocks = logblocks;
- cfg.rtblocks = rtblocks;
- cfg.rtextblocks = rtextblocks;
- cfg.rtextents = rtextents;
- cfg.rtbmblocks = nbmblocks;
- cfg.dsunit = dsunit;
- cfg.dswidth = dswidth;
- cfg.lsunit = lsunit;
- cfg.agsize = agsize;
- cfg.agcount = agcount;
- cfg.imaxpct = imaxpct;
- cfg.loginternal = loginternal;
- cfg.logstart = logstart;
- cfg.logagno = logagno;
- cfg.label = label;
- platform_uuid_copy(&cfg.uuid, &uuid);
- memcpy(&cfg.sb_feat, &sb_feat, sizeof(sb_feat));
- /* end temp support code */
-
if (!quiet || dry_run) {
print_mkfs_cfg(&cfg, dfile, logfile, rtfile);
if (dry_run)
@@ -3996,7 +3879,7 @@ main(
/*
* Allocate the root inode and anything else in the proto file.
*/
- parse_proto(mp, &fsx, &protostring);
+ parse_proto(mp, &cli.fsx, &protostring);
/*
* Protect ourselves against possible stupidity
--
2.13.3
next prev parent reply other threads:[~2017-08-29 23:51 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-29 23:50 [PATCH 00/42] mkfs: factor the crap out of the code Dave Chinner
2017-08-29 23:50 ` [PATCH 01/42] mkfs: can't specify sector size of internal log Dave Chinner
2017-08-29 23:50 ` [PATCH 02/42] mkfs: make subopt table const Dave Chinner
2017-08-29 23:50 ` [PATCH 03/42] mkfs: introduce a structure to hold CLI options Dave Chinner
2017-08-29 23:50 ` [PATCH 04/42] mkfs: add generic subopt parsing table Dave Chinner
2017-08-29 23:50 ` [PATCH 05/42] mkfs: factor block subopts parser Dave Chinner
2017-08-29 23:50 ` [PATCH 06/42] mkfs: factor data " Dave Chinner
2017-08-29 23:50 ` [PATCH 07/42] mkfs: factor inode " Dave Chinner
2017-08-29 23:50 ` [PATCH 08/42] mkfs: factor log " Dave Chinner
2017-08-29 23:50 ` [PATCH 09/42] mkfs: factor meta " Dave Chinner
2017-08-29 23:50 ` [PATCH 10/42] mkfs: factor naming " Dave Chinner
2017-08-29 23:50 ` [PATCH 11/42] mkfs: factor rt " Dave Chinner
2017-08-29 23:50 ` [PATCH 12/42] mkfs: factor sector " Dave Chinner
2017-08-29 23:50 ` [PATCH 13/42] mkfs: Introduce mkfs configuration structure Dave Chinner
2017-08-29 23:50 ` [PATCH 14/42] mkfs: factor printing of mkfs config Dave Chinner
2017-08-29 23:50 ` [PATCH 15/42] mkfs: factor in memory superblock setup Dave Chinner
2017-08-29 23:50 ` [PATCH 16/42] mkfs: factor out device preparation Dave Chinner
2017-08-29 23:50 ` [PATCH 17/42] mkfs: factor writing AG headers Dave Chinner
2017-08-29 23:50 ` [PATCH 18/42] mkfs: factor secondary superblock updates Dave Chinner
2017-08-29 23:50 ` [PATCH 19/42] mkfs: introduce default configuration structure Dave Chinner
2017-08-29 23:50 ` [PATCH 20/42] mkfs: rename top level CLI parameters Dave Chinner
2017-08-29 23:50 ` [PATCH 21/42] mkfs: factor sectorsize validation Dave Chinner
2017-08-29 23:50 ` [PATCH 22/42] mkfs: factor blocksize validation Dave Chinner
2017-08-29 23:50 ` [PATCH 23/42] mkfs: factor log sector size validation Dave Chinner
2017-08-29 23:50 ` [PATCH 24/42] mkfs: factor superblock feature validation Dave Chinner
2017-08-29 23:50 ` [PATCH 25/42] mkfs: factor directory blocksize validation Dave Chinner
2017-08-29 23:50 ` [PATCH 26/42] mkfs: factor inode size validation Dave Chinner
2017-08-29 23:50 ` [PATCH 27/42] mkfs: factor out device size calculations Dave Chinner
2017-08-29 23:50 ` [PATCH 28/42] mkfs: fix hidden parameter in DTOBT() Dave Chinner
2017-08-29 23:50 ` [PATCH 29/42] mkfs: factor rtdev extent size validation Dave Chinner
2017-08-29 23:50 ` [PATCH 30/42] mkfs: rework stripe calculations Dave Chinner
2017-08-29 23:50 ` [PATCH 31/42] mkfs: factor device opening Dave Chinner
2017-08-29 23:50 ` [PATCH 32/42] mkfs: factor data device validation Dave Chinner
2017-08-29 23:50 ` [PATCH 33/42] mkfs: factor log " Dave Chinner
2017-08-29 23:50 ` [PATCH 34/42] mkfs: factor rt " Dave Chinner
2017-08-29 23:50 ` [PATCH 35/42] mkfs: factor AG geometry calculations Dave Chinner
2017-08-29 23:50 ` [PATCH 36/42] mkfs: factor AG alignment Dave Chinner
2017-08-30 23:44 ` Dave Chinner
2017-08-29 23:50 ` [PATCH 37/42] mkfs: rework imaxpct calculation Dave Chinner
2017-08-29 23:50 ` [PATCH 38/42] mkfs: factor initial mount setup Dave Chinner
2017-08-29 23:50 ` [PATCH 39/42] mkfs: factor log size calculations Dave Chinner
2017-09-05 5:23 ` Dave Chinner
2017-08-29 23:50 ` Dave Chinner [this message]
2017-08-29 23:50 ` [PATCH 41/42] mkfs: move error functions Dave Chinner
2017-08-29 23:50 ` [PATCH 42/42] mkfs: tidy up definitions Dave Chinner
2017-08-30 1:23 ` [PATCH 00/42] mkfs: factor the crap out of the code Darrick J. Wong
2017-08-30 1:57 ` Dave Chinner
2017-08-30 4:16 ` Luis R. Rodriguez
2017-08-30 5:44 ` Dave Chinner
2017-08-30 22:10 ` Luis R. Rodriguez
2017-08-30 23:22 ` Dave Chinner
2017-08-31 0:05 ` Luis R. Rodriguez
2017-08-31 16:23 ` Jan Tulak
2017-08-30 7:44 ` Martin Steigerwald
2017-09-04 12:31 ` Chandan Rajendra
2017-09-04 15:34 ` Eric Sandeen
2017-09-04 22:40 ` Dave Chinner
2017-09-07 10:31 ` Chandan Rajendra
2017-09-07 23:38 ` Dave Chinner
2017-09-09 10:24 ` Chandan Rajendra
2017-09-15 9:42 ` Jan Tulak
2017-09-16 11:29 ` Dave Chinner
2017-10-24 3:00 ` Eric Sandeen
2017-10-25 0:59 ` Dave Chinner
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=20170829235052.21050-41-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=linux-xfs@vger.kernel.org \
/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.