generic/300: add fallocate() checks

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>
This commit is contained in:
Eric Whitney
2014-04-14 10:37:32 +10:00
committed by Dave Chinner
parent 3c9cd13b78
commit 2e9061fb91
+7
View File
@@ -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 ]