From: Christoph Hellwig Date: Thu, 18 Dec 2025 07:30:11 +0000 (+0100) Subject: xfs/650: require a real SCRATCH_RTDEV X-Git-Tag: v2026.01.05~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cfb2146bc959fde3633bcec1ed53f359babea4cb;p=xfstests-dev.git xfs/650: require a real SCRATCH_RTDEV 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 Reviewed-by: Darrick J. Wong Signed-off-by: Zorro Lang --- diff --git a/tests/xfs/650 b/tests/xfs/650 index d8f70539..418a1e7a 100755 --- a/tests/xfs/650 +++ b/tests/xfs/650 @@ -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