diff mbox series

[3/3] replace _supported_fs with _exclude_fs

Message ID 20250128071315.676272-4-hch@lst.de (mailing list archive)
State New
Headers show
Series [1/3] generic/363: remove _supported_fs xfs | expand

Commit Message

Christoph Hellwig Jan. 28, 2025, 7:13 a.m. UTC
Tests don't require a list of supported file systems, as that is deducted
from the test directory name.  Instead we exclude specific file systems
from a few common tests, and specify which of ext2 and ext3 should
actually also be tested after oddly multiplexing them into the ext4
directory full of tests only working for ext4.

Replace _supported_fs with a new _exclude_fs that takes only a single
file systems as the argument, making it easier to explain why the file
system is not supported for the common test.  For ext4 this increases
the existing mess even further, but the maintainers have a plan to
move it to feature checks instead that are hopefully easier to
understand.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 common/rc         | 30 ++++++++----------------------
 tests/ext4/001    |  4 +++-
 tests/ext4/002    |  2 +-
 tests/ext4/003    |  3 ++-
 tests/ext4/004    |  3 ++-
 tests/ext4/005    |  4 +++-
 tests/ext4/006    |  3 ++-
 tests/ext4/007    |  3 ++-
 tests/ext4/008    |  3 ++-
 tests/ext4/009    |  3 ++-
 tests/ext4/010    |  3 ++-
 tests/ext4/011    |  3 ++-
 tests/ext4/012    |  3 ++-
 tests/ext4/013    |  3 ++-
 tests/ext4/014    |  3 ++-
 tests/ext4/015    |  3 ++-
 tests/ext4/016    |  3 ++-
 tests/ext4/017    |  3 ++-
 tests/ext4/018    |  3 ++-
 tests/ext4/019    |  3 ++-
 tests/ext4/020    |  4 +++-
 tests/ext4/021    |  4 +++-
 tests/ext4/022    |  4 +++-
 tests/ext4/023    |  4 +++-
 tests/ext4/024    |  4 +++-
 tests/ext4/025    |  4 +++-
 tests/ext4/026    |  4 +++-
 tests/ext4/027    |  4 +++-
 tests/ext4/028    |  4 +++-
 tests/ext4/029    |  4 +++-
 tests/ext4/030    |  4 +++-
 tests/ext4/031    |  4 +++-
 tests/ext4/032    |  3 ++-
 tests/ext4/033    |  4 +++-
 tests/ext4/034    |  3 ++-
 tests/ext4/035    |  3 ++-
 tests/ext4/036    |  3 ++-
 tests/ext4/037    |  2 +-
 tests/ext4/038    |  3 +--
 tests/ext4/039    |  3 ++-
 tests/ext4/040    |  1 -
 tests/ext4/041    |  1 -
 tests/ext4/042    |  3 ---
 tests/ext4/043    |  2 +-
 tests/ext4/044    |  4 +++-
 tests/ext4/045    |  3 ++-
 tests/ext4/046    |  3 ++-
 tests/ext4/047    |  4 +++-
 tests/ext4/048    |  3 ++-
 tests/ext4/049    |  3 ++-
 tests/ext4/050    |  3 ++-
 tests/ext4/051    |  3 ++-
 tests/ext4/052    |  3 ++-
 tests/ext4/053    |  1 -
 tests/ext4/054    |  4 +++-
 tests/ext4/055    |  4 +++-
 tests/ext4/056    |  4 +++-
 tests/ext4/057    |  4 +++-
 tests/ext4/058    |  4 +++-
 tests/ext4/059    |  4 +++-
 tests/ext4/060    |  4 +++-
 tests/ext4/271    |  4 +++-
 tests/ext4/301    |  4 +++-
 tests/ext4/302    |  4 +++-
 tests/ext4/303    |  4 +++-
 tests/ext4/304    |  4 +++-
 tests/ext4/305    |  3 ++-
 tests/ext4/306    |  3 ++-
 tests/ext4/307    |  4 +++-
 tests/generic/187 |  8 +++++---
 tests/generic/294 |  2 +-
 tests/generic/357 |  2 +-
 tests/generic/362 |  3 ++-
 tests/generic/465 |  2 +-
 tests/generic/500 |  2 +-
 tests/generic/631 |  4 +++-
 tests/generic/679 |  2 +-
 tests/generic/699 |  3 ++-
 tests/generic/732 |  4 +++-
 tests/generic/740 |  7 ++++++-
 80 files changed, 188 insertions(+), 106 deletions(-)

Comments

Darrick J. Wong Jan. 28, 2025, 7:19 p.m. UTC | #1
On Tue, Jan 28, 2025 at 08:13:00AM +0100, Christoph Hellwig wrote:
> Tests don't require a list of supported file systems, as that is deducted
> from the test directory name.  Instead we exclude specific file systems
> from a few common tests, and specify which of ext2 and ext3 should
> actually also be tested after oddly multiplexing them into the ext4
> directory full of tests only working for ext4.
> 
> Replace _supported_fs with a new _exclude_fs that takes only a single
> file systems as the argument, making it easier to explain why the file
> system is not supported for the common test.  For ext4 this increases
> the existing mess even further, but the maintainers have a plan to
> move it to feature checks instead that are hopefully easier to
> understand.

They do?  FWIW the tests/ext4 conversions look reasonable as a
mechanical change to me, but I /was/ wondering what they'd think of this
change.

> Signed-off-by: Christoph Hellwig <hch@lst.de>

That said I don't care to hold this up so

Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> # common and tests/generic
Acked-by: "Darrick J. Wong" <djwong@kernel.org> # tests/ext4

--D

