generic/300: add fallocate() checks
authorEric Whitney <enwlinux@gmail.com>
Mon, 14 Apr 2014 00:37:32 +0000 (10:37 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 14 Apr 2014 00:37:32 +0000 (10:37 +1000)
Generic/300 fails when run on a test filesystem that does not
support fallocate(). It uses fio's falloc ioengine to generate part
of its I/O load and both allocates blocks and punches holes.  This
causes EOPNOTSUPP failures when the test is run on indirect
block-mapped ext4 filesystems or pre-3.14 ext4 filesystems created
with bigalloc.

Verify that the test filesystem supports fallocate() before
proceeding with the test, checking for both block allocation and
hole punching capabilities.  Also, delete any pre-existing test
output.

Signed-off-by: Eric Whitney <enwlinux@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
tests/generic/300

index 7c6072815b40a84967bdea95ea33116b5d34dac6..4e07f8a455c21bf831dceabb9be21a248eecdddb 100755 (executable)
@@ -44,6 +44,13 @@ _supported_os Linux
 _need_to_be_root
 _require_scratch
 
+# xfs_io is not required for this test, but it's the best way to verify
+# the test system supports fallocate() for allocation and hole punching
+_require_xfs_io_falloc
+_require_xfs_io_falloc_punch
+
+rm -f $seqres.full
+
 NUM_JOBS=$((4*LOAD_FACTOR))
 BLK_DEV_SIZE=`blockdev --getsz $SCRATCH_DEV`
 if [ $((BLK_DEV_SIZE)) -gt 1048576 ]