On Fri, Jul 02, 2021 at 07:57:55PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > Extent size hints exist to nudge the behavior of the file data block > allocator towards trying to make aligned allocations. Therefore, it > doesn't make sense to allow a hint that isn't a multiple of the > fundamental allocation unit for a given file. > > This means that if the sysadmin is formatting with rtinherit set on the > root dir, validate_extsize_hint needs to check the hint value on a > simulated realtime file to make sure that it's correct. Unfortunately, > the gate check here was for a nonzero rt extent size, which is wrong > since we never format with rtextsize==0. This leads to absurd failures > such as: Reviewed-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> > > # mkfs.xfs -f /dev/sdf -r extsize=7b -d rtinherit=0,extszinherit=13 > illegal extent size hint 13, must be less than 649088 and a multiple of 7. > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > mkfs/xfs_mkfs.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index f84a42f9..9c14c04e 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -2384,10 +2384,11 @@ _("illegal extent size hint %lld, must be less than %u.\n"), > } > > /* > - * Now we do it again with a realtime file so that we know the hint and > - * flag that get passed on to realtime files will be correct. > + * If the value is to be passed on to realtime files, revalidate with > + * a realtime file so that we know the hint and flag that get passed on > + * to realtime files will be correct. > */ > - if (mp->m_sb.sb_rextsize == 0) > + if (!(cli->fsx.fsx_xflags & FS_XFLAG_RTINHERIT)) > return; > > flags = XFS_DIFLAG_REALTIME; > -- Carlos