> ---
>  common/rc         | 30 ++++++++----------------------
>  tests/ext4/001    |  4 +++-
>  tests/ext4/002    |  2 +-
>  tests/ext4/003    |  3 ++-
>  tests/ext4/004    |  3 ++-
>  tests/ext4/005    |  4 +++-
>  tests/ext4/006    |  3 ++-
>  tests/ext4/007    |  3 ++-
>  tests/ext4/008    |  3 ++-
>  tests/ext4/009    |  3 ++-
>  tests/ext4/010    |  3 ++-
>  tests/ext4/011    |  3 ++-
>  tests/ext4/012    |  3 ++-
>  tests/ext4/013    |  3 ++-
>  tests/ext4/014    |  3 ++-
>  tests/ext4/015    |  3 ++-
>  tests/ext4/016    |  3 ++-
>  tests/ext4/017    |  3 ++-
>  tests/ext4/018    |  3 ++-
>  tests/ext4/019    |  3 ++-
>  tests/ext4/020    |  4 +++-
>  tests/ext4/021    |  4 +++-
>  tests/ext4/022    |  4 +++-
>  tests/ext4/023    |  4 +++-
>  tests/ext4/024    |  4 +++-
>  tests/ext4/025    |  4 +++-
>  tests/ext4/026    |  4 +++-
>  tests/ext4/027    |  4 +++-
>  tests/ext4/028    |  4 +++-
>  tests/ext4/029    |  4 +++-
>  tests/ext4/030    |  4 +++-
>  tests/ext4/031    |  4 +++-
>  tests/ext4/032    |  3 ++-
>  tests/ext4/033    |  4 +++-
>  tests/ext4/034    |  3 ++-
>  tests/ext4/035    |  3 ++-
>  tests/ext4/036    |  3 ++-
>  tests/ext4/037    |  2 +-
>  tests/ext4/038    |  3 +--
>  tests/ext4/039    |  3 ++-
>  tests/ext4/040    |  1 -
>  tests/ext4/041    |  1 -
>  tests/ext4/042    |  3 ---
>  tests/ext4/043    |  2 +-
>  tests/ext4/044    |  4 +++-
>  tests/ext4/045    |  3 ++-
>  tests/ext4/046    |  3 ++-
>  tests/ext4/047    |  4 +++-
>  tests/ext4/048    |  3 ++-
>  tests/ext4/049    |  3 ++-
>  tests/ext4/050    |  3 ++-
>  tests/ext4/051    |  3 ++-
>  tests/ext4/052    |  3 ++-
>  tests/ext4/053    |  1 -
>  tests/ext4/054    |  4 +++-
>  tests/ext4/055    |  4 +++-
>  tests/ext4/056    |  4 +++-
>  tests/ext4/057    |  4 +++-
>  tests/ext4/058    |  4 +++-
>  tests/ext4/059    |  4 +++-
>  tests/ext4/060    |  4 +++-
>  tests/ext4/271    |  4 +++-
>  tests/ext4/301    |  4 +++-
>  tests/ext4/302    |  4 +++-
>  tests/ext4/303    |  4 +++-
>  tests/ext4/304    |  4 +++-
>  tests/ext4/305    |  3 ++-
>  tests/ext4/306    |  3 ++-
>  tests/ext4/307    |  4 +++-
>  tests/generic/187 |  8 +++++---
>  tests/generic/294 |  2 +-
>  tests/generic/357 |  2 +-
>  tests/generic/362 |  3 ++-
>  tests/generic/465 |  2 +-
>  tests/generic/500 |  2 +-
>  tests/generic/631 |  4 +++-
>  tests/generic/679 |  2 +-
>  tests/generic/699 |  3 ++-
>  tests/generic/732 |  4 +++-
>  tests/generic/740 |  7 ++++++-
>  80 files changed, 188 insertions(+), 106 deletions(-)
> 
> diff --git a/common/rc b/common/rc
> index c5421c9454fa..a38eaf52ab8e 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1769,30 +1769,16 @@ _fail()
>      exit 1
>  }
>  
> -# tests whether $FSTYP is one of the supported filesystems for a test
>  #
> -_check_supported_fs()
> -{
> -	local res=1
> -	local f
> -
> -	for f; do
> -		# ^FS means black listed fs
> -		if [ "$f" = "^$FSTYP" ]; then
> -			return 1
> -		elif [ "$f" = "generic" ] || [[ "$f" == "^"* ]]; then
> -			# ^FS implies "generic ^FS"
> -			res=0
> -		elif [ "$f" = "$FSTYP" ]; then
> -			return 0
> -		fi
> -	done
> -	return $res
> -}
> -
> -_supported_fs()
> +# Tests whether $FSTYP should be exclude from this test.
> +#
> +# In general this should be avoided in favor of feature tests, and when this
> +# helper has to be used, it should include a comment on why a specific file
> +# system is excluded.
> +#
> +_exclude_fs()
>  {
> -	_check_supported_fs $* || \
> +	[ "$1" = "$FSTYP" ] && \
>  		_notrun "not suitable for this filesystem type: $FSTYP"
>  }
>  
> diff --git a/tests/ext4/001 b/tests/ext4/001
> index 4575cf6973bb..1990746aa587 100755
> --- a/tests/ext4/001
> +++ b/tests/ext4/001
> @@ -14,7 +14,9 @@ _begin_fstest auto prealloc quick zero fiemap
>  . ./common/filter
>  . ./common/punch
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_xfs_io_command "falloc"
>  _require_xfs_io_command "fzero"
>  _require_test
> diff --git a/tests/ext4/002 b/tests/ext4/002
> index 9c6eb5a04136..6c1e1d926973 100755
> --- a/tests/ext4/002
> +++ b/tests/ext4/002
> @@ -29,7 +29,7 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4 ext3
> +_exclude_fs ext2
>  
>  _require_scratch_nocheck
>  _require_scratch_shutdown
> diff --git a/tests/ext4/003 b/tests/ext4/003
> index e2b588d88849..e752a769603f 100755
> --- a/tests/ext4/003
> +++ b/tests/ext4/003
> @@ -20,7 +20,8 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_scratch_ext4_feature "bigalloc"
> diff --git a/tests/ext4/004 b/tests/ext4/004
> index ab2f838e9fac..4e6c4a75f601 100755
> --- a/tests/ext4/004
> +++ b/tests/ext4/004
> @@ -43,7 +43,8 @@ workout()
>  	rm -rf restoresymtable
>  }
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_test
>  _require_scratch
> diff --git a/tests/ext4/005 b/tests/ext4/005
> index a271fbbf641a..b581ac1cacb9 100755
> --- a/tests/ext4/005
> +++ b/tests/ext4/005
> @@ -17,7 +17,9 @@ _begin_fstest auto quick metadata ioctl rw
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_command "$CHATTR_PROG" chattr
>  
> diff --git a/tests/ext4/006 b/tests/ext4/006
> index d78620731148..2ece22a4bd1e 100755
> --- a/tests/ext4/006
> +++ b/tests/ext4/006
> @@ -28,7 +28,8 @@ if [ ! -x "$(type -P e2fuzz)" ]; then
>  	_notrun "Couldn't find e2fuzz"
>  fi
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_attrs
> diff --git a/tests/ext4/007 b/tests/ext4/007
> index deedbd9e8fb3..39c9427c5257 100755
> --- a/tests/ext4/007
> +++ b/tests/ext4/007
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/008 b/tests/ext4/008
> index b4b20ac10d6d..1ca6d90e0c3d 100755
> --- a/tests/ext4/008
> +++ b/tests/ext4/008
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/009 b/tests/ext4/009
> index 06a42fd77ffa..71e59f90e4b8 100755
> --- a/tests/ext4/009
> +++ b/tests/ext4/009
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_xfs_io_command "falloc"
>  _require_scratch
> diff --git a/tests/ext4/010 b/tests/ext4/010
> index 1139c79e80d5..dec08a62cdf0 100755
> --- a/tests/ext4/010
> +++ b/tests/ext4/010
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_dumpe2fs
> diff --git a/tests/ext4/011 b/tests/ext4/011
> index cae4fb6b8476..e135ae4cefac 100755
> --- a/tests/ext4/011
> +++ b/tests/ext4/011
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/012 b/tests/ext4/012
> index f7f2b0fb4557..9a420bd3c696 100755
> --- a/tests/ext4/012
> +++ b/tests/ext4/012
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/013 b/tests/ext4/013
> index 7d2a9154a669..343a8e65cfce 100755
> --- a/tests/ext4/013
> +++ b/tests/ext4/013
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/014 b/tests/ext4/014
> index ffed795ad4e9..870f7ef911a2 100755
> --- a/tests/ext4/014
> +++ b/tests/ext4/014
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/015 b/tests/ext4/015
> index 81feda5c9423..08e669584c6b 100755
> --- a/tests/ext4/015
> +++ b/tests/ext4/015
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_xfs_io_command "falloc"
>  _require_xfs_io_command "fpunch"
> diff --git a/tests/ext4/016 b/tests/ext4/016
> index b7db4cfda649..925f39d15ad2 100755
> --- a/tests/ext4/016
> +++ b/tests/ext4/016
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/017 b/tests/ext4/017
> index fc867442c3da..f081900a9a1e 100755
> --- a/tests/ext4/017
> +++ b/tests/ext4/017
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/018 b/tests/ext4/018
> index f7377f059fb8..5999837a9db1 100755
> --- a/tests/ext4/018
> +++ b/tests/ext4/018
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/019 b/tests/ext4/019
> index 987972a80a37..dc8243961ee0 100755
> --- a/tests/ext4/019
> +++ b/tests/ext4/019
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/020 b/tests/ext4/020
> index a2fb60fa8cc6..c2a188e4cdae 100755
> --- a/tests/ext4/020
> +++ b/tests/ext4/020
> @@ -17,7 +17,9 @@ _begin_fstest auto quick ioctl rw defrag
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  
> diff --git a/tests/ext4/021 b/tests/ext4/021
> index d69dc584dc58..337470e0ca6b 100755
> --- a/tests/ext4/021
> +++ b/tests/ext4/021
> @@ -12,7 +12,9 @@ _begin_fstest auto quick
>  
>  # Import common functions.
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_dumpe2fs
>  
> diff --git a/tests/ext4/022 b/tests/ext4/022
> index 6b74ff892a35..eb04cc9d9000 100755
> --- a/tests/ext4/022
> +++ b/tests/ext4/022
> @@ -18,7 +18,9 @@ do_setfattr()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_dumpe2fs
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/023 b/tests/ext4/023
> index b5217da33f15..335a4bfff96d 100755
> --- a/tests/ext4/023
> +++ b/tests/ext4/023
> @@ -18,7 +18,9 @@ _register_cleanup "_cleanup" BUS
>  . ./common/populate
>  . ./common/fuzzy
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  
>  echo "Format and populate"
> diff --git a/tests/ext4/024 b/tests/ext4/024
> index e58cb9918f25..f3c028adda68 100755
> --- a/tests/ext4/024
> +++ b/tests/ext4/024
> @@ -13,7 +13,9 @@ _begin_fstest auto quick encrypt dangerous
>  # get standard environment and checks
>  . ./common/encrypt
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_encryption
>  _require_command "$KEYCTL_PROG" keyctl
>  
> diff --git a/tests/ext4/025 b/tests/ext4/025
> index ce3a3d21969b..640285a25a53 100755
> --- a/tests/ext4/025
> +++ b/tests/ext4/025
> @@ -13,7 +13,9 @@ _begin_fstest auto quick fuzzers dangerous
>  # get standard environment and checks
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
>  _require_command "$DEBUGFS_PROG" debugfs
>  _require_scratch_ext4_feature "bigalloc,meta_bg,^resize_inode"
> diff --git a/tests/ext4/026 b/tests/ext4/026
> index 5bb2add23036..f29ff5a97688 100755
> --- a/tests/ext4/026
> +++ b/tests/ext4/026
> @@ -16,7 +16,9 @@ _begin_fstest auto quick attr
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_attrs
>  _require_scratch_ext4_feature "ea_inode"
> diff --git a/tests/ext4/027 b/tests/ext4/027
> index 93de00f29481..8f89062afd0a 100755
> --- a/tests/ext4/027
> +++ b/tests/ext4/027
> @@ -19,7 +19,9 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_xfs_io_command "fsmap"
>  
> diff --git a/tests/ext4/028 b/tests/ext4/028
> index 30f3c4480c7c..1b8855098f82 100755
> --- a/tests/ext4/028
> +++ b/tests/ext4/028
> @@ -20,7 +20,9 @@ _cleanup()
>  . ./common/filter
>  . ./common/populate
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_populate_commands
>  _require_xfs_io_command "fsmap"
> diff --git a/tests/ext4/029 b/tests/ext4/029
> index 8a6969d2aaef..1915aaa67a74 100755
> --- a/tests/ext4/029
> +++ b/tests/ext4/029
> @@ -19,7 +19,9 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_logdev
>  _require_scratch
>  _require_xfs_io_command "fsmap"
> diff --git a/tests/ext4/030 b/tests/ext4/030
> index 80f34ccf3e49..5eec9d353a8e 100755
> --- a/tests/ext4/030
> +++ b/tests/ext4/030
> @@ -15,7 +15,9 @@ _begin_fstest auto quick dax
>  . ./common/filter
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_dax_mountopt "dax"
>  _require_test_program "t_ext4_dax_journal_corruption"
>  _require_command "$CHATTR_PROG" chattr
> diff --git a/tests/ext4/031 b/tests/ext4/031
> index b583f825162f..330804d39688 100755
> --- a/tests/ext4/031
> +++ b/tests/ext4/031
> @@ -19,7 +19,9 @@ SAVE_MOUNT_OPTIONS="$MOUNT_OPTIONS"
>  MOUNT_OPTIONS=""
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_dax_mountopt "dax"
>  _require_test_program "t_ext4_dax_inline_corruption"
>  _require_scratch_ext4_feature "inline_data"
> diff --git a/tests/ext4/032 b/tests/ext4/032
> index 238ab178363c..690fcf066c11 100755
> --- a/tests/ext4/032
> +++ b/tests/ext4/032
> @@ -83,7 +83,8 @@ _cleanup()
>  
>  # get standard environment and checks
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_loop
>  _require_scratch
> diff --git a/tests/ext4/033 b/tests/ext4/033
> index 53f7106e2c6b..3827ab5c52ad 100755
> --- a/tests/ext4/033
> +++ b/tests/ext4/033
> @@ -24,7 +24,9 @@ _cleanup()
>  . ./common/filter
>  . ./common/dmhugedisk
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
>  _require_dmhugedisk
>  _require_dumpe2fs
> diff --git a/tests/ext4/034 b/tests/ext4/034
> index cdd2e553f534..c4ae807519d6 100755
> --- a/tests/ext4/034
> +++ b/tests/ext4/034
> @@ -19,7 +19,8 @@ _begin_fstest auto quick quota fiemap prealloc
>  
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _require_quota
>  _require_nobody
> diff --git a/tests/ext4/035 b/tests/ext4/035
> index cf221c5adb7d..fe2a74680f01 100755
> --- a/tests/ext4/035
> +++ b/tests/ext4/035
> @@ -19,7 +19,8 @@ _begin_fstest auto quick resize
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _exclude_scratch_mount_option dax
>  _require_command "$RESIZE2FS_PROG" resize2fs
> diff --git a/tests/ext4/036 b/tests/ext4/036
> index 045fe82ff956..4a1471fd4cb5 100755
> --- a/tests/ext4/036
> +++ b/tests/ext4/036
> @@ -15,7 +15,8 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
> +
>  _require_scratch
>  
>  echo "Silence is golden"
> diff --git a/tests/ext4/037 b/tests/ext4/037
> index ac309d67aac5..dea02a79927a 100755
> --- a/tests/ext4/037
> +++ b/tests/ext4/037
> @@ -15,7 +15,7 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
>  
>  # nofsck as we modify sb via debugfs
>  _require_scratch_nocheck
> diff --git a/tests/ext4/038 b/tests/ext4/038
> index b594bd9cb2e2..07b090b11f13 100755
> --- a/tests/ext4/038
> +++ b/tests/ext4/038
> @@ -10,9 +10,8 @@
>  . ./common/preamble
>  _begin_fstest auto quick
>  
> -# Import common functions.
> +_exclude_fs ext2
>  
> -_supported_fs ext3 ext4
>  _require_scratch
>  _require_command "$DEBUGFS_PROG" debugfs
>  
> diff --git a/tests/ext4/039 b/tests/ext4/039
> index 2830740eb3cf..2e99c8ff9ffd 100755
> --- a/tests/ext4/039
> +++ b/tests/ext4/039
> @@ -56,7 +56,8 @@ chattr_opt: $chattr_opt" >>$seqres.full
>  	done
>  }
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
> +
>  _require_scratch
>  _exclude_scratch_mount_option dax
>  
> diff --git a/tests/ext4/040 b/tests/ext4/040
> index 5760058ad7d4..f22c655b4909 100755
> --- a/tests/ext4/040
> +++ b/tests/ext4/040
> @@ -21,7 +21,6 @@ PIDS=""
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext2 ext3 ext4
>  _require_scratch_nocheck
>  _disable_dmesg_check
>  _require_command "$DEBUGFS_PROG"
> diff --git a/tests/ext4/041 b/tests/ext4/041
> index 76513db3f887..3df1b9db803d 100755
> --- a/tests/ext4/041
> +++ b/tests/ext4/041
> @@ -21,7 +21,6 @@ PIDS=""
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext2 ext3 ext4
>  _require_scratch_nocheck
>  _disable_dmesg_check
>  _require_command "$DEBUGFS_PROG"
> diff --git a/tests/ext4/042 b/tests/ext4/042
> index 0d97f6de4c2a..61fe948f2b61 100755
> --- a/tests/ext4/042
> +++ b/tests/ext4/042
> @@ -12,9 +12,6 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -
> -# Modify as appropriate.
> -_supported_fs ext2 ext3 ext4
>  _require_scratch
>  
>  _scratch_mkfs >> $seqres.full 2>&1
> diff --git a/tests/ext4/043 b/tests/ext4/043
> index 0bbbb42ac41d..8d124ba36f72 100755
> --- a/tests/ext4/043
> +++ b/tests/ext4/043
> @@ -12,7 +12,7 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
>  
>  _require_scratch
>  _require_test_program "t_get_file_time"
> diff --git a/tests/ext4/044 b/tests/ext4/044
> index 53006514dc72..cd52f0d741e0 100755
> --- a/tests/ext4/044
> +++ b/tests/ext4/044
> @@ -12,7 +12,9 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_test_program "t_get_file_time"
>  _require_metadata_journaling
> diff --git a/tests/ext4/045 b/tests/ext4/045
> index 587bedece4e1..15b2541ee342 100755
> --- a/tests/ext4/045
> +++ b/tests/ext4/045
> @@ -16,7 +16,8 @@ LONG_DIR=2
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_scratch_ext4_feature large_dir
> diff --git a/tests/ext4/046 b/tests/ext4/046
> index 5c2100ce9253..60d33550e3db 100755
> --- a/tests/ext4/046
> +++ b/tests/ext4/046
> @@ -16,7 +16,8 @@ _begin_fstest auto prealloc quick
>  . ./common/filter
>  
>  _require_check_dmesg
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _require_xfs_io_command "falloc"
>  _require_scratch_size $((6 * 1024 * 1024)) #kB
> diff --git a/tests/ext4/047 b/tests/ext4/047
> index f67b615ab082..b7df1ede4805 100755
> --- a/tests/ext4/047
> +++ b/tests/ext4/047
> @@ -13,7 +13,9 @@ _begin_fstest auto quick dax
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_dax_mountopt "dax=always"
>  _require_dax_iflag
>  _require_scratch_ext4_feature "inline_data"
> diff --git a/tests/ext4/048 b/tests/ext4/048
> index 99a2c7b8fe4d..2031c8c8933d 100755
> --- a/tests/ext4/048
> +++ b/tests/ext4/048
> @@ -13,7 +13,8 @@ _begin_fstest auto quick dir
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/049 b/tests/ext4/049
> index 5b24e632a73b..075408e0b867 100755
> --- a/tests/ext4/049
> +++ b/tests/ext4/049
> @@ -13,7 +13,8 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  
>  sdev=$(_short_dev ${SCRATCH_DEV})
> diff --git a/tests/ext4/050 b/tests/ext4/050
> index 6ba0038e71f2..99e824898e0f 100755
> --- a/tests/ext4/050
> +++ b/tests/ext4/050
> @@ -13,7 +13,8 @@ _begin_fstest auto ioctl quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/051 b/tests/ext4/051
> index a1e35fa323d3..728ad19bfcec 100755
> --- a/tests/ext4/051
> +++ b/tests/ext4/051
> @@ -12,7 +12,8 @@
>  . ./common/preamble
>  _begin_fstest auto rw quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _require_scratch_shutdown
>  _require_command "$TUNE2FS_PROG" tune2fs
> diff --git a/tests/ext4/052 b/tests/ext4/052
> index edcdc02515f7..0df8a651383e 100755
> --- a/tests/ext4/052
> +++ b/tests/ext4/052
> @@ -29,7 +29,8 @@ _cleanup()
>  
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_test
>  _require_loop
>  _require_test_program "dirstress"
> diff --git a/tests/ext4/053 b/tests/ext4/053
> index 4f20d217d5fd..5922ed571d8a 100755
> --- a/tests/ext4/053
> +++ b/tests/ext4/053
> @@ -39,7 +39,6 @@ echo "Silence is golden."
>  SIZE=$((1024 * 1024))	# 1GB in KB
>  LOGSIZE=$((10 *1024))	# 10MB in KB
>  
> -_supported_fs ext2 ext3 ext4
>  _require_scratch_size $SIZE
>  _require_quota
>  _require_loop
> diff --git a/tests/ext4/054 b/tests/ext4/054
> index 0dbe83640072..458eed6a7072 100755
> --- a/tests/ext4/054
> +++ b/tests/ext4/054
> @@ -17,7 +17,9 @@ _begin_fstest auto quick dangerous_fuzzers prealloc punch
>  # Import common functions
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
>  _require_xfs_io_command "falloc"
>  _require_xfs_io_command "pwrite"
> diff --git a/tests/ext4/055 b/tests/ext4/055
> index e1815c23727a..3117bf15f9f0 100755
> --- a/tests/ext4/055
> +++ b/tests/ext4/055
> @@ -16,8 +16,10 @@
>  . ./common/preamble
>  _begin_fstest auto quota
>  
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
> -_supported_fs ext4
>  _require_user fsgqa
>  _require_user fsgqa2
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/056 b/tests/ext4/056
> index 8a290b11d697..fb5bbe93e972 100755
> --- a/tests/ext4/056
> +++ b/tests/ext4/056
> @@ -26,7 +26,9 @@ ONLINE_RESIZE_BLOCK_LIMIT=$((256*1024*1024))
>  
>  STOP_ITER=255   # Arbitrary return code
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_size $(($RESIZED_FS_SIZE/1024))
>  _require_test_program "ext4_resize"
>  
> diff --git a/tests/ext4/057 b/tests/ext4/057
> index 73cdf941a181..2be46223538f 100755
> --- a/tests/ext4/057
> +++ b/tests/ext4/057
> @@ -11,7 +11,9 @@ _begin_fstest auto ioctl
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_test_program uuid_ioctl
>  _require_command $UUIDGEN_PROG uuidgen
> diff --git a/tests/ext4/058 b/tests/ext4/058
> index f853649644db..9a2c3aa59ba8 100755
> --- a/tests/ext4/058
> +++ b/tests/ext4/058
> @@ -13,7 +13,9 @@
>  . ./common/preamble
>  _begin_fstest auto quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _fixed_by_kernel_commit a08f789d2ab5 \
>  	"ext4: fix bug_on ext4_mb_use_inode_pa"
>  _require_scratch
> diff --git a/tests/ext4/059 b/tests/ext4/059
> index 50e788f0a169..7ea7ff92744d 100755
> --- a/tests/ext4/059
> +++ b/tests/ext4/059
> @@ -11,7 +11,9 @@
>  . ./common/preamble
>  _begin_fstest auto resize quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _fixed_by_kernel_commit b55c3cd102a6 \
>  	"ext4: add reserved GDT blocks check"
>  
> diff --git a/tests/ext4/060 b/tests/ext4/060
> index 38d1c8f7b672..b8cc542fd242 100755
> --- a/tests/ext4/060
> +++ b/tests/ext4/060
> @@ -14,7 +14,9 @@
>  . ./common/preamble
>  _begin_fstest auto resize quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _fixed_by_kernel_commit a6b3bfe176e8 \
>  	"ext4: fix corruption during on-line resize"
>  
> diff --git a/tests/ext4/271 b/tests/ext4/271
> index 6d60f40d3d25..5535384742ee 100755
> --- a/tests/ext4/271
> +++ b/tests/ext4/271
> @@ -12,7 +12,9 @@ _begin_fstest auto rw quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  # this test needs no journal to be loaded, skip on journal related mount
>  # options, otherwise mount would fail with "-o noload" mount option
> diff --git a/tests/ext4/301 b/tests/ext4/301
> index dd0c7d483761..abf47d4b7ece 100755
> --- a/tests/ext4/301
> +++ b/tests/ext4/301
> @@ -15,7 +15,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/302 b/tests/ext4/302
> index d73cf9bf84da..87820184e30f 100755
> --- a/tests/ext4/302
> +++ b/tests/ext4/302
> @@ -16,7 +16,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/303 b/tests/ext4/303
> index d9be45674e40..2381f0477082 100755
> --- a/tests/ext4/303
> +++ b/tests/ext4/303
> @@ -16,7 +16,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/304 b/tests/ext4/304
> index 208b8a2ac119..53b522ee85bd 100755
> --- a/tests/ext4/304
> +++ b/tests/ext4/304
> @@ -17,7 +17,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/305 b/tests/ext4/305
> index acada44bc75a..35dae5571b55 100755
> --- a/tests/ext4/305
> +++ b/tests/ext4/305
> @@ -22,7 +22,8 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  
> diff --git a/tests/ext4/306 b/tests/ext4/306
> index b5147caf547e..b0e08f65ea24 100755
> --- a/tests/ext4/306
> +++ b/tests/ext4/306
> @@ -22,7 +22,8 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_command "$RESIZE2FS_PROG" resize2fs
> diff --git a/tests/ext4/307 b/tests/ext4/307
> index 8361f04312b2..1f0e42ca2638 100755
> --- a/tests/ext4/307
> +++ b/tests/ext4/307
> @@ -34,7 +34,9 @@ _workout()
>  	run_check md5sum -c $out.md5sum
>  }
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_xfs_io_command "falloc"
> diff --git a/tests/generic/187 b/tests/generic/187
> index 2a06aff35e58..536ce9fa9ab8 100755
> --- a/tests/generic/187
> +++ b/tests/generic/187
> @@ -28,10 +28,12 @@ _cleanup()
>  . ./common/filter
>  . ./common/reflink
>  
> +# btrfs can't fragment free space.
> +_exclude_fs btrfs
> +
> +# This test is unreliable on NFS, as it depends on the exported filesystem.
> +_exclude_fs nfs
>  
> -# btrfs can't fragment free space. This test is unreliable on NFS, as it
> -# depends on the exported filesystem.
> -_supported_fs ^btrfs ^nfs
>  _require_scratch_reflink
>  _require_cp_reflink
>  _require_xfs_io_command "falloc"
> diff --git a/tests/generic/294 b/tests/generic/294
> index 54b89a26294f..b07459116371 100755
> --- a/tests/generic/294
> +++ b/tests/generic/294
> @@ -16,7 +16,7 @@ _begin_fstest auto quick
>  
>  # NFS will optimize away the on-the-wire lookup before attempting to
>  # create a new file (since that means an extra round trip).
> -_supported_fs ^nfs
> +_exclude_fs nfs
>  
>  _require_scratch
>  _require_symlinks
> diff --git a/tests/generic/357 b/tests/generic/357
> index 8db31f8b0432..51c6d5efd2d7 100755
> --- a/tests/generic/357
> +++ b/tests/generic/357
> @@ -26,7 +26,7 @@ _cleanup()
>  
>  # For NFS, a reflink is just a CLONE operation, and after that
>  # point it's dealt with by the server.
> -_supported_fs ^nfs
> +_exclude_fs nfs
>  
>  _require_scratch_swapfile
>  _require_scratch_reflink
> diff --git a/tests/generic/362 b/tests/generic/362
> index 2396ec7d3a57..3a1993e81d4b 100755
> --- a/tests/generic/362
> +++ b/tests/generic/362
> @@ -11,7 +11,8 @@
>  _begin_fstest auto quick
>  
>  # NFS forbade open with O_APPEND|O_DIRECT
> -_supported_fs ^nfs
> +_exclude_fs nfs
> +
>  _require_test
>  _require_odirect
>  _require_test_program dio-append-buf-fault
> diff --git a/tests/generic/465 b/tests/generic/465
> index f8c4ea9671a2..5b49040e3ad0 100755
> --- a/tests/generic/465
> +++ b/tests/generic/465
> @@ -20,7 +20,7 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ^nfs
> +_exclude_fs nfs
>  
>  _require_aiodio aio-dio-append-write-read-race
>  _require_test_program "feature"
> diff --git a/tests/generic/500 b/tests/generic/500
> index ba6e902ec96b..c5492a09246c 100755
> --- a/tests/generic/500
> +++ b/tests/generic/500
> @@ -41,7 +41,7 @@ _require_dm_target thin-pool
>  # and since we've filled the thinp device it'll return EIO, which will make
>  # btrfs flip read only, making it fail this test when it just won't work right
>  # for us in the first place.
> -_supported_fs ^btrfs
> +_exclude_fs btrfs
>  
>  # Require underlying device support discard
>  _scratch_mkfs >>$seqres.full 2>&1
> diff --git a/tests/generic/631 b/tests/generic/631
> index 642d47863987..8e2cf9c63b77 100755
> --- a/tests/generic/631
> +++ b/tests/generic/631
> @@ -37,8 +37,10 @@ _cleanup()
>  
>  _require_scratch
>  _require_attrs trusted
> -_supported_fs ^overlay
> +
> +_exclude_fs overlay
>  _require_extra_fs overlay
> +
>  _fixed_by_kernel_commit 6da1b4b1ab36 \
>  	"xfs: fix an ABBA deadlock in xfs_rename"
>  
> diff --git a/tests/generic/679 b/tests/generic/679
> index 4c74101c5834..741ddf21502f 100755
> --- a/tests/generic/679
> +++ b/tests/generic/679
> @@ -23,7 +23,7 @@ _require_xfs_io_command "fiemap"
>  #
>  #   https://lore.kernel.org/linux-btrfs/20220315164011.GF8241@magnolia/
>  #
> -_supported_fs ^xfs
> +_exclude_fs xfs
>  
>  rm -f $seqres.full
>  
> diff --git a/tests/generic/699 b/tests/generic/699
> index 3079a861df74..620a40aa3921 100755
> --- a/tests/generic/699
> +++ b/tests/generic/699
> @@ -21,8 +21,9 @@ _cleanup()
>  	rm -r -f $tmp.*
>  }
>  
> -_supported_fs ^overlay
> +_exclude_fs overlay
>  _require_extra_fs overlay
> +
>  _require_scratch
>  _require_chown
>  _require_idmapped_mounts
> diff --git a/tests/generic/732 b/tests/generic/732
> index e907a009fe16..83caa0bc915c 100755
> --- a/tests/generic/732
> +++ b/tests/generic/732
> @@ -24,7 +24,9 @@ _cleanup()
>  # This case give a assumption that the same mount options for
>  # different mount point will share the same superblock, which won't
>  # sucess for the follow fs.
> -_supported_fs ^nfs ^overlay ^tmpfs
> +_exclude_fs nfs
> +_exclude_fs overlay
> +_exclude_fs tmpfs
>  
>  _require_test
>  _require_scratch
> diff --git a/tests/generic/740 b/tests/generic/740
> index 903e891db0fd..10817521cc93 100755
> --- a/tests/generic/740
> +++ b/tests/generic/740
> @@ -14,7 +14,12 @@ _begin_fstest mkfs auto quick
>  
>  # a bunch of file systems don't support foreign fs detection
>  # ext* do support it, but disable the feature when called non-interactively
> -_supported_fs ^ext2 ^ext3 ^ext4 ^jfs ^ocfs2 ^udf
> +_exclude_fs ext2
> +_exclude_fs ext3
> +_exclude_fs ext4
> +_exclude_fs jfs
> +_exclude_fs ocfs2
> +_exclude_fs udf
>  
>  _require_block_device "${SCRATCH_DEV}"
>  # not all the FS support zoned block device
> -- 
> 2.45.2
> 
>
Christoph Hellwig Jan. 29, 2025, 5:28 a.m. UTC | #2
On Tue, Jan 28, 2025 at 11:19:58AM -0800, Darrick J. Wong wrote:
> > system is not supported for the common test.  For ext4 this increases
> > the existing mess even further, but the maintainers have a plan to
> > move it to feature checks instead that are hopefully easier to
> > understand.
> 
> They do?  FWIW the tests/ext4 conversions look reasonable as a
> mechanical change to me, but I /was/ wondering what they'd think of this
> change.

