On Wed, Jun 19, 2019 at 11:28:57AM -0700, Allison Collins wrote: > While investigating another mkfs bug, noticed that cfg->lsunit is sometimes > left uninitialized when it should not. This is because calc_stripe_factors > in some cases needs cfg->loginternal to be set first. This is done in > validate_logdev. So move calc_stripe_factors below validate_logdev while > parsing configs. <grumble> The cfg in main() is not (in a manner easily detectable by toolz) uninitialized, it's zero-initialized by default and we haven't set cfg->loginternal correctly yet... ...what we really need here is enum { FALSE, TRUE, FILENOTFOUND } to detect that we're using incorrect garbage data. :P (Really, someone should take a closer look at whether or not there are other places where we do things like this...) Anyway, this does solve a problem, so Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > > Signed-off-by: Allison Collins <allison.henderson@xxxxxxxxxx> > --- > mkfs/xfs_mkfs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index ddb25ec..f4a5e4b 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -3995,7 +3995,6 @@ main( > cfg.rtblocks = calc_dev_size(cli.rtsize, &cfg, &ropts, R_SIZE, "rt"); > > validate_rtextsize(&cfg, &cli, &ft); > - calc_stripe_factors(&cfg, &cli, &ft); > > /* > * Open and validate the device configurations > @@ -4005,6 +4004,7 @@ main( > validate_datadev(&cfg, &cli); > validate_logdev(&cfg, &cli, &logfile); > validate_rtdev(&cfg, &cli, &rtfile); > + calc_stripe_factors(&cfg, &cli, &ft); > > /* > * At this point when know exactly what size all the devices are, > -- > 2.7.4 >