diff mbox series

[4/4] xfs/818: fix some design issues

Message ID 174259234036.743619.7066882477727740142.stgit@frogsfrogsfrogs (mailing list archive)
State New
Headers show
Series [1/4] xfs/614: determine the sector size of the fs image by doing a test format | expand

Commit Message

Darrick J. Wong March 21, 2025, 9:28 p.m. UTC
From: Darrick J. Wong <djwong@kernel.org>

While QA'ing zoned filesystem support, I discovered some design errors
in this test:

1) Since we're test formatting a sparse file on an xfs filesystem,
there's no need to play games with optimal device size; we can create
a totally sparse file that's the same size as SCRATCH_DEV.

2) mkfs.xfs cannot create realtime files, so if it fails with that,
there's no need to continue the test.

3) If mkfs -p fails for none of the proscribed reasons, it should exit
the test.  The final cat $tmp.mkfs will take care of tweaking the golden
output to register the test failure for further investigation.

Cc: <fstests@vger.kernel.org> # v2025.03.09
Fixes: 6d39dc34e61e11 ("xfs: test filesystem creation with xfs_protofile")
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
 tests/xfs/818 |   19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

Comments

Zorro Lang March 22, 2025, 3 p.m. UTC | #1
On Fri, Mar 21, 2025 at 02:28:26PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> While QA'ing zoned filesystem support, I discovered some design errors
> in this test:
> 
> 1) Since we're test formatting a sparse file on an xfs filesystem,
> there's no need to play games with optimal device size; we can create
> a totally sparse file that's the same size as SCRATCH_DEV.
> 
> 2) mkfs.xfs cannot create realtime files, so if it fails with that,
> there's no need to continue the test.
> 
> 3) If mkfs -p fails for none of the proscribed reasons, it should exit
> the test.  The final cat $tmp.mkfs will take care of tweaking the golden
> output to register the test failure for further investigation.
> 
> Cc: <fstests@vger.kernel.org> # v2025.03.09
> Fixes: 6d39dc34e61e11 ("xfs: test filesystem creation with xfs_protofile")
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> ---

Make sense to me,

Reviewed-by: Zorro Lang <zlang@redhat.com>

>  tests/xfs/818 |   19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
> 
> 
> diff --git a/tests/xfs/818 b/tests/xfs/818
> index aeb462353df7e9..bc809390b9e340 100755
> --- a/tests/xfs/818
> +++ b/tests/xfs/818
> @@ -75,9 +75,8 @@ _run_fsstress -n 1000 -d $SCRATCH_MNT/newfiles
>  make_stat $SCRATCH_MNT before
>  make_md5 $SCRATCH_MNT before
>  
> -kb_needed=$(du -k -s $SCRATCH_MNT | awk '{print $1}')
> -img_size=$((kb_needed * 2))
> -test "$img_size" -lt $((300 * 1024)) && img_size=$((300 * 1024))
> +scratch_sectors="$(blockdev --getsz $SCRATCH_DEV)"
> +img_size=$((scratch_sectors * 512 / 1024))
>  
>  echo "Clone image with protofile"
>  $XFS_PROTOFILE_PROG $SCRATCH_MNT > $testfiles/protofile
> @@ -99,7 +98,21 @@ if ! _try_mkfs_dev -p $testfiles/protofile $testfiles/image &> $tmp.mkfs; then
>  	if grep -q 'No space left on device' $tmp.mkfs; then
>  		_notrun "not enough space in filesystem"
>  	fi
> +
> +	# mkfs cannot create realtime files.
> +	#
> +	# If zoned=1 is in MKFS_OPTIONS, mkfs will create an internal realtime
> +	# volume with rtinherit=1 and fail, so we need to _notrun that case.
> +	#
> +	# If zoned=1 is /not/ in MKFS_OPTIONS, we didn't pass a realtime device
> +	# to mkfs so it will not create realtime files.  The format should work
> +	# just fine.
> +	if grep -q 'creating realtime files from proto file not supported' $tmp.mkfs; then
> +		_notrun "mkfs cannot create realtime files"
> +	fi
> +
>  	cat $tmp.mkfs
> +	exit
>  fi
>  
>  _mount $testfiles/image $testfiles/mount
>
diff mbox series

Patch

diff --git a/tests/xfs/818 b/tests/xfs/818
index aeb462353df7e9..bc809390b9e340 100755
--- a/tests/xfs/818
+++ b/tests/xfs/818
@@ -75,9 +75,8 @@  _run_fsstress -n 1000 -d $SCRATCH_MNT/newfiles
 make_stat $SCRATCH_MNT before
 make_md5 $SCRATCH_MNT before
 
-kb_needed=$(du -k -s $SCRATCH_MNT | awk '{print $1}')
-img_size=$((kb_needed * 2))
-test "$img_size" -lt $((300 * 1024)) && img_size=$((300 * 1024))
+scratch_sectors="$(blockdev --getsz $SCRATCH_DEV)"
+img_size=$((scratch_sectors * 512 / 1024))
 
 echo "Clone image with protofile"
 $XFS_PROTOFILE_PROG $SCRATCH_MNT > $testfiles/protofile
@@ -99,7 +98,21 @@  if ! _try_mkfs_dev -p $testfiles/protofile $testfiles/image &> $tmp.mkfs; then
 	if grep -q 'No space left on device' $tmp.mkfs; then
 		_notrun "not enough space in filesystem"
 	fi
+
+	# mkfs cannot create realtime files.
+	#
+	# If zoned=1 is in MKFS_OPTIONS, mkfs will create an internal realtime
+	# volume with rtinherit=1 and fail, so we need to _notrun that case.
+	#
+	# If zoned=1 is /not/ in MKFS_OPTIONS, we didn't pass a realtime device
+	# to mkfs so it will not create realtime files.  The format should work
+	# just fine.
+	if grep -q 'creating realtime files from proto file not supported' $tmp.mkfs; then
+		_notrun "mkfs cannot create realtime files"
+	fi
+
 	cat $tmp.mkfs
+	exit
 fi
 
 _mount $testfiles/image $testfiles/mount