Ted mentioned that's the preferred way in reply to v1 after he apparently
brought this up on some ext4 call.  I personally still think abusing
the ext4 dir for ext2/3 is stupid, but I don't care strongly enough to
fight.
Zorro Lang Feb. 2, 2025, 1:31 p.m. UTC | #3
On Tue, Jan 28, 2025 at 08:13:00AM +0100, Christoph Hellwig wrote:
> Tests don't require a list of supported file systems, as that is deducted
> from the test directory name.  Instead we exclude specific file systems
> from a few common tests, and specify which of ext2 and ext3 should
> actually also be tested after oddly multiplexing them into the ext4
> directory full of tests only working for ext4.
> 
> Replace _supported_fs with a new _exclude_fs that takes only a single
> file systems as the argument, making it easier to explain why the file
> system is not supported for the common test.  For ext4 this increases
> the existing mess even further, but the maintainers have a plan to
> move it to feature checks instead that are hopefully easier to
> understand.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---

generic/730 is missed:

  /var/lib/xfstests/tests/generic/370: line 31: _supported_fs: command not found

Anyway, I'll help to change g/370 when I merge this patch.

Thanks,
Zorro

>  common/rc         | 30 ++++++++----------------------
>  tests/ext4/001    |  4 +++-
>  tests/ext4/002    |  2 +-
>  tests/ext4/003    |  3 ++-
>  tests/ext4/004    |  3 ++-
>  tests/ext4/005    |  4 +++-
>  tests/ext4/006    |  3 ++-
>  tests/ext4/007    |  3 ++-
>  tests/ext4/008    |  3 ++-
>  tests/ext4/009    |  3 ++-
>  tests/ext4/010    |  3 ++-
>  tests/ext4/011    |  3 ++-
>  tests/ext4/012    |  3 ++-
>  tests/ext4/013    |  3 ++-
>  tests/ext4/014    |  3 ++-
>  tests/ext4/015    |  3 ++-
>  tests/ext4/016    |  3 ++-
>  tests/ext4/017    |  3 ++-
>  tests/ext4/018    |  3 ++-
>  tests/ext4/019    |  3 ++-
>  tests/ext4/020    |  4 +++-
>  tests/ext4/021    |  4 +++-
>  tests/ext4/022    |  4 +++-
>  tests/ext4/023    |  4 +++-
>  tests/ext4/024    |  4 +++-
>  tests/ext4/025    |  4 +++-
>  tests/ext4/026    |  4 +++-
>  tests/ext4/027    |  4 +++-
>  tests/ext4/028    |  4 +++-
>  tests/ext4/029    |  4 +++-
>  tests/ext4/030    |  4 +++-
>  tests/ext4/031    |  4 +++-
>  tests/ext4/032    |  3 ++-
>  tests/ext4/033    |  4 +++-
>  tests/ext4/034    |  3 ++-
>  tests/ext4/035    |  3 ++-
>  tests/ext4/036    |  3 ++-
>  tests/ext4/037    |  2 +-
>  tests/ext4/038    |  3 +--
>  tests/ext4/039    |  3 ++-
>  tests/ext4/040    |  1 -
>  tests/ext4/041    |  1 -
>  tests/ext4/042    |  3 ---
>  tests/ext4/043    |  2 +-
>  tests/ext4/044    |  4 +++-
>  tests/ext4/045    |  3 ++-
>  tests/ext4/046    |  3 ++-
>  tests/ext4/047    |  4 +++-
>  tests/ext4/048    |  3 ++-
>  tests/ext4/049    |  3 ++-
>  tests/ext4/050    |  3 ++-
>  tests/ext4/051    |  3 ++-
>  tests/ext4/052    |  3 ++-
>  tests/ext4/053    |  1 -
>  tests/ext4/054    |  4 +++-
>  tests/ext4/055    |  4 +++-
>  tests/ext4/056    |  4 +++-
>  tests/ext4/057    |  4 +++-
>  tests/ext4/058    |  4 +++-
>  tests/ext4/059    |  4 +++-
>  tests/ext4/060    |  4 +++-
>  tests/ext4/271    |  4 +++-
>  tests/ext4/301    |  4 +++-
>  tests/ext4/302    |  4 +++-
>  tests/ext4/303    |  4 +++-
>  tests/ext4/304    |  4 +++-
>  tests/ext4/305    |  3 ++-
>  tests/ext4/306    |  3 ++-
>  tests/ext4/307    |  4 +++-
>  tests/generic/187 |  8 +++++---
>  tests/generic/294 |  2 +-
>  tests/generic/357 |  2 +-
>  tests/generic/362 |  3 ++-
>  tests/generic/465 |  2 +-
>  tests/generic/500 |  2 +-
>  tests/generic/631 |  4 +++-
>  tests/generic/679 |  2 +-
>  tests/generic/699 |  3 ++-
>  tests/generic/732 |  4 +++-
>  tests/generic/740 |  7 ++++++-
>  80 files changed, 188 insertions(+), 106 deletions(-)
> 
> diff --git a/common/rc b/common/rc
> index c5421c9454fa..a38eaf52ab8e 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1769,30 +1769,16 @@ _fail()
>      exit 1
>  }
>  
> -# tests whether $FSTYP is one of the supported filesystems for a test
>  #
> -_check_supported_fs()
> -{
> -	local res=1
> -	local f
> -
> -	for f; do
> -		# ^FS means black listed fs
> -		if [ "$f" = "^$FSTYP" ]; then
> -			return 1
> -		elif [ "$f" = "generic" ] || [[ "$f" == "^"* ]]; then
> -			# ^FS implies "generic ^FS"
> -			res=0
> -		elif [ "$f" = "$FSTYP" ]; then
> -			return 0
> -		fi
> -	done
> -	return $res
> -}
> -
> -_supported_fs()
> +# Tests whether $FSTYP should be exclude from this test.
> +#
> +# In general this should be avoided in favor of feature tests, and when this
> +# helper has to be used, it should include a comment on why a specific file
> +# system is excluded.
> +#
> +_exclude_fs()
>  {
> -	_check_supported_fs $* || \
> +	[ "$1" = "$FSTYP" ] && \
>  		_notrun "not suitable for this filesystem type: $FSTYP"
>  }
>  
> diff --git a/tests/ext4/001 b/tests/ext4/001
> index 4575cf6973bb..1990746aa587 100755
> --- a/tests/ext4/001
> +++ b/tests/ext4/001
> @@ -14,7 +14,9 @@ _begin_fstest auto prealloc quick zero fiemap
>  . ./common/filter
>  . ./common/punch
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_xfs_io_command "falloc"
>  _require_xfs_io_command "fzero"
>  _require_test
> diff --git a/tests/ext4/002 b/tests/ext4/002
> index 9c6eb5a04136..6c1e1d926973 100755
> --- a/tests/ext4/002
> +++ b/tests/ext4/002
> @@ -29,7 +29,7 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4 ext3
> +_exclude_fs ext2
>  
>  _require_scratch_nocheck
>  _require_scratch_shutdown
> diff --git a/tests/ext4/003 b/tests/ext4/003
> index e2b588d88849..e752a769603f 100755
> --- a/tests/ext4/003
> +++ b/tests/ext4/003
> @@ -20,7 +20,8 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_scratch_ext4_feature "bigalloc"
> diff --git a/tests/ext4/004 b/tests/ext4/004
> index ab2f838e9fac..4e6c4a75f601 100755
> --- a/tests/ext4/004
> +++ b/tests/ext4/004
> @@ -43,7 +43,8 @@ workout()
>  	rm -rf restoresymtable
>  }
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_test
>  _require_scratch
> diff --git a/tests/ext4/005 b/tests/ext4/005
> index a271fbbf641a..b581ac1cacb9 100755
> --- a/tests/ext4/005
> +++ b/tests/ext4/005
> @@ -17,7 +17,9 @@ _begin_fstest auto quick metadata ioctl rw
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_command "$CHATTR_PROG" chattr
>  
> diff --git a/tests/ext4/006 b/tests/ext4/006
> index d78620731148..2ece22a4bd1e 100755
> --- a/tests/ext4/006
> +++ b/tests/ext4/006
> @@ -28,7 +28,8 @@ if [ ! -x "$(type -P e2fuzz)" ]; then
>  	_notrun "Couldn't find e2fuzz"
>  fi
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_attrs
> diff --git a/tests/ext4/007 b/tests/ext4/007
> index deedbd9e8fb3..39c9427c5257 100755
> --- a/tests/ext4/007
> +++ b/tests/ext4/007
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/008 b/tests/ext4/008
> index b4b20ac10d6d..1ca6d90e0c3d 100755
> --- a/tests/ext4/008
> +++ b/tests/ext4/008
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/009 b/tests/ext4/009
> index 06a42fd77ffa..71e59f90e4b8 100755
> --- a/tests/ext4/009
> +++ b/tests/ext4/009
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_xfs_io_command "falloc"
>  _require_scratch
> diff --git a/tests/ext4/010 b/tests/ext4/010
> index 1139c79e80d5..dec08a62cdf0 100755
> --- a/tests/ext4/010
> +++ b/tests/ext4/010
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_dumpe2fs
> diff --git a/tests/ext4/011 b/tests/ext4/011
> index cae4fb6b8476..e135ae4cefac 100755
> --- a/tests/ext4/011
> +++ b/tests/ext4/011
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/012 b/tests/ext4/012
> index f7f2b0fb4557..9a420bd3c696 100755
> --- a/tests/ext4/012
> +++ b/tests/ext4/012
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/013 b/tests/ext4/013
> index 7d2a9154a669..343a8e65cfce 100755
> --- a/tests/ext4/013
> +++ b/tests/ext4/013
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/014 b/tests/ext4/014
> index ffed795ad4e9..870f7ef911a2 100755
> --- a/tests/ext4/014
> +++ b/tests/ext4/014
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/015 b/tests/ext4/015
> index 81feda5c9423..08e669584c6b 100755
> --- a/tests/ext4/015
> +++ b/tests/ext4/015
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_xfs_io_command "falloc"
>  _require_xfs_io_command "fpunch"
> diff --git a/tests/ext4/016 b/tests/ext4/016
> index b7db4cfda649..925f39d15ad2 100755
> --- a/tests/ext4/016
> +++ b/tests/ext4/016
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/017 b/tests/ext4/017
> index fc867442c3da..f081900a9a1e 100755
> --- a/tests/ext4/017
> +++ b/tests/ext4/017
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/018 b/tests/ext4/018
> index f7377f059fb8..5999837a9db1 100755
> --- a/tests/ext4/018
> +++ b/tests/ext4/018
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/019 b/tests/ext4/019
> index 987972a80a37..dc8243961ee0 100755
> --- a/tests/ext4/019
> +++ b/tests/ext4/019
> @@ -21,7 +21,8 @@ _cleanup()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
> diff --git a/tests/ext4/020 b/tests/ext4/020
> index a2fb60fa8cc6..c2a188e4cdae 100755
> --- a/tests/ext4/020
> +++ b/tests/ext4/020
> @@ -17,7 +17,9 @@ _begin_fstest auto quick ioctl rw defrag
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  
> diff --git a/tests/ext4/021 b/tests/ext4/021
> index d69dc584dc58..337470e0ca6b 100755
> --- a/tests/ext4/021
> +++ b/tests/ext4/021
> @@ -12,7 +12,9 @@ _begin_fstest auto quick
>  
>  # Import common functions.
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_dumpe2fs
>  
> diff --git a/tests/ext4/022 b/tests/ext4/022
> index 6b74ff892a35..eb04cc9d9000 100755
> --- a/tests/ext4/022
> +++ b/tests/ext4/022
> @@ -18,7 +18,9 @@ do_setfattr()
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_dumpe2fs
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/023 b/tests/ext4/023
> index b5217da33f15..335a4bfff96d 100755
> --- a/tests/ext4/023
> +++ b/tests/ext4/023
> @@ -18,7 +18,9 @@ _register_cleanup "_cleanup" BUS
>  . ./common/populate
>  . ./common/fuzzy
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  
>  echo "Format and populate"
> diff --git a/tests/ext4/024 b/tests/ext4/024
> index e58cb9918f25..f3c028adda68 100755
> --- a/tests/ext4/024
> +++ b/tests/ext4/024
> @@ -13,7 +13,9 @@ _begin_fstest auto quick encrypt dangerous
>  # get standard environment and checks
>  . ./common/encrypt
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_encryption
>  _require_command "$KEYCTL_PROG" keyctl
>  
> diff --git a/tests/ext4/025 b/tests/ext4/025
> index ce3a3d21969b..640285a25a53 100755
> --- a/tests/ext4/025
> +++ b/tests/ext4/025
> @@ -13,7 +13,9 @@ _begin_fstest auto quick fuzzers dangerous
>  # get standard environment and checks
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
>  _require_command "$DEBUGFS_PROG" debugfs
>  _require_scratch_ext4_feature "bigalloc,meta_bg,^resize_inode"
> diff --git a/tests/ext4/026 b/tests/ext4/026
> index 5bb2add23036..f29ff5a97688 100755
> --- a/tests/ext4/026
> +++ b/tests/ext4/026
> @@ -16,7 +16,9 @@ _begin_fstest auto quick attr
>  . ./common/filter
>  . ./common/attr
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_attrs
>  _require_scratch_ext4_feature "ea_inode"
> diff --git a/tests/ext4/027 b/tests/ext4/027
> index 93de00f29481..8f89062afd0a 100755
> --- a/tests/ext4/027
> +++ b/tests/ext4/027
> @@ -19,7 +19,9 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_xfs_io_command "fsmap"
>  
> diff --git a/tests/ext4/028 b/tests/ext4/028
> index 30f3c4480c7c..1b8855098f82 100755
> --- a/tests/ext4/028
> +++ b/tests/ext4/028
> @@ -20,7 +20,9 @@ _cleanup()
>  . ./common/filter
>  . ./common/populate
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_populate_commands
>  _require_xfs_io_command "fsmap"
> diff --git a/tests/ext4/029 b/tests/ext4/029
> index 8a6969d2aaef..1915aaa67a74 100755
> --- a/tests/ext4/029
> +++ b/tests/ext4/029
> @@ -19,7 +19,9 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_logdev
>  _require_scratch
>  _require_xfs_io_command "fsmap"
> diff --git a/tests/ext4/030 b/tests/ext4/030
> index 80f34ccf3e49..5eec9d353a8e 100755
> --- a/tests/ext4/030
> +++ b/tests/ext4/030
> @@ -15,7 +15,9 @@ _begin_fstest auto quick dax
>  . ./common/filter
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_dax_mountopt "dax"
>  _require_test_program "t_ext4_dax_journal_corruption"
>  _require_command "$CHATTR_PROG" chattr
> diff --git a/tests/ext4/031 b/tests/ext4/031
> index b583f825162f..330804d39688 100755
> --- a/tests/ext4/031
> +++ b/tests/ext4/031
> @@ -19,7 +19,9 @@ SAVE_MOUNT_OPTIONS="$MOUNT_OPTIONS"
>  MOUNT_OPTIONS=""
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_dax_mountopt "dax"
>  _require_test_program "t_ext4_dax_inline_corruption"
>  _require_scratch_ext4_feature "inline_data"
> diff --git a/tests/ext4/032 b/tests/ext4/032
> index 238ab178363c..690fcf066c11 100755
> --- a/tests/ext4/032
> +++ b/tests/ext4/032
> @@ -83,7 +83,8 @@ _cleanup()
>  
>  # get standard environment and checks
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_loop
>  _require_scratch
> diff --git a/tests/ext4/033 b/tests/ext4/033
> index 53f7106e2c6b..3827ab5c52ad 100755
> --- a/tests/ext4/033
> +++ b/tests/ext4/033
> @@ -24,7 +24,9 @@ _cleanup()
>  . ./common/filter
>  . ./common/dmhugedisk
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
>  _require_dmhugedisk
>  _require_dumpe2fs
> diff --git a/tests/ext4/034 b/tests/ext4/034
> index cdd2e553f534..c4ae807519d6 100755
> --- a/tests/ext4/034
> +++ b/tests/ext4/034
> @@ -19,7 +19,8 @@ _begin_fstest auto quick quota fiemap prealloc
>  
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _require_quota
>  _require_nobody
> diff --git a/tests/ext4/035 b/tests/ext4/035
> index cf221c5adb7d..fe2a74680f01 100755
> --- a/tests/ext4/035
> +++ b/tests/ext4/035
> @@ -19,7 +19,8 @@ _begin_fstest auto quick resize
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _exclude_scratch_mount_option dax
>  _require_command "$RESIZE2FS_PROG" resize2fs
> diff --git a/tests/ext4/036 b/tests/ext4/036
> index 045fe82ff956..4a1471fd4cb5 100755
> --- a/tests/ext4/036
> +++ b/tests/ext4/036
> @@ -15,7 +15,8 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
> +
>  _require_scratch
>  
>  echo "Silence is golden"
> diff --git a/tests/ext4/037 b/tests/ext4/037
> index ac309d67aac5..dea02a79927a 100755
> --- a/tests/ext4/037
> +++ b/tests/ext4/037
> @@ -15,7 +15,7 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
>  
>  # nofsck as we modify sb via debugfs
>  _require_scratch_nocheck
> diff --git a/tests/ext4/038 b/tests/ext4/038
> index b594bd9cb2e2..07b090b11f13 100755
> --- a/tests/ext4/038
> +++ b/tests/ext4/038
> @@ -10,9 +10,8 @@
>  . ./common/preamble
>  _begin_fstest auto quick
>  
> -# Import common functions.
> +_exclude_fs ext2
>  
> -_supported_fs ext3 ext4
>  _require_scratch
>  _require_command "$DEBUGFS_PROG" debugfs
>  
> diff --git a/tests/ext4/039 b/tests/ext4/039
> index 2830740eb3cf..2e99c8ff9ffd 100755
> --- a/tests/ext4/039
> +++ b/tests/ext4/039
> @@ -56,7 +56,8 @@ chattr_opt: $chattr_opt" >>$seqres.full
>  	done
>  }
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
> +
>  _require_scratch
>  _exclude_scratch_mount_option dax
>  
> diff --git a/tests/ext4/040 b/tests/ext4/040
> index 5760058ad7d4..f22c655b4909 100755
> --- a/tests/ext4/040
> +++ b/tests/ext4/040
> @@ -21,7 +21,6 @@ PIDS=""
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext2 ext3 ext4
>  _require_scratch_nocheck
>  _disable_dmesg_check
>  _require_command "$DEBUGFS_PROG"
> diff --git a/tests/ext4/041 b/tests/ext4/041
> index 76513db3f887..3df1b9db803d 100755
> --- a/tests/ext4/041
> +++ b/tests/ext4/041
> @@ -21,7 +21,6 @@ PIDS=""
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext2 ext3 ext4
>  _require_scratch_nocheck
>  _disable_dmesg_check
>  _require_command "$DEBUGFS_PROG"
> diff --git a/tests/ext4/042 b/tests/ext4/042
> index 0d97f6de4c2a..61fe948f2b61 100755
> --- a/tests/ext4/042
> +++ b/tests/ext4/042
> @@ -12,9 +12,6 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -
> -# Modify as appropriate.
> -_supported_fs ext2 ext3 ext4
>  _require_scratch
>  
>  _scratch_mkfs >> $seqres.full 2>&1
> diff --git a/tests/ext4/043 b/tests/ext4/043
> index 0bbbb42ac41d..8d124ba36f72 100755
> --- a/tests/ext4/043
> +++ b/tests/ext4/043
> @@ -12,7 +12,7 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext3 ext4
> +_exclude_fs ext2
>  
>  _require_scratch
>  _require_test_program "t_get_file_time"
> diff --git a/tests/ext4/044 b/tests/ext4/044
> index 53006514dc72..cd52f0d741e0 100755
> --- a/tests/ext4/044
> +++ b/tests/ext4/044
> @@ -12,7 +12,9 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_test_program "t_get_file_time"
>  _require_metadata_journaling
> diff --git a/tests/ext4/045 b/tests/ext4/045
> index 587bedece4e1..15b2541ee342 100755
> --- a/tests/ext4/045
> +++ b/tests/ext4/045
> @@ -16,7 +16,8 @@ LONG_DIR=2
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_scratch_ext4_feature large_dir
> diff --git a/tests/ext4/046 b/tests/ext4/046
> index 5c2100ce9253..60d33550e3db 100755
> --- a/tests/ext4/046
> +++ b/tests/ext4/046
> @@ -16,7 +16,8 @@ _begin_fstest auto prealloc quick
>  . ./common/filter
>  
>  _require_check_dmesg
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _require_xfs_io_command "falloc"
>  _require_scratch_size $((6 * 1024 * 1024)) #kB
> diff --git a/tests/ext4/047 b/tests/ext4/047
> index f67b615ab082..b7df1ede4805 100755
> --- a/tests/ext4/047
> +++ b/tests/ext4/047
> @@ -13,7 +13,9 @@ _begin_fstest auto quick dax
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_dax_mountopt "dax=always"
>  _require_dax_iflag
>  _require_scratch_ext4_feature "inline_data"
> diff --git a/tests/ext4/048 b/tests/ext4/048
> index 99a2c7b8fe4d..2031c8c8933d 100755
> --- a/tests/ext4/048
> +++ b/tests/ext4/048
> @@ -13,7 +13,8 @@ _begin_fstest auto quick dir
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/049 b/tests/ext4/049
> index 5b24e632a73b..075408e0b867 100755
> --- a/tests/ext4/049
> +++ b/tests/ext4/049
> @@ -13,7 +13,8 @@ _begin_fstest auto quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  
>  sdev=$(_short_dev ${SCRATCH_DEV})
> diff --git a/tests/ext4/050 b/tests/ext4/050
> index 6ba0038e71f2..99e824898e0f 100755
> --- a/tests/ext4/050
> +++ b/tests/ext4/050
> @@ -13,7 +13,8 @@ _begin_fstest auto ioctl quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/051 b/tests/ext4/051
> index a1e35fa323d3..728ad19bfcec 100755
> --- a/tests/ext4/051
> +++ b/tests/ext4/051
> @@ -12,7 +12,8 @@
>  . ./common/preamble
>  _begin_fstest auto rw quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_scratch
>  _require_scratch_shutdown
>  _require_command "$TUNE2FS_PROG" tune2fs
> diff --git a/tests/ext4/052 b/tests/ext4/052
> index edcdc02515f7..0df8a651383e 100755
> --- a/tests/ext4/052
> +++ b/tests/ext4/052
> @@ -29,7 +29,8 @@ _cleanup()
>  
>  
>  # Modify as appropriate.
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  _require_test
>  _require_loop
>  _require_test_program "dirstress"
> diff --git a/tests/ext4/053 b/tests/ext4/053
> index 4f20d217d5fd..5922ed571d8a 100755
> --- a/tests/ext4/053
> +++ b/tests/ext4/053
> @@ -39,7 +39,6 @@ echo "Silence is golden."
>  SIZE=$((1024 * 1024))	# 1GB in KB
>  LOGSIZE=$((10 *1024))	# 10MB in KB
>  
> -_supported_fs ext2 ext3 ext4
>  _require_scratch_size $SIZE
>  _require_quota
>  _require_loop
> diff --git a/tests/ext4/054 b/tests/ext4/054
> index 0dbe83640072..458eed6a7072 100755
> --- a/tests/ext4/054
> +++ b/tests/ext4/054
> @@ -17,7 +17,9 @@ _begin_fstest auto quick dangerous_fuzzers prealloc punch
>  # Import common functions
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
>  _require_xfs_io_command "falloc"
>  _require_xfs_io_command "pwrite"
> diff --git a/tests/ext4/055 b/tests/ext4/055
> index e1815c23727a..3117bf15f9f0 100755
> --- a/tests/ext4/055
> +++ b/tests/ext4/055
> @@ -16,8 +16,10 @@
>  . ./common/preamble
>  _begin_fstest auto quota
>  
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_nocheck
> -_supported_fs ext4
>  _require_user fsgqa
>  _require_user fsgqa2
>  _require_command "$DEBUGFS_PROG" debugfs
> diff --git a/tests/ext4/056 b/tests/ext4/056
> index 8a290b11d697..fb5bbe93e972 100755
> --- a/tests/ext4/056
> +++ b/tests/ext4/056
> @@ -26,7 +26,9 @@ ONLINE_RESIZE_BLOCK_LIMIT=$((256*1024*1024))
>  
>  STOP_ITER=255   # Arbitrary return code
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch_size $(($RESIZED_FS_SIZE/1024))
>  _require_test_program "ext4_resize"
>  
> diff --git a/tests/ext4/057 b/tests/ext4/057
> index 73cdf941a181..2be46223538f 100755
> --- a/tests/ext4/057
> +++ b/tests/ext4/057
> @@ -11,7 +11,9 @@ _begin_fstest auto ioctl
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_test_program uuid_ioctl
>  _require_command $UUIDGEN_PROG uuidgen
> diff --git a/tests/ext4/058 b/tests/ext4/058
> index f853649644db..9a2c3aa59ba8 100755
> --- a/tests/ext4/058
> +++ b/tests/ext4/058
> @@ -13,7 +13,9 @@
>  . ./common/preamble
>  _begin_fstest auto quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _fixed_by_kernel_commit a08f789d2ab5 \
>  	"ext4: fix bug_on ext4_mb_use_inode_pa"
>  _require_scratch
> diff --git a/tests/ext4/059 b/tests/ext4/059
> index 50e788f0a169..7ea7ff92744d 100755
> --- a/tests/ext4/059
> +++ b/tests/ext4/059
> @@ -11,7 +11,9 @@
>  . ./common/preamble
>  _begin_fstest auto resize quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _fixed_by_kernel_commit b55c3cd102a6 \
>  	"ext4: add reserved GDT blocks check"
>  
> diff --git a/tests/ext4/060 b/tests/ext4/060
> index 38d1c8f7b672..b8cc542fd242 100755
> --- a/tests/ext4/060
> +++ b/tests/ext4/060
> @@ -14,7 +14,9 @@
>  . ./common/preamble
>  _begin_fstest auto resize quick
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _fixed_by_kernel_commit a6b3bfe176e8 \
>  	"ext4: fix corruption during on-line resize"
>  
> diff --git a/tests/ext4/271 b/tests/ext4/271
> index 6d60f40d3d25..5535384742ee 100755
> --- a/tests/ext4/271
> +++ b/tests/ext4/271
> @@ -12,7 +12,9 @@ _begin_fstest auto rw quick
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  # this test needs no journal to be loaded, skip on journal related mount
>  # options, otherwise mount would fail with "-o noload" mount option
> diff --git a/tests/ext4/301 b/tests/ext4/301
> index dd0c7d483761..abf47d4b7ece 100755
> --- a/tests/ext4/301
> +++ b/tests/ext4/301
> @@ -15,7 +15,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/302 b/tests/ext4/302
> index d73cf9bf84da..87820184e30f 100755
> --- a/tests/ext4/302
> +++ b/tests/ext4/302
> @@ -16,7 +16,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/303 b/tests/ext4/303
> index d9be45674e40..2381f0477082 100755
> --- a/tests/ext4/303
> +++ b/tests/ext4/303
> @@ -16,7 +16,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/304 b/tests/ext4/304
> index 208b8a2ac119..53b522ee85bd 100755
> --- a/tests/ext4/304
> +++ b/tests/ext4/304
> @@ -17,7 +17,9 @@ fio_config=$tmp.fio
>  . ./common/filter
>  . ./common/defrag
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_odirect
> diff --git a/tests/ext4/305 b/tests/ext4/305
> index acada44bc75a..35dae5571b55 100755
> --- a/tests/ext4/305
> +++ b/tests/ext4/305
> @@ -22,7 +22,8 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  
> diff --git a/tests/ext4/306 b/tests/ext4/306
> index b5147caf547e..b0e08f65ea24 100755
> --- a/tests/ext4/306
> +++ b/tests/ext4/306
> @@ -22,7 +22,8 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
>  
>  _require_scratch
>  _require_command "$RESIZE2FS_PROG" resize2fs
> diff --git a/tests/ext4/307 b/tests/ext4/307
> index 8361f04312b2..1f0e42ca2638 100755
> --- a/tests/ext4/307
> +++ b/tests/ext4/307
> @@ -34,7 +34,9 @@ _workout()
>  	run_check md5sum -c $out.md5sum
>  }
>  
> -_supported_fs ext4
> +_exclude_fs ext2
> +_exclude_fs ext3
> +
>  _require_scratch
>  _require_defrag
>  _require_xfs_io_command "falloc"
> diff --git a/tests/generic/187 b/tests/generic/187
> index 2a06aff35e58..536ce9fa9ab8 100755
> --- a/tests/generic/187
> +++ b/tests/generic/187
> @@ -28,10 +28,12 @@ _cleanup()
>  . ./common/filter
>  . ./common/reflink
>  
> +# btrfs can't fragment free space.
> +_exclude_fs btrfs
> +
> +# This test is unreliable on NFS, as it depends on the exported filesystem.
> +_exclude_fs nfs
>  
> -# btrfs can't fragment free space. This test is unreliable on NFS, as it
> -# depends on the exported filesystem.
> -_supported_fs ^btrfs ^nfs
>  _require_scratch_reflink
>  _require_cp_reflink
>  _require_xfs_io_command "falloc"
> diff --git a/tests/generic/294 b/tests/generic/294
> index 54b89a26294f..b07459116371 100755
> --- a/tests/generic/294
> +++ b/tests/generic/294
> @@ -16,7 +16,7 @@ _begin_fstest auto quick
>  
>  # NFS will optimize away the on-the-wire lookup before attempting to
>  # create a new file (since that means an extra round trip).
> -_supported_fs ^nfs
> +_exclude_fs nfs
>  
>  _require_scratch
>  _require_symlinks
> diff --git a/tests/generic/357 b/tests/generic/357
> index 8db31f8b0432..51c6d5efd2d7 100755
> --- a/tests/generic/357
> +++ b/tests/generic/357
> @@ -26,7 +26,7 @@ _cleanup()
>  
>  # For NFS, a reflink is just a CLONE operation, and after that
>  # point it's dealt with by the server.
> -_supported_fs ^nfs
> +_exclude_fs nfs
>  
>  _require_scratch_swapfile
>  _require_scratch_reflink
> diff --git a/tests/generic/362 b/tests/generic/362
> index 2396ec7d3a57..3a1993e81d4b 100755
> --- a/tests/generic/362
> +++ b/tests/generic/362
> @@ -11,7 +11,8 @@
>  _begin_fstest auto quick
>  
>  # NFS forbade open with O_APPEND|O_DIRECT
> -_supported_fs ^nfs
> +_exclude_fs nfs
> +
>  _require_test
>  _require_odirect
>  _require_test_program dio-append-buf-fault
> diff --git a/tests/generic/465 b/tests/generic/465
> index f8c4ea9671a2..5b49040e3ad0 100755
> --- a/tests/generic/465
> +++ b/tests/generic/465
> @@ -20,7 +20,7 @@ _cleanup()
>  # Import common functions.
>  . ./common/filter
>  
> -_supported_fs ^nfs
> +_exclude_fs nfs
>  
>  _require_aiodio aio-dio-append-write-read-race
>  _require_test_program "feature"
> diff --git a/tests/generic/500 b/tests/generic/500
> index ba6e902ec96b..c5492a09246c 100755
> --- a/tests/generic/500
> +++ b/tests/generic/500
> @@ -41,7 +41,7 @@ _require_dm_target thin-pool
>  # and since we've filled the thinp device it'll return EIO, which will make
>  # btrfs flip read only, making it fail this test when it just won't work right
>  # for us in the first place.
> -_supported_fs ^btrfs
> +_exclude_fs btrfs
>  
>  # Require underlying device support discard
>  _scratch_mkfs >>$seqres.full 2>&1
> diff --git a/tests/generic/631 b/tests/generic/631
> index 642d47863987..8e2cf9c63b77 100755
> --- a/tests/generic/631
> +++ b/tests/generic/631
> @@ -37,8 +37,10 @@ _cleanup()
>  
>  _require_scratch
>  _require_attrs trusted
> -_supported_fs ^overlay
> +
> +_exclude_fs overlay
>  _require_extra_fs overlay
> +
>  _fixed_by_kernel_commit 6da1b4b1ab36 \
>  	"xfs: fix an ABBA deadlock in xfs_rename"
>  
> diff --git a/tests/generic/679 b/tests/generic/679
> index 4c74101c5834..741ddf21502f 100755
> --- a/tests/generic/679
> +++ b/tests/generic/679
> @@ -23,7 +23,7 @@ _require_xfs_io_command "fiemap"
>  #
>  #   https://lore.kernel.org/linux-btrfs/20220315164011.GF8241@magnolia/
>  #
> -_supported_fs ^xfs
> +_exclude_fs xfs
>  
>  rm -f $seqres.full
>  
> diff --git a/tests/generic/699 b/tests/generic/699
> index 3079a861df74..620a40aa3921 100755
> --- a/tests/generic/699
> +++ b/tests/generic/699
> @@ -21,8 +21,9 @@ _cleanup()
>  	rm -r -f $tmp.*
>  }
>  
> -_supported_fs ^overlay
> +_exclude_fs overlay
>  _require_extra_fs overlay
> +
>  _require_scratch
>  _require_chown
>  _require_idmapped_mounts
> diff --git a/tests/generic/732 b/tests/generic/732
> index e907a009fe16..83caa0bc915c 100755
> --- a/tests/generic/732
> +++ b/tests/generic/732
> @@ -24,7 +24,9 @@ _cleanup()
>  # This case give a assumption that the same mount options for
>  # different mount point will share the same superblock, which won't
>  # sucess for the follow fs.
> -_supported_fs ^nfs ^overlay ^tmpfs
> +_exclude_fs nfs
> +_exclude_fs overlay
> +_exclude_fs tmpfs
>  
>  _require_test
>  _require_scratch
> diff --git a/tests/generic/740 b/tests/generic/740
> index 903e891db0fd..10817521cc93 100755
> --- a/tests/generic/740
> +++ b/tests/generic/740
> @@ -14,7 +14,12 @@ _begin_fstest mkfs auto quick
>  
>  # a bunch of file systems don't support foreign fs detection
>  # ext* do support it, but disable the feature when called non-interactively
> -_supported_fs ^ext2 ^ext3 ^ext4 ^jfs ^ocfs2 ^udf
> +_exclude_fs ext2
> +_exclude_fs ext3
> +_exclude_fs ext4
> +_exclude_fs jfs
> +_exclude_fs ocfs2
> +_exclude_fs udf
>  
>  _require_block_device "${SCRATCH_DEV}"
>  # not all the FS support zoned block device
> -- 
> 2.45.2
> 
>
Christoph Hellwig Feb. 3, 2025, 6:40 a.m. UTC | #4
On Sun, Feb 02, 2025 at 09:31:01PM +0800, Zorro Lang wrote:
> generic/730 is missed:
> 
>   /var/lib/xfstests/tests/generic/370: line 31: _supported_fs: command not found
> 
> Anyway, I'll help to change g/370 when I merge this patch.

