fstests: remove DMAPI support from build system
[xfstests-dev.git] / common / rc
index 65ebfe201139ae7452370cfce66558faf65a44eb..aea0d076d111e4b12b0b74bbd77c6c924e5c554a 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -6,16 +6,6 @@
 
 BC=$(which bc 2> /dev/null) || BC=
 
-# Some tests are not relevant or functional when testing XFS realtime
-# subvolumes along with the rtinherit=1 mkfs option.  In these cases,
-# this test will opt-out of the test.
-_require_no_rtinherit()
-{
-       [ "$FSTYP" = "xfs" ] && echo "$MKFS_OPTIONS" |
-               egrep -q "rtinherit([^=]|=1|$)" && \
-               _notrun "rtinherit mkfs option is not supported by this test."
-}
-
 _require_math()
 {
        if [ -z "$BC" ]; then
@@ -287,12 +277,11 @@ _mount_ops_filter()
     local params="$*"
     local last_index=$(( $# - 1 ))
 
-    #get mount point to handle dmapi mtpt option correctly
     [ $last_index -gt 0 ] && shift $last_index
     local fs_escaped=$1
 
-    echo $params | sed -e 's/dmapi/dmi/' \
-        $PERL_PROG -ne "s#mtpt=[^,|^\n|^\s]*#mtpt=$fs_escaped\1\2#; print;"
+    echo $params | \
+        $PERL_PROG -ne "s#mtpt=[^,|^\n|^\s]*#mtpt=$fs_escaped\1\2#; print;"
 
 }
 
@@ -509,7 +498,7 @@ _scratch_metadump()
        [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
                options="-l $SCRATCH_LOGDEV"
 
-       xfs_metadump $options "$@" $SCRATCH_DEV $dumpfile
+       $XFS_METADUMP_PROG $options "$@" $SCRATCH_DEV $dumpfile
 }
 
 _setup_large_ext4_fs()
@@ -987,7 +976,7 @@ _scratch_mkfs_sized()
                fi
                ;;
        ext2|ext3|ext4|ext4dev)
-               ${MKFS_PROG}.$FSTYP -F $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks
+               ${MKFS_PROG} -t $FSTYP -F $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks
                ;;
        gfs2)
                # mkfs.gfs2 doesn't automatically shrink journal files on small
@@ -1002,10 +991,10 @@ _scratch_mkfs_sized()
                        (( journal_size >= min_journal_size )) || journal_size=$min_journal_size
                        MKFS_OPTIONS="-J $journal_size $MKFS_OPTIONS"
                fi
-               ${MKFS_PROG}.$FSTYP $MKFS_OPTIONS -O -b $blocksize $SCRATCH_DEV $blocks
+               ${MKFS_PROG} -t $FSTYP $MKFS_OPTIONS -O -b $blocksize $SCRATCH_DEV $blocks
                ;;
        ocfs2)
-               yes | ${MKFS_PROG}.$FSTYP -F $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks
+               yes | ${MKFS_PROG} -t $FSTYP -F $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks
                ;;
        udf)
                $MKFS_UDF_PROG $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks
@@ -1019,10 +1008,10 @@ _scratch_mkfs_sized()
                $MKFS_BTRFS_PROG $MKFS_OPTIONS $mixed_opt -b $fssize $SCRATCH_DEV
                ;;
        jfs)
-               ${MKFS_PROG}.$FSTYP $MKFS_OPTIONS $SCRATCH_DEV $blocks
+               ${MKFS_PROG} -t $FSTYP $MKFS_OPTIONS $SCRATCH_DEV $blocks
                ;;
        reiserfs)
-               ${MKFS_PROG}.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks
+               ${MKFS_PROG} -t $FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks
                ;;
        reiser4)
                # mkfs.resier4 requires size in KB as input for creating filesystem
@@ -1062,7 +1051,7 @@ _scratch_mkfs_geom()
     case $FSTYP in
     xfs)
        if echo "$MKFS_OPTIONS" | egrep -q "b?size="; then
-               MKFS_OPTIONS=$(echo "$MKFS_OPTIONS" | sed -r "s/(b?size=)[0-9]+/\1$blocksize/")
+               MKFS_OPTIONS=$(echo "$MKFS_OPTIONS" | sed -r "s/(b?size=)[0-9]+k?/\1$blocksize/")
        else
                MKFS_OPTIONS+=" -b size=$blocksize"
        fi
@@ -1101,13 +1090,13 @@ _scratch_mkfs_blocksized()
        _scratch_mkfs_xfs $MKFS_OPTIONS -b size=$blocksize
        ;;
     ext2|ext3|ext4)
-       ${MKFS_PROG}.$FSTYP -F $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV
+       ${MKFS_PROG} -t $FSTYP -F $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV
        ;;
     gfs2)
-       ${MKFS_PROG}.$FSTYP $MKFS_OPTIONS -O -b $blocksize $SCRATCH_DEV
+       ${MKFS_PROG} -t $FSTYP $MKFS_OPTIONS -O -b $blocksize $SCRATCH_DEV
        ;;
     ocfs2)
-       yes | ${MKFS_PROG}.$FSTYP -F $MKFS_OPTIONS -b $blocksize -C $blocksize $SCRATCH_DEV
+       yes | ${MKFS_PROG} -t $FSTYP -F $MKFS_OPTIONS -b $blocksize -C $blocksize $SCRATCH_DEV
        ;;
     *)
        _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_blocksized"
