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 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).