generic/730 didn't exist when I submitted this series, you applied
it in the same batch of patches.

But it really should not skip xfs to start with.  Either the test
is correct and XFS should fail it (and get fixed) or the test is
incorrect and it should not be added.  I suspect it is the former
and I'll look into fixing it.

As added in the comments in this series we should never add a
_exclude_fs without a very good reason and comment explaining it.
Zorro Lang Feb. 4, 2025, 5:36 p.m. UTC | #5
On Mon, Feb 03, 2025 at 07:40:29AM +0100, Christoph Hellwig wrote:
> On Sun, Feb 02, 2025 at 09:31:01PM +0800, Zorro Lang wrote:
> > generic/730 is missed:
> > 
> >   /var/lib/xfstests/tests/generic/370: line 31: _supported_fs: command not found
> > 
> > Anyway, I'll help to change g/370 when I merge this patch.
> 
> generic/730 didn't exist when I submitted this series, you applied
> it in the same batch of patches.

Yeah, sorry it's from another patch which was in the same fstests release
with  yours :) I've fix this "conflict" and pushed, please refer to the
latest for-next branch.

Thanks,
Zorro

> 
> But it really should not skip xfs to start with.  Either the test
> is correct and XFS should fail it (and get fixed) or the test is
> incorrect and it should not be added.  I suspect it is the former
> and I'll look into fixing it.
> 
> As added in the comments in this series we should never add a
> _exclude_fs without a very good reason and comment explaining it.
>
diff mbox series

