_require_sane_bdev_flush $SCRATCH_DEV
_require_command "$DMSETUP_PROG" dmsetup
+ echo $MOUNT_OPTIONS | grep -q dax
+ if [ $? -eq 0 ]; then
+ case $target in
+ stripe|linear|log-writes)
+ ;;
+ *)
+ _notrun "Cannot run tests with DAX on $target devices."
+ ;;
+ esac
+ fi
+
modprobe dm-$target >/dev/null 2>&1
$DMSETUP_PROG targets 2>&1 | grep -q ^$target
_notrun "xfs_io $command $param_checked not supported on $FSTYP"
echo $testio | grep -q "Function not implemented" && \
_notrun "xfs_io $command $param_checked support is missing (missing syscall?)"
+ echo $testio | grep -q "unknown flag" && \
+ _notrun "xfs_io $command $param_checked support is missing (unknown flag)"
[ -n "$param" ] || return
_require_sparse_files()
{
case $FSTYP in
- hfsplus)
+ hfsplus|exfat)
_notrun "Sparse files not supported by this filesystem type: $FSTYP"
;;
*)
fi
case "$FSTYP" in
- ext2|vfat|msdos|udf)
+ ext2|vfat|msdos|udf|exfat)
echo "$FSTYP does not support metadata journaling"
return 1
;;
"$@" >> $seqres.full 2>&1 || _fail "failed: '$@'"
}
-_require_test_symlinks()
+_require_symlinks()
{
local target=`mktemp -p $TEST_DIR`
local link=`mktemp -p $TEST_DIR -u`
rm -f $target $link
}
+_require_hardlinks()
+{
+ local target=`mktemp -p $TEST_DIR`
+ local link=`mktemp -p $TEST_DIR -u`
+ ln $target $link
+ if [ "$?" -ne 0 ]; then
+ rm -f $target
+ _notrun "No hardlink support"
+ fi
+ rm -f $target $link
+}
+
_require_test_fcntl_advisory_locks()
{
[ "$FSTYP" != "cifs" ] && return 0
_notrun "Require fcntl advisory locks support"
}
+_require_test_fcntl_setlease()
+{
+ _require_test_program "locktest"
+ touch $TEST_DIR/setlease_testfile
+ $here/src/locktest -t $TEST_DIR/setlease_testfile >/dev/null 2>&1
+ [ $? -eq 22 ] && _notrun "Require fcntl setlease support"
+}
+
_require_ofd_locks()
{
# Give a test run by getlk wrlck on testfile.
return 0
}
+# exfat timestamps start at 1980 and cannot be prior to epoch
+_require_negative_timestamps() {
+ case "$FSTYP" in
+ ceph|exfat)
+ _notrun "$FSTYP does not support negative timestamps"
+ ;;
+ esac
+}
+
+# Require the 'accton' userspace tool and CONFIG_BSD_PROCESS_ACCT=y.
+_require_bsd_process_accounting()
+{
+ _require_command "$ACCTON_PROG" accton
+ $ACCTON_PROG on &> $tmp.test_accton
+ cat $tmp.test_accton >> $seqres.full
+ if grep 'Function not implemented' $tmp.test_accton; then
+ _notrun "BSD process accounting support unavailable"
+ fi
+ $ACCTON_PROG off >> $seqres.full
+}
+
+_require_sysctl_variable()
+{
+ local name=$1
+ sysctl $name &>/dev/null || _notrun "$name sysctl unavailable"
+}
+
+_require_mknod()
+{
+ mknod $TEST_DIR/$seq.null c 1 3 \
+ || _notrun "$FSTYP does not support mknod/mkfifo"
+ rm -f $TEST_DIR/$seq.null
+}
+
init_rc
################################################################################