@@ -1608,6 +1597,37 @@ _require_scratch_size()
        [ $devsize -lt $1 ] && _notrun "scratch dev too small"
 }
 
+# require a scratch dev of a minimum size (in kb) and should not be checked
+# post test
+_require_scratch_size_nocheck()
+{
+       [ $# -eq 1 ] || _fail "_require_scratch_size: expected size param"
+
+       _require_scratch_nocheck
+       local devsize=`_get_device_size $SCRATCH_DEV`
+       [ $devsize -lt $1 ] && _notrun "scratch dev too small"
+}
+
+# require scratch fs which supports >16T of filesystem size.
+_require_scratch_16T_support()
+{
+       case $FSTYP in
+       ext2|ext3|f2fs)
+               _notrun "$FSTYP doesn't support >16T filesystem"
+               ;;
+       ext4)
+               _scratch_mkfs >> $seqres.full 2>&1
+               _scratch_mount
+               local blocksize=$(_get_block_size $SCRATCH_MNT)
+               if [ $blocksize -lt 4096 ]; then
+                       _notrun "This test requires >16T fs support"
+               fi
+               _scratch_unmount
+               ;;
+       *)
+               ;;
+       esac
+}
 
 # this test needs a test partition - check we're ok & mount it
 #
@@ -1868,7 +1888,8 @@ _require_dm_target()
        _require_sane_bdev_flush $SCRATCH_DEV
        _require_command "$DMSETUP_PROG" dmsetup
 
-       _normalize_mount_options | egrep -q "dax(=always| |$)"
+       _normalize_mount_options | egrep -q "dax(=always| |$)" || \
+                       test -e "/sys/block/$(_short_dev $SCRATCH_DEV)/dax"
        if [ $? -eq 0 ]; then
                case $target in
                stripe|linear|log-writes)
@@ -1956,6 +1977,22 @@ _require_aiodio()
     _require_odirect
 }
 
+# this test requires that the kernel supports IO_URING
+_require_io_uring()
+{
+       $here/src/feature -R
+       case $? in
+       0)
+               ;;
+       1)
+               _notrun "kernel does not support IO_URING"
+               ;;
+       *)
+               _fail "unexpected error testing for IO_URING support"
+               ;;
+       esac
+}
+
 # this test requires that a test program exists under src/
 # $1 - command (require)
 #
@@ -2354,10 +2391,22 @@ _require_scratch_swapfile()
        # Minimum size for mkswap is 10 pages
        _format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10))
 
-       if ! swapon "$SCRATCH_MNT/swap" >/dev/null 2>&1; then
-               _scratch_unmount
-               _notrun "swapfiles are not supported"
-       fi
+       # ext* and xfs have supported all variants of swap files since their
+       # introduction, so swapon should not fail.
+       case "$FSTYP" in
+       ext2|ext3|ext4|xfs)
+               if ! swapon "$SCRATCH_MNT/swap" >/dev/null 2>&1; then
+                       _scratch_unmount
+                       _fail "swapon failed for $FSTYP"
+               fi
+               ;;
+       *)
+               if ! swapon "$SCRATCH_MNT/swap" >/dev/null 2>&1; then
+                       _scratch_unmount
+                       _notrun "swapfiles are not supported"
+               fi
+               ;;
+       esac
 
        swapoff "$SCRATCH_MNT/swap" >/dev/null 2>&1
        _scratch_unmount
@@ -3205,10 +3254,27 @@ _check_s_dax()
        local exp_s_dax=$2
 
        local attributes=$($XFS_IO_PROG -c 'statx -r' $target | awk '/stat.attributes / { print $3 }')
+
+       # The original attribute bit value, STATX_ATTR_DAX (0x2000), conflicted
+       # with STATX_ATTR_MOUNT_ROOT.  Therefore, STATX_ATTR_DAX was changed to
+       # 0x00200000.
+       #
+       # Because DAX tests do not run on root mounts, STATX_ATTR_MOUNT_ROOT
+       # should always be 0.  Check for the old flag and fail the test if that
+       # occurs.
+
+       if [ $(( attributes & 0x2000 )) -ne 0 ]; then
+               echo "$target has an unexpected STATX_ATTR_MOUNT_ROOT flag set"
+               echo "which used to be STATX_ATTR_DAX"
+               echo "     This test should not be running on the root inode..."
+               echo "     Does the kernel have the following patch?"
+               echo "     72d1249e2ffd uapi: fix statx attribute value overlap for DAX & MOUNT_ROOT"
+       fi
+
        if [ $exp_s_dax -eq 0 ]; then
-               (( attributes & 0x2000 )) && echo "$target has unexpected S_DAX flag"
+               (( attributes & 0x00200000 )) && echo "$target has unexpected S_DAX flag"
        else
-               (( attributes & 0x2000 )) || echo "$target doesn't have expected S_DAX flag"
+               (( attributes & 0x00200000 )) || echo "$target doesn't have expected S_DAX flag"
        fi
 }
 
@@ -3975,11 +4041,18 @@ _get_file_block_size()
                echo "Missing mount point argument for _get_file_block_size"
                exit 1
        fi
-       if [ "$FSTYP" = "ocfs2" ]; then
+
+       case "$FSTYP" in
+       "ocfs2")
                stat -c '%o' $1
-       else
+               ;;
+       "xfs")
+               _xfs_get_file_block_size $1
+               ;;
+       *)
                _get_block_size $1
-       fi
+               ;;
+       esac
 }
 
 # Get the minimum block size of an fs.