Patch

diff --git a/common/rc b/common/rc
index c5421c9454fa..a38eaf52ab8e 100644
--- a/common/rc
+++ b/common/rc
@@ -1769,30 +1769,16 @@  _fail()
     exit 1
 }
 
-# tests whether $FSTYP is one of the supported filesystems for a test
 #
-_check_supported_fs()
-{
-	local res=1
-	local f
-
-	for f; do
-		# ^FS means black listed fs
-		if [ "$f" = "^$FSTYP" ]; then
-			return 1
-		elif [ "$f" = "generic" ] || [[ "$f" == "^"* ]]; then
-			# ^FS implies "generic ^FS"
-			res=0
-		elif [ "$f" = "$FSTYP" ]; then
-			return 0
-		fi
-	done
-	return $res
-}
-
-_supported_fs()
+# Tests whether $FSTYP should be exclude from this test.
+#
+# In general this should be avoided in favor of feature tests, and when this
+# helper has to be used, it should include a comment on why a specific file
+# system is excluded.
+#
+_exclude_fs()
 {
-	_check_supported_fs $* || \
+	[ "$1" = "$FSTYP" ] && \
 		_notrun "not suitable for this filesystem type: $FSTYP"
 }
 
diff --git a/tests/ext4/001 b/tests/ext4/001
index 4575cf6973bb..1990746aa587 100755
--- a/tests/ext4/001
+++ b/tests/ext4/001
@@ -14,7 +14,9 @@  _begin_fstest auto prealloc quick zero fiemap
 . ./common/filter
 . ./common/punch
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_xfs_io_command "falloc"
 _require_xfs_io_command "fzero"
 _require_test
