]> git-server-git.apps.pok.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
xfs/650: require a real SCRATCH_RTDEV
authorChristoph Hellwig <hch@lst.de>
Thu, 18 Dec 2025 07:30:11 +0000 (08:30 +0100)
committerZorro Lang <zlang@kernel.org>
Wed, 31 Dec 2025 21:02:23 +0000 (05:02 +0800)
Require a real SCRATCH_RTDEV instead of faking one up using a loop
device, as otherwise the options specified in MKFS_OPTIONS might
not actually work the configuration.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
tests/xfs/650

index d8f70539665f100adcd309f59c51a200936c6cb1..418a1e7aae7c10ba7e6d4ce5ec494ec50d5a698a 100755 (executable)
@@ -9,21 +9,11 @@
 # bunmapi"). On XFS without the fixes, truncate will hang forever.
 #
 . ./common/preamble
-_begin_fstest auto prealloc preallocrw
-
-# Override the default cleanup function.
-_cleanup()
-{
-       _scratch_unmount &>/dev/null
-       [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
-       cd /
-       rm -f $tmp.*
-       rm -f "$TEST_DIR/$seq"
-}
+_begin_fstest auto prealloc preallocrw realtime
 
 . ./common/filter
 
-_require_scratch_nocheck
+_require_realtime
 _require_xfs_io_command "falloc"
 
 maxextlen=$((0x1fffff))
@@ -31,51 +21,11 @@ bs=4096
 rextsize=4
 filesz=$(((maxextlen + 1) * bs))
 
-must_disable_feature() {
-       local feat="$1"
-
-       # If mkfs doesn't know about the feature, we don't need to disable it
-       $MKFS_XFS_PROG --help 2>&1 | grep -q "${feat}=0" || return 1
-
-       # If turning the feature on works, we don't need to disable it
-       _scratch_mkfs_xfs_supported -m "${feat}=1" "${disabled_features[@]}" \
-               > /dev/null 2>&1 && return 1
-
-       # Otherwise mkfs knows of the feature and formatting with it failed,
-       # so we do need to mask it.
-       return 0
-}
-
-extra_options=""
-# Set up the realtime device to reproduce the bug.
+_scratch_mkfs \
+       -d agsize=$(((maxextlen + 1) * bs / 2)),rtinherit=1 \
+       -r extsize=$((bs * rextsize)) \
+       >>$seqres.full 2>&1
 
-# If we don't have a realtime device, set up a loop device on the test
-# filesystem.
-if [[ $USE_EXTERNAL != yes || -z $SCRATCH_RTDEV ]]; then
-       _require_test
-       loopsz="$((filesz + (1 << 26)))"
-       _require_fs_space "$TEST_DIR" $((loopsz / 1024))
-       $XFS_IO_PROG -c "truncate $loopsz" -f "$TEST_DIR/$seq"
-       loop_dev="$(_create_loop_device "$TEST_DIR/$seq")"
-       USE_EXTERNAL=yes
-       SCRATCH_RTDEV="$loop_dev"
-       disabled_features=()
-
-       # disable reflink if not supported by realtime devices
-       must_disable_feature reflink &&
-               disabled_features=(-m reflink=0)
-
-       # disable rmap if not supported by realtime devices
-       must_disable_feature rmapbt &&
-               disabled_features+=(-m rmapbt=0)
-fi
-extra_options="$extra_options -r extsize=$((bs * rextsize))"
-extra_options="$extra_options -d agsize=$(((maxextlen + 1) * bs / 2)),rtinherit=1"
-
-_scratch_mkfs $extra_options "${disabled_features[@]}" >>$seqres.full 2>&1
-_try_scratch_mount >>$seqres.full 2>&1 || \
-       _notrun "mount failed, kernel doesn't support realtime?"
-_scratch_unmount
 _scratch_mount
 _require_fs_space "$SCRATCH_MNT" $((filesz / 1024))
 
@@ -108,7 +58,6 @@ $XFS_IO_PROG -c "pwrite -b 1M -W 0 $(((maxextlen + 2 - rextsize) * bs))" \
 # Truncate the extents.
 $XFS_IO_PROG -c "truncate 0" -c fsync "$SCRATCH_MNT/file"
 
-# We need to do this before the loop device gets torn down.
 _scratch_unmount
 _check_scratch_fs