On Tue, Oct 08, 2024 at 10:52:04AM +0000, Hans Holmberg wrote: > From: Hans Holmberg <Hans.Holmberg@xxxxxxx> > > These test cases specify small -d sizes which combined with a rt dev of > unrestricted size and the rtrmap feature can cause mkfs to fail with > error: > > mkfs.xfs: cannot handle expansion of realtime rmap btree; need <x> free > blocks, have <y> > > This is due to that the -d size is not big enough to support the > metadata space allocation required for the rt groups. > > Switch to use _scratch_mkfs_sized that sets up the -r size parameter > to avoid this. If -r size=x and -d size=x we will not risk running > out of space on the ddev as the metadata size is just a fraction of > the rt data size. > > Signed-off-by: Hans Holmberg <hans.holmberg@xxxxxxx> > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > tests/xfs/157 | 12 ++++++++---- > tests/xfs/547 | 4 +++- > tests/xfs/548 | 2 +- > 3 files changed, 12 insertions(+), 6 deletions(-) > > diff --git a/tests/xfs/157 b/tests/xfs/157 > index 79d45ac2bb34..9b5badbaeb3c 100755 > --- a/tests/xfs/157 > +++ b/tests/xfs/157 > @@ -34,18 +34,21 @@ _require_test > _require_scratch_nocheck > _require_command "$XFS_ADMIN_PROG" "xfs_admin" > > + > # Create some fake sparse files for testing external devices and whatnot > +fs_size=$((500 * 1024 * 1024)) > + > fake_datafile=$TEST_DIR/$seq.scratch.data > rm -f $fake_datafile > -truncate -s 500m $fake_datafile > +truncate -s $fs_size $fake_datafile > > fake_logfile=$TEST_DIR/$seq.scratch.log > rm -f $fake_logfile > -truncate -s 500m $fake_logfile > +truncate -s $fs_size $fake_logfile > > fake_rtfile=$TEST_DIR/$seq.scratch.rt > rm -f $fake_rtfile > -truncate -s 500m $fake_rtfile > +truncate -s $fs_size $fake_rtfile > > # Save the original variables > orig_ddev=$SCRATCH_DEV > @@ -63,7 +66,8 @@ scenario() { > } > > check_label() { > - _scratch_mkfs -L oldlabel >> $seqres.full > + MKFS_OPTIONS="-L oldlabel $MKFS_OPTIONS" _scratch_mkfs_sized $fs_size \ > + >> $seqres.full I was surprised that this was necessary until I remembered that this test checks various *combinations* of block devices and 500M files. The block device can be quite large, so that's why you want _scratch_mkfs_sized to force the size of both sections to 500M. Heh, oops. My bad, I should have caught that. :( > _scratch_xfs_db -c label > _scratch_xfs_admin -L newlabel "$@" >> $seqres.full > _scratch_xfs_db -c label > diff --git a/tests/xfs/547 b/tests/xfs/547 > index eada4aadc27f..ffac546be4cd 100755 > --- a/tests/xfs/547 > +++ b/tests/xfs/547 > @@ -24,10 +24,12 @@ _require_xfs_db_command path > _require_test_program "punch-alternating" > _require_xfs_io_error_injection "bmap_alloc_minlen_extent" > > +fs_size=$((512 * 1024 * 1024)) > + > for nrext64 in 0 1; do > echo "* Verify extent counter fields with nrext64=${nrext64} option" > > - _scratch_mkfs -i nrext64=${nrext64} -d size=$((512 * 1024 * 1024)) \ > + MKFS_OPTIONS="-i nrext64=${nrext64} $MKFS_OPTIONS" _scratch_mkfs_sized $fs_size \ > >> $seqres.full > _scratch_mount >> $seqres.full > > diff --git a/tests/xfs/548 b/tests/xfs/548 > index f0b58563e64d..af72885a9c6e 100755 > --- a/tests/xfs/548 > +++ b/tests/xfs/548 > @@ -24,7 +24,7 @@ _require_xfs_db_command path > _require_test_program "punch-alternating" > _require_xfs_io_error_injection "bmap_alloc_minlen_extent" > > -_scratch_mkfs -d size=$((512 * 1024 * 1024)) >> $seqres.full > +_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seqres.full These other two are pretty self evident so Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > _scratch_mount >> $seqres.full > > bsize=$(_get_file_block_size $SCRATCH_MNT) > -- > 2.34.1 >