diff --git a/tests/ext4/002 b/tests/ext4/002
index 9c6eb5a04136..6c1e1d926973 100755
--- a/tests/ext4/002
+++ b/tests/ext4/002
@@ -29,7 +29,7 @@  _cleanup()
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4 ext3
+_exclude_fs ext2
 
 _require_scratch_nocheck
 _require_scratch_shutdown
diff --git a/tests/ext4/003 b/tests/ext4/003
index e2b588d88849..e752a769603f 100755
--- a/tests/ext4/003
+++ b/tests/ext4/003
@@ -20,7 +20,8 @@  _cleanup()
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 _require_scratch_ext4_feature "bigalloc"
diff --git a/tests/ext4/004 b/tests/ext4/004
index ab2f838e9fac..4e6c4a75f601 100755
--- a/tests/ext4/004
+++ b/tests/ext4/004
@@ -43,7 +43,8 @@  workout()
 	rm -rf restoresymtable
 }
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_test
 _require_scratch
diff --git a/tests/ext4/005 b/tests/ext4/005
index a271fbbf641a..b581ac1cacb9 100755
--- a/tests/ext4/005
+++ b/tests/ext4/005
@@ -17,7 +17,9 @@  _begin_fstest auto quick metadata ioctl rw
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_command "$CHATTR_PROG" chattr
 
diff --git a/tests/ext4/006 b/tests/ext4/006
index d78620731148..2ece22a4bd1e 100755
--- a/tests/ext4/006
+++ b/tests/ext4/006
@@ -28,7 +28,8 @@  if [ ! -x "$(type -P e2fuzz)" ]; then
 	_notrun "Couldn't find e2fuzz"
 fi
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 _require_attrs
diff --git a/tests/ext4/007 b/tests/ext4/007
index deedbd9e8fb3..39c9427c5257 100755
--- a/tests/ext4/007
+++ b/tests/ext4/007
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/008 b/tests/ext4/008
index b4b20ac10d6d..1ca6d90e0c3d 100755
--- a/tests/ext4/008
+++ b/tests/ext4/008
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/009 b/tests/ext4/009
index 06a42fd77ffa..71e59f90e4b8 100755
--- a/tests/ext4/009
+++ b/tests/ext4/009
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_xfs_io_command "falloc"
 _require_scratch
