diff options
author | Dave Chinner <dchinner@redhat.com> | 2017-12-06 17:14:27 -0600 |
---|---|---|
committer | Eric Sandeen <sandeen@redhat.com> | 2017-12-06 17:14:27 -0600 |
commit | d7240c965389e1e864ea0213af94259e54ad2b23 (patch) | |
tree | c10b622162633cdff0868af149ec0e8b9d245a53 | |
parent | 051b4e37f5e2f91eaa2aa7a449035f147848e3bb (diff) | |
download | xfsprogs-dev-d7240c965389e1e864ea0213af94259e54ad2b23.tar.gz |
mkfs: rework imaxpct calculation
Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
-rw-r--r-- | mkfs/xfs_mkfs.c | 65 |
1 files changed, 29 insertions, 36 deletions
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 11f08869bd..0e3169f309 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -1066,28 +1066,6 @@ validate_log_size(uint64_t logblocks, int blocklog, int min_logblocks) } } -static int -calc_default_imaxpct( - int blocklog, - uint64_t dblocks) -{ - /* - * This returns the % of the disk space that is used for - * inodes, it changes relatively to the FS size: - * - over 50 TB, use 1%, - * - 1TB - 50 TB, use 5%, - * - under 1 TB, use XFS_DFL_IMAXIMUM_PCT (25%). - */ - - if (dblocks < TERABYTES(1, blocklog)) { - return XFS_DFL_IMAXIMUM_PCT; - } else if (dblocks < TERABYTES(50, blocklog)) { - return 5; - } - - return 1; -} - static void validate_ag_geometry( int blocklog, @@ -2891,6 +2869,31 @@ validate: } static void +calculate_imaxpct( + struct mkfs_params *cfg, + struct cli_params *cli) +{ + cfg->imaxpct = cli->imaxpct; + if (cfg->imaxpct) + return; + + /* + * This returns the % of the disk space that is used for + * inodes, it changes relatively to the FS size: + * - over 50 TB, use 1%, + * - 1TB - 50 TB, use 5%, + * - under 1 TB, use XFS_DFL_IMAXIMUM_PCT (25%). + */ + + if (cfg->dblocks < TERABYTES(1, cfg->blocklog)) + cfg->imaxpct = XFS_DFL_IMAXIMUM_PCT; + else if (cfg->dblocks < TERABYTES(50, cfg->blocklog)) + cfg->imaxpct = 5; + else + cfg->imaxpct = 1; +} + +static void print_mkfs_cfg( struct mkfs_params *cfg, char *dfile, @@ -3536,7 +3539,6 @@ main( int force_overwrite; struct fsxattr fsx; int imaxpct; - int imflag; int inodelog; int inopblock; int isize; @@ -3632,7 +3634,6 @@ main( cli.loginternal = 1; /* internal by default */ agsize = dblocks = 0; - imflag = 0; laflag = lsflag = 0; loginternal = 1; logagno = logblocks = rtblocks = rtextblocks = 0; @@ -3655,6 +3656,7 @@ main( force_overwrite = 1; break; case 'b': + case 'i': case 'n': case 'r': case 's': @@ -3669,14 +3671,6 @@ main( fsx.fsx_extsize = cli.fsx.fsx_extsize; /* end temp don't break code */ break; - case 'i': - parse_subopts(c, optarg, &cli); - - /* temp don't break code */ - imaxpct = cli.imaxpct; - imflag = cli_opt_set(&iopts, I_MAXPCT); - /* end temp don't break code */ - break; case 'l': parse_subopts(c, optarg, &cli); @@ -3777,6 +3771,8 @@ main( calculate_initial_ag_geometry(&cfg, &cli); align_ag_geometry(&cfg); + calculate_imaxpct(&cfg, &cli); + /* temp don't break code */ sectorsize = cfg.sectorsize; sectorlog = cfg.sectorlog; @@ -3802,12 +3798,9 @@ main( lsunit = cfg.lsunit; agsize = cfg.agsize; agcount = cfg.agcount; + imaxpct = cfg.imaxpct; /* end temp don't break code */ - - if (!imflag) - imaxpct = calc_default_imaxpct(blocklog, dblocks); - min_logblocks = max_trans_res(agsize, sb_feat.crcs_enabled, sb_feat.dir_version, sectorlog, blocklog, inodelog, dirblocklog, |