generic/564: fix copy_range -f availability test
[xfstests-dev.git] / common / rc
index 85330de263b92e3067e8afdeaf2f5ebcb9cc7ba1..66c7fd4d7a6c4c09b6a7ab5a4f6f067d0ccf8cf7 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -2090,14 +2090,31 @@ _require_xfs_io_command()
        local testfile=$TEST_DIR/$$.xfs_io
        local testio
        case $command in
+       "chattr")
+               if [ -z "$param" ]; then
+                       param=s
+               fi
+               # Test xfs_io chattr support AND
+               # filesystem FS_IOC_FSSETXATTR support
+               testio=`$XFS_IO_PROG -F -f -c "chattr +$param" $testfile 2>&1`
+               $XFS_IO_PROG -F -f -r -c "chattr -$param" $testfile 2>&1
+               param_checked="+$param"
+               ;;
        "chproj")
                testio=`$XFS_IO_PROG -F -f -c "chproj 0" $testfile 2>&1`
                ;;
        "copy_range")
                local testcopy=$TEST_DIR/$$.copy.xfs_io
+               local copy_opts=$testfile
+               if [ "$param" == "-f" ]; then
+                       # source file is the open destination file
+                       testcopy=$testfile
+                       copy_opts="0 -d 4k -l 4k"
+               fi
                $XFS_IO_PROG -F -f -c "pwrite 0 4k" $testfile > /dev/null 2>&1
-               testio=`$XFS_IO_PROG -F -f -c "copy_range $testfile" $testcopy 2>&1`
+               testio=`$XFS_IO_PROG -F -f -c "copy_range $param $copy_opts" $testcopy 2>&1`
                rm -f $testcopy > /dev/null 2>&1
+               param_checked="$param"
                ;;
        "falloc" )
                testio=`$XFS_IO_PROG -F -f -c "falloc $param 0 1m" $testfile 2>&1`
@@ -2335,7 +2352,7 @@ _fstyp_has_non_default_seek_data_hole()
        fi
 
        case "$fstyp" in
-       btrfs|ext4|xfs|ceph|cifs|f2fs|gfs2|ocfs2|tmpfs)
+       btrfs|ext4|xfs|cifs|f2fs|gfs2|ocfs2|tmpfs)
                return 0
                ;;
        nfs*)
@@ -2784,7 +2801,7 @@ _full_platform_details()
 {
      local os=`uname -s`
      local host=`hostname -s`
-     local kernel=`uname -r`
+     local kernel=`uname -rv`
      local platform=`uname -m`
      echo "$os/$platform $host $kernel"
 }
@@ -3931,6 +3948,9 @@ _label_get_max()
        btrfs)
                echo 255
                ;;
+       f2fs)
+               echo 255
+               ;;
        *)
                _notrun "$FSTYP does not define maximum label length"
                ;;
@@ -3987,6 +4007,13 @@ _require_scratch_btime()
        _scratch_unmount
 }
 
+_require_inode_limits()
+{
+       if [ $(_get_free_inode $TEST_DIR) -eq 0 ]; then
+               _notrun "$FSTYP does not have a fixed number of inodes available"
+       fi
+}
+
 _require_filefrag_options()
 {
        _require_command "$FILEFRAG_PROG" filefrag