diff --git a/tests/ext4/010 b/tests/ext4/010
index 1139c79e80d5..dec08a62cdf0 100755
--- a/tests/ext4/010
+++ b/tests/ext4/010
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 _require_dumpe2fs
diff --git a/tests/ext4/011 b/tests/ext4/011
index cae4fb6b8476..e135ae4cefac 100755
--- a/tests/ext4/011
+++ b/tests/ext4/011
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/012 b/tests/ext4/012
index f7f2b0fb4557..9a420bd3c696 100755
--- a/tests/ext4/012
+++ b/tests/ext4/012
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/013 b/tests/ext4/013
index 7d2a9154a669..343a8e65cfce 100755
--- a/tests/ext4/013
+++ b/tests/ext4/013
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/014 b/tests/ext4/014
index ffed795ad4e9..870f7ef911a2 100755
--- a/tests/ext4/014
+++ b/tests/ext4/014
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/015 b/tests/ext4/015
index 81feda5c9423..08e669584c6b 100755
--- a/tests/ext4/015
+++ b/tests/ext4/015
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_xfs_io_command "falloc"
 _require_xfs_io_command "fpunch"
diff --git a/tests/ext4/016 b/tests/ext4/016
index b7db4cfda649..925f39d15ad2 100755
--- a/tests/ext4/016
+++ b/tests/ext4/016
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/017 b/tests/ext4/017
index fc867442c3da..f081900a9a1e 100755
--- a/tests/ext4/017
+++ b/tests/ext4/017
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/018 b/tests/ext4/018
index f7377f059fb8..5999837a9db1 100755
--- a/tests/ext4/018
+++ b/tests/ext4/018
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/019 b/tests/ext4/019
index 987972a80a37..dc8243961ee0 100755
--- a/tests/ext4/019
+++ b/tests/ext4/019
@@ -21,7 +21,8 @@  _cleanup()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 test -n "${FORCE_FUZZ}" || _require_scratch_ext4_crc
diff --git a/tests/ext4/020 b/tests/ext4/020
index a2fb60fa8cc6..c2a188e4cdae 100755
--- a/tests/ext4/020
+++ b/tests/ext4/020
@@ -17,7 +17,9 @@  _begin_fstest auto quick ioctl rw defrag
 . ./common/filter
 . ./common/defrag
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_defrag
 
diff --git a/tests/ext4/021 b/tests/ext4/021
index d69dc584dc58..337470e0ca6b 100755
--- a/tests/ext4/021
+++ b/tests/ext4/021
@@ -12,7 +12,9 @@  _begin_fstest auto quick
 
 # Import common functions.
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_dumpe2fs
 
diff --git a/tests/ext4/022 b/tests/ext4/022
index 6b74ff892a35..eb04cc9d9000 100755
--- a/tests/ext4/022
+++ b/tests/ext4/022
@@ -18,7 +18,9 @@  do_setfattr()
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_dumpe2fs
 _require_command "$DEBUGFS_PROG" debugfs
diff --git a/tests/ext4/023 b/tests/ext4/023
index b5217da33f15..335a4bfff96d 100755
--- a/tests/ext4/023
+++ b/tests/ext4/023
@@ -18,7 +18,9 @@  _register_cleanup "_cleanup" BUS
 . ./common/populate
 . ./common/fuzzy
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 
 echo "Format and populate"
diff --git a/tests/ext4/024 b/tests/ext4/024
index e58cb9918f25..f3c028adda68 100755
--- a/tests/ext4/024
+++ b/tests/ext4/024
@@ -13,7 +13,9 @@  _begin_fstest auto quick encrypt dangerous
 # get standard environment and checks
 . ./common/encrypt
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_encryption
 _require_command "$KEYCTL_PROG" keyctl
 
diff --git a/tests/ext4/025 b/tests/ext4/025
index ce3a3d21969b..640285a25a53 100755
--- a/tests/ext4/025
+++ b/tests/ext4/025
@@ -13,7 +13,9 @@  _begin_fstest auto quick fuzzers dangerous
 # get standard environment and checks
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_nocheck
 _require_command "$DEBUGFS_PROG" debugfs
 _require_scratch_ext4_feature "bigalloc,meta_bg,^resize_inode"
diff --git a/tests/ext4/026 b/tests/ext4/026
index 5bb2add23036..f29ff5a97688 100755
--- a/tests/ext4/026
+++ b/tests/ext4/026
@@ -16,7 +16,9 @@  _begin_fstest auto quick attr
 . ./common/filter
 . ./common/attr
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_attrs
 _require_scratch_ext4_feature "ea_inode"
diff --git a/tests/ext4/027 b/tests/ext4/027
index 93de00f29481..8f89062afd0a 100755
--- a/tests/ext4/027
+++ b/tests/ext4/027
@@ -19,7 +19,9 @@  _cleanup()
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_xfs_io_command "fsmap"
 
diff --git a/tests/ext4/028 b/tests/ext4/028
index 30f3c4480c7c..1b8855098f82 100755
--- a/tests/ext4/028
+++ b/tests/ext4/028
@@ -20,7 +20,9 @@  _cleanup()
 . ./common/filter
 . ./common/populate
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_populate_commands
 _require_xfs_io_command "fsmap"
diff --git a/tests/ext4/029 b/tests/ext4/029
index 8a6969d2aaef..1915aaa67a74 100755
--- a/tests/ext4/029
+++ b/tests/ext4/029
@@ -19,7 +19,9 @@  _cleanup()
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_logdev
 _require_scratch
 _require_xfs_io_command "fsmap"
diff --git a/tests/ext4/030 b/tests/ext4/030
index 80f34ccf3e49..5eec9d353a8e 100755
--- a/tests/ext4/030
+++ b/tests/ext4/030
@@ -15,7 +15,9 @@  _begin_fstest auto quick dax
 . ./common/filter
 
 # Modify as appropriate.
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_dax_mountopt "dax"
 _require_test_program "t_ext4_dax_journal_corruption"
 _require_command "$CHATTR_PROG" chattr
diff --git a/tests/ext4/031 b/tests/ext4/031
index b583f825162f..330804d39688 100755
--- a/tests/ext4/031
+++ b/tests/ext4/031
@@ -19,7 +19,9 @@  SAVE_MOUNT_OPTIONS="$MOUNT_OPTIONS"
 MOUNT_OPTIONS=""
 
 # Modify as appropriate.
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_dax_mountopt "dax"
 _require_test_program "t_ext4_dax_inline_corruption"
 _require_scratch_ext4_feature "inline_data"
diff --git a/tests/ext4/032 b/tests/ext4/032
index 238ab178363c..690fcf066c11 100755
--- a/tests/ext4/032
+++ b/tests/ext4/032
@@ -83,7 +83,8 @@  _cleanup()
 
 # get standard environment and checks
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_loop
 _require_scratch
diff --git a/tests/ext4/033 b/tests/ext4/033
index 53f7106e2c6b..3827ab5c52ad 100755
--- a/tests/ext4/033
+++ b/tests/ext4/033
@@ -24,7 +24,9 @@  _cleanup()
 . ./common/filter
 . ./common/dmhugedisk
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_nocheck
 _require_dmhugedisk
 _require_dumpe2fs
diff --git a/tests/ext4/034 b/tests/ext4/034
index cdd2e553f534..c4ae807519d6 100755
--- a/tests/ext4/034
+++ b/tests/ext4/034
@@ -19,7 +19,8 @@  _begin_fstest auto quick quota fiemap prealloc
 
 
 # Modify as appropriate.
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 _require_scratch
 _require_quota
 _require_nobody
diff --git a/tests/ext4/035 b/tests/ext4/035
index cf221c5adb7d..fe2a74680f01 100755
--- a/tests/ext4/035
+++ b/tests/ext4/035
@@ -19,7 +19,8 @@  _begin_fstest auto quick resize
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 _require_scratch
 _exclude_scratch_mount_option dax
 _require_command "$RESIZE2FS_PROG" resize2fs
diff --git a/tests/ext4/036 b/tests/ext4/036
index 045fe82ff956..4a1471fd4cb5 100755
--- a/tests/ext4/036
+++ b/tests/ext4/036
@@ -15,7 +15,8 @@  _begin_fstest auto quick
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext3 ext4
+_exclude_fs ext2
+
 _require_scratch
 
 echo "Silence is golden"
diff --git a/tests/ext4/037 b/tests/ext4/037
index ac309d67aac5..dea02a79927a 100755
--- a/tests/ext4/037
+++ b/tests/ext4/037
@@ -15,7 +15,7 @@  _begin_fstest auto quick
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext3 ext4
+_exclude_fs ext2
 
 # nofsck as we modify sb via debugfs
 _require_scratch_nocheck
diff --git a/tests/ext4/038 b/tests/ext4/038
index b594bd9cb2e2..07b090b11f13 100755
--- a/tests/ext4/038
+++ b/tests/ext4/038
@@ -10,9 +10,8 @@ 
 . ./common/preamble
 _begin_fstest auto quick
 
-# Import common functions.
+_exclude_fs ext2
 
-_supported_fs ext3 ext4
 _require_scratch
 _require_command "$DEBUGFS_PROG" debugfs
 
diff --git a/tests/ext4/039 b/tests/ext4/039
index 2830740eb3cf..2e99c8ff9ffd 100755
--- a/tests/ext4/039
+++ b/tests/ext4/039
@@ -56,7 +56,8 @@  chattr_opt: $chattr_opt" >>$seqres.full
 	done
 }
 
-_supported_fs ext3 ext4
+_exclude_fs ext2
+
 _require_scratch
 _exclude_scratch_mount_option dax
 
diff --git a/tests/ext4/040 b/tests/ext4/040
index 5760058ad7d4..f22c655b4909 100755
--- a/tests/ext4/040
+++ b/tests/ext4/040
@@ -21,7 +21,6 @@  PIDS=""
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext2 ext3 ext4
 _require_scratch_nocheck
 _disable_dmesg_check
 _require_command "$DEBUGFS_PROG"
diff --git a/tests/ext4/041 b/tests/ext4/041
index 76513db3f887..3df1b9db803d 100755
--- a/tests/ext4/041
+++ b/tests/ext4/041
@@ -21,7 +21,6 @@  PIDS=""
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext2 ext3 ext4
 _require_scratch_nocheck
 _disable_dmesg_check
 _require_command "$DEBUGFS_PROG"
diff --git a/tests/ext4/042 b/tests/ext4/042
index 0d97f6de4c2a..61fe948f2b61 100755
--- a/tests/ext4/042
+++ b/tests/ext4/042
@@ -12,9 +12,6 @@  _begin_fstest auto quick
 # Import common functions.
 . ./common/filter
 
-
-# Modify as appropriate.
-_supported_fs ext2 ext3 ext4
 _require_scratch
 
 _scratch_mkfs >> $seqres.full 2>&1
diff --git a/tests/ext4/043 b/tests/ext4/043
index 0bbbb42ac41d..8d124ba36f72 100755
--- a/tests/ext4/043
+++ b/tests/ext4/043
@@ -12,7 +12,7 @@  _begin_fstest auto quick
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext3 ext4
+_exclude_fs ext2
 
 _require_scratch
 _require_test_program "t_get_file_time"
diff --git a/tests/ext4/044 b/tests/ext4/044
index 53006514dc72..cd52f0d741e0 100755
--- a/tests/ext4/044
+++ b/tests/ext4/044
@@ -12,7 +12,9 @@  _begin_fstest auto quick
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_test_program "t_get_file_time"
 _require_metadata_journaling
diff --git a/tests/ext4/045 b/tests/ext4/045
index 587bedece4e1..15b2541ee342 100755
--- a/tests/ext4/045
+++ b/tests/ext4/045
@@ -16,7 +16,8 @@  LONG_DIR=2
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 _require_scratch_ext4_feature large_dir
diff --git a/tests/ext4/046 b/tests/ext4/046
index 5c2100ce9253..60d33550e3db 100755
--- a/tests/ext4/046
+++ b/tests/ext4/046
@@ -16,7 +16,8 @@  _begin_fstest auto prealloc quick
 . ./common/filter
 
 _require_check_dmesg
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 _require_scratch
 _require_xfs_io_command "falloc"
 _require_scratch_size $((6 * 1024 * 1024)) #kB
diff --git a/tests/ext4/047 b/tests/ext4/047
index f67b615ab082..b7df1ede4805 100755
--- a/tests/ext4/047
+++ b/tests/ext4/047
@@ -13,7 +13,9 @@  _begin_fstest auto quick dax
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_dax_mountopt "dax=always"
 _require_dax_iflag
 _require_scratch_ext4_feature "inline_data"
diff --git a/tests/ext4/048 b/tests/ext4/048
index 99a2c7b8fe4d..2031c8c8933d 100755
--- a/tests/ext4/048
+++ b/tests/ext4/048
@@ -13,7 +13,8 @@  _begin_fstest auto quick dir
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 _require_command "$DEBUGFS_PROG" debugfs
diff --git a/tests/ext4/049 b/tests/ext4/049
index 5b24e632a73b..075408e0b867 100755
--- a/tests/ext4/049
+++ b/tests/ext4/049
@@ -13,7 +13,8 @@  _begin_fstest auto quick
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 _require_scratch
 
 sdev=$(_short_dev ${SCRATCH_DEV})
