local opts="$1"
if test -n "$opts"; then
- mount -o "remount,$opts" $SCRATCH_MNT
+ _try_scratch_mount "-o remount,$opts"
fi
}
echo 0 >/sys/fs/ext4/$sdev/extent_max_zeroout_kb
}
+# The default behavior of SEEK_HOLE is to always return EOF.
+# Filesystems that implement non-default behavior return the offset
+# of holes with SEEK_HOLE. There is no way to query the filesystem
+# of which behavior it is implementing.
+# We use this whitelist FSTYP, to set expectation and avoid silent
+# regression of filesystem seek hole behavior.
+#
+# Return 0 for true
+_fstyp_has_non_default_seek_data_hole()
+{
+ if [ -z $1 ]; then
+ local fstyp=$FSTYP
+ else
+ local fstyp=$1
+ fi
+
+ case "$fstyp" in
+ btrfs|ext4|xfs|ceph|cifs|f2fs|gfs2|nfs*|ocfs2|tmpfs)
+ return 0
+ ;;
+ overlay)
+ if [ ! -z $OVL_BASE_FSTYP -a $OVL_BASE_FSTYP != "overlay" ]; then
+ _fstyp_has_non_default_seek_data_hole $OVL_BASE_FSTYP
+ return $?
+ else
+ # Assume that base fs has default behavior
+ return 1
+ fi
+ ;;
+ *)
+ # by default fstyp has default SEEK_HOLE behavior;
+ # if your fs has non-default behavior, add it to whitelist above!
+ return 1
+ ;;
+ esac
+}
+
+# Run seek sanity test with predefined expectation for SEEK_DATA/HOLE behavior
+_run_seek_sanity_test()
+{
+ local testseekargs
+ if _fstyp_has_non_default_seek_data_hole; then
+ testseekargs+="-f"
+ fi
+ $here/src/seek_sanity_test $testseekargs $*
+}
+
# Check if the file system supports seek_data/hole
_require_seek_data_hole()
{
done
}
-# We will check if the device is deletable
-_require_deletable_scratch_dev_pool()
-{
- local i
- local x
- for i in $SCRATCH_DEV_POOL; do
- x=`echo $i | cut -d"/" -f 3`
- if [ ! -f /sys/class/block/${x}/device/delete ]; then
- _notrun "$i is a device which is not deletable"
- fi
- done
-}
# Check that fio is present, and it is able to execute given jobfile
_require_fio()
_dmesg_since_test_start | egrep -q "$1"
}
+# Default filter for dmesg scanning.
+# Ignore lockdep complaining about its own bugginess when scanning dmesg
+# output, because we shouldn't be failing filesystem tests on account of
+# lockdep.
+_check_dmesg_filter()
+{
+ egrep -v -e "BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low" \
+ -e "BUG: MAX_STACK_TRACE_ENTRIES too low"
+}
+
# check dmesg log for WARNING/Oops/etc.
_check_dmesg()
{
# default filter is a simple cat command, caller could provide a
# customized filter and pass the name through the first argument, to
# filter out intentional WARNINGs or Oopses
- local filter=${1:-cat}
+ local filter=${1:-_check_dmesg_filter}
_dmesg_since_test_start | $filter >$seqres.dmesg
egrep -q -e "kernel BUG at" \
}
# get MAX_LFS_FILESIZE
-get_max_lfs_filesize()
+_get_max_lfs_filesize()
{
case "$(getconf LONG_BIT)" in
"32")
rm -f $file
}
+_try_wipe_scratch_devs()
+{
+ test -x "$WIPEFS_PROG" || return 0
+
+ for dev in $SCRATCH_DEV_POOL $SCRATCH_DEV $SCRATCH_LOGDEV $SCRATCH_RTDEV; do
+ test -b $dev && $WIPEFS_PROG -a $dev
+ done
+}
+
init_rc
################################################################################