diff --git a/tests/ext4/050 b/tests/ext4/050
index 6ba0038e71f2..99e824898e0f 100755
--- a/tests/ext4/050
+++ b/tests/ext4/050
@@ -13,7 +13,8 @@  _begin_fstest auto ioctl quick
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 _require_command "$DEBUGFS_PROG" debugfs
diff --git a/tests/ext4/051 b/tests/ext4/051
index a1e35fa323d3..728ad19bfcec 100755
--- a/tests/ext4/051
+++ b/tests/ext4/051
@@ -12,7 +12,8 @@ 
 . ./common/preamble
 _begin_fstest auto rw quick
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 _require_scratch
 _require_scratch_shutdown
 _require_command "$TUNE2FS_PROG" tune2fs
diff --git a/tests/ext4/052 b/tests/ext4/052
index edcdc02515f7..0df8a651383e 100755
--- a/tests/ext4/052
+++ b/tests/ext4/052
@@ -29,7 +29,8 @@  _cleanup()
 
 
 # Modify as appropriate.
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 _require_test
 _require_loop
 _require_test_program "dirstress"
diff --git a/tests/ext4/053 b/tests/ext4/053
index 4f20d217d5fd..5922ed571d8a 100755
--- a/tests/ext4/053
+++ b/tests/ext4/053
@@ -39,7 +39,6 @@  echo "Silence is golden."
 SIZE=$((1024 * 1024))	# 1GB in KB
 LOGSIZE=$((10 *1024))	# 10MB in KB
 
-_supported_fs ext2 ext3 ext4
 _require_scratch_size $SIZE
 _require_quota
 _require_loop
diff --git a/tests/ext4/054 b/tests/ext4/054
index 0dbe83640072..458eed6a7072 100755
--- a/tests/ext4/054
+++ b/tests/ext4/054
@@ -17,7 +17,9 @@  _begin_fstest auto quick dangerous_fuzzers prealloc punch
 # Import common functions
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_nocheck
 _require_xfs_io_command "falloc"
 _require_xfs_io_command "pwrite"
diff --git a/tests/ext4/055 b/tests/ext4/055
index e1815c23727a..3117bf15f9f0 100755
--- a/tests/ext4/055
+++ b/tests/ext4/055
@@ -16,8 +16,10 @@ 
 . ./common/preamble
 _begin_fstest auto quota
 
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_nocheck
-_supported_fs ext4
 _require_user fsgqa
 _require_user fsgqa2
 _require_command "$DEBUGFS_PROG" debugfs
diff --git a/tests/ext4/056 b/tests/ext4/056
index 8a290b11d697..fb5bbe93e972 100755
--- a/tests/ext4/056
+++ b/tests/ext4/056
@@ -26,7 +26,9 @@  ONLINE_RESIZE_BLOCK_LIMIT=$((256*1024*1024))
 
 STOP_ITER=255   # Arbitrary return code
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch_size $(($RESIZED_FS_SIZE/1024))
 _require_test_program "ext4_resize"
 
diff --git a/tests/ext4/057 b/tests/ext4/057
index 73cdf941a181..2be46223538f 100755
--- a/tests/ext4/057
+++ b/tests/ext4/057
@@ -11,7 +11,9 @@  _begin_fstest auto ioctl
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_test_program uuid_ioctl
 _require_command $UUIDGEN_PROG uuidgen
diff --git a/tests/ext4/058 b/tests/ext4/058
index f853649644db..9a2c3aa59ba8 100755
--- a/tests/ext4/058
+++ b/tests/ext4/058
@@ -13,7 +13,9 @@ 
 . ./common/preamble
 _begin_fstest auto quick
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _fixed_by_kernel_commit a08f789d2ab5 \
 	"ext4: fix bug_on ext4_mb_use_inode_pa"
 _require_scratch
diff --git a/tests/ext4/059 b/tests/ext4/059
index 50e788f0a169..7ea7ff92744d 100755
--- a/tests/ext4/059
+++ b/tests/ext4/059
@@ -11,7 +11,9 @@ 
 . ./common/preamble
 _begin_fstest auto resize quick
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _fixed_by_kernel_commit b55c3cd102a6 \
 	"ext4: add reserved GDT blocks check"
 
diff --git a/tests/ext4/060 b/tests/ext4/060
index 38d1c8f7b672..b8cc542fd242 100755
--- a/tests/ext4/060
+++ b/tests/ext4/060
@@ -14,7 +14,9 @@ 
 . ./common/preamble
 _begin_fstest auto resize quick
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _fixed_by_kernel_commit a6b3bfe176e8 \
 	"ext4: fix corruption during on-line resize"
 
diff --git a/tests/ext4/271 b/tests/ext4/271
index 6d60f40d3d25..5535384742ee 100755
--- a/tests/ext4/271
+++ b/tests/ext4/271
@@ -12,7 +12,9 @@  _begin_fstest auto rw quick
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 # this test needs no journal to be loaded, skip on journal related mount
 # options, otherwise mount would fail with "-o noload" mount option
diff --git a/tests/ext4/301 b/tests/ext4/301
index dd0c7d483761..abf47d4b7ece 100755
--- a/tests/ext4/301
+++ b/tests/ext4/301
@@ -15,7 +15,9 @@  fio_config=$tmp.fio
 . ./common/filter
 . ./common/defrag
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_defrag
 _require_odirect
diff --git a/tests/ext4/302 b/tests/ext4/302
index d73cf9bf84da..87820184e30f 100755
--- a/tests/ext4/302
+++ b/tests/ext4/302
@@ -16,7 +16,9 @@  fio_config=$tmp.fio
 . ./common/filter
 . ./common/defrag
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_defrag
 _require_odirect
diff --git a/tests/ext4/303 b/tests/ext4/303
index d9be45674e40..2381f0477082 100755
--- a/tests/ext4/303
+++ b/tests/ext4/303
@@ -16,7 +16,9 @@  fio_config=$tmp.fio
 . ./common/filter
 . ./common/defrag
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_defrag
 _require_odirect
diff --git a/tests/ext4/304 b/tests/ext4/304
index 208b8a2ac119..53b522ee85bd 100755
--- a/tests/ext4/304
+++ b/tests/ext4/304
@@ -17,7 +17,9 @@  fio_config=$tmp.fio
 . ./common/filter
 . ./common/defrag
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_defrag
 _require_odirect
diff --git a/tests/ext4/305 b/tests/ext4/305
index acada44bc75a..35dae5571b55 100755
--- a/tests/ext4/305
+++ b/tests/ext4/305
@@ -22,7 +22,8 @@  _cleanup()
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 
diff --git a/tests/ext4/306 b/tests/ext4/306
index b5147caf547e..b0e08f65ea24 100755
--- a/tests/ext4/306
+++ b/tests/ext4/306
@@ -22,7 +22,8 @@  _cleanup()
 # Import common functions.
 . ./common/filter
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
 
 _require_scratch
 _require_command "$RESIZE2FS_PROG" resize2fs
diff --git a/tests/ext4/307 b/tests/ext4/307
index 8361f04312b2..1f0e42ca2638 100755
--- a/tests/ext4/307
+++ b/tests/ext4/307
@@ -34,7 +34,9 @@  _workout()
 	run_check md5sum -c $out.md5sum
 }
 
-_supported_fs ext4
+_exclude_fs ext2
+_exclude_fs ext3
+
 _require_scratch
 _require_defrag
 _require_xfs_io_command "falloc"
diff --git a/tests/generic/187 b/tests/generic/187
index 2a06aff35e58..536ce9fa9ab8 100755
--- a/tests/generic/187
+++ b/tests/generic/187
@@ -28,10 +28,12 @@  _cleanup()
 . ./common/filter
 . ./common/reflink
 
+# btrfs can't fragment free space.
+_exclude_fs btrfs
+
+# This test is unreliable on NFS, as it depends on the exported filesystem.
+_exclude_fs nfs
 
-# btrfs can't fragment free space. This test is unreliable on NFS, as it
-# depends on the exported filesystem.
-_supported_fs ^btrfs ^nfs
 _require_scratch_reflink
 _require_cp_reflink
 _require_xfs_io_command "falloc"
diff --git a/tests/generic/294 b/tests/generic/294
index 54b89a26294f..b07459116371 100755
--- a/tests/generic/294
+++ b/tests/generic/294
@@ -16,7 +16,7 @@  _begin_fstest auto quick
 
 # NFS will optimize away the on-the-wire lookup before attempting to
 # create a new file (since that means an extra round trip).
-_supported_fs ^nfs
+_exclude_fs nfs
 
 _require_scratch
 _require_symlinks
diff --git a/tests/generic/357 b/tests/generic/357
index 8db31f8b0432..51c6d5efd2d7 100755
--- a/tests/generic/357
+++ b/tests/generic/357
@@ -26,7 +26,7 @@  _cleanup()
 
 # For NFS, a reflink is just a CLONE operation, and after that
 # point it's dealt with by the server.
-_supported_fs ^nfs
+_exclude_fs nfs
 
 _require_scratch_swapfile
 _require_scratch_reflink
diff --git a/tests/generic/362 b/tests/generic/362
index 2396ec7d3a57..3a1993e81d4b 100755
--- a/tests/generic/362
+++ b/tests/generic/362
@@ -11,7 +11,8 @@ 
 _begin_fstest auto quick
 
 # NFS forbade open with O_APPEND|O_DIRECT
-_supported_fs ^nfs
+_exclude_fs nfs
+
 _require_test
 _require_odirect
 _require_test_program dio-append-buf-fault
diff --git a/tests/generic/465 b/tests/generic/465
index f8c4ea9671a2..5b49040e3ad0 100755
--- a/tests/generic/465
+++ b/tests/generic/465
@@ -20,7 +20,7 @@  _cleanup()
 # Import common functions.
 . ./common/filter
 
-_supported_fs ^nfs
+_exclude_fs nfs
 
 _require_aiodio aio-dio-append-write-read-race
 _require_test_program "feature"
diff --git a/tests/generic/500 b/tests/generic/500
index ba6e902ec96b..c5492a09246c 100755
--- a/tests/generic/500
+++ b/tests/generic/500
@@ -41,7 +41,7 @@  _require_dm_target thin-pool
 # and since we've filled the thinp device it'll return EIO, which will make
 # btrfs flip read only, making it fail this test when it just won't work right
 # for us in the first place.
-_supported_fs ^btrfs
+_exclude_fs btrfs
 
 # Require underlying device support discard
 _scratch_mkfs >>$seqres.full 2>&1
diff --git a/tests/generic/631 b/tests/generic/631
index 642d47863987..8e2cf9c63b77 100755
--- a/tests/generic/631
+++ b/tests/generic/631
@@ -37,8 +37,10 @@  _cleanup()
 
 _require_scratch
 _require_attrs trusted
-_supported_fs ^overlay
+
+_exclude_fs overlay
 _require_extra_fs overlay
+
 _fixed_by_kernel_commit 6da1b4b1ab36 \
 	"xfs: fix an ABBA deadlock in xfs_rename"
 
diff --git a/tests/generic/679 b/tests/generic/679
index 4c74101c5834..741ddf21502f 100755
--- a/tests/generic/679
+++ b/tests/generic/679
@@ -23,7 +23,7 @@  _require_xfs_io_command "fiemap"
 #
 #   https://lore.kernel.org/linux-btrfs/20220315164011.GF8241@magnolia/
 #
-_supported_fs ^xfs
+_exclude_fs xfs
 
 rm -f $seqres.full
 
diff --git a/tests/generic/699 b/tests/generic/699
index 3079a861df74..620a40aa3921 100755
--- a/tests/generic/699
+++ b/tests/generic/699
@@ -21,8 +21,9 @@  _cleanup()
 	rm -r -f $tmp.*
 }
 
-_supported_fs ^overlay
+_exclude_fs overlay
 _require_extra_fs overlay
+
 _require_scratch
 _require_chown
 _require_idmapped_mounts
diff --git a/tests/generic/732 b/tests/generic/732
index e907a009fe16..83caa0bc915c 100755
--- a/tests/generic/732
+++ b/tests/generic/732
@@ -24,7 +24,9 @@  _cleanup()
 # This case give a assumption that the same mount options for
 # different mount point will share the same superblock, which won't
 # sucess for the follow fs.
-_supported_fs ^nfs ^overlay ^tmpfs
+_exclude_fs nfs
+_exclude_fs overlay
+_exclude_fs tmpfs
 
 _require_test
 _require_scratch
diff --git a/tests/generic/740 b/tests/generic/740
index 903e891db0fd..10817521cc93 100755
--- a/tests/generic/740
+++ b/tests/generic/740
@@ -14,7 +14,12 @@  _begin_fstest mkfs auto quick
 
 # a bunch of file systems don't support foreign fs detection
 # ext* do support it, but disable the feature when called non-interactively
-_supported_fs ^ext2 ^ext3 ^ext4 ^jfs ^ocfs2 ^udf
+_exclude_fs ext2
+_exclude_fs ext3
+_exclude_fs ext4
+_exclude_fs jfs
+_exclude_fs ocfs2
+_exclude_fs udf
 
 _require_block_device "${SCRATCH_DEV}"
 # not all the FS support zoned block device