diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bugs/bug-949242.t | 54 | ||||
-rw-r--r-- | tests/fallocate.rc | 19 |
2 files changed, 73 insertions, 0 deletions
diff --git a/tests/bugs/bug-949242.t b/tests/bugs/bug-949242.t new file mode 100644 index 00000000000..71708467350 --- /dev/null +++ b/tests/bugs/bug-949242.t @@ -0,0 +1,54 @@ +#!/bin/bash +# +# Bug 949242 - Test basic fallocate functionality. +# +# Run several commands to verify basic fallocate functionality. We verify that +# fallocate creates and allocates blocks to a file. We also verify that the keep +# size option does not modify the file size. +### + +. $(dirname $0)/../include.rc +. $(dirname $0)/../fallocate.rc + +cleanup; + +TEST glusterd + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2,3,4} +TEST $CLI volume start $V0 + +TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0 + +# check for fallocate support before continuing the test +require_fallocate -l 1m -n $M0/file && rm -f $M0/file + +# fallocate a file and verify blocks are allocated +TEST fallocate -l 1m $M0/file +blksz=`stat --printf=%b $M0/file` +nblks=`stat --printf=%B $M0/file` +TEST [ $(($blksz * $nblks)) -eq 1048576 ] + +TEST unlink $M0/file + +# truncate a file to a fixed size, fallocate and verify that the size does not +# change +TEST truncate --size=1m $M0/file +TEST fallocate -l 2m -n $M0/file +blksz=`stat --printf=%b $M0/file` +nblks=`stat --printf=%B $M0/file` +sz=`stat --printf=%s $M0/file` +TEST [ $sz -eq 1048576 ] +# Note that gluster currently incorporates a hack to limit the number of blocks +# reported as allocated to the file by the file size. We have allocated beyond the +# file size here. Just check for non-zero allocation to avoid setting a land mine +# for if/when that behavior might change. +TEST [ ! $(($blksz * $nblks)) -eq 0 ] + +TEST unlink $M0/file + +TEST umount $M0 + +TEST $CLI volume stop $V0 +TEST $CLI volume delete $V0 + +cleanup; diff --git a/tests/fallocate.rc b/tests/fallocate.rc new file mode 100644 index 00000000000..3756bb949bd --- /dev/null +++ b/tests/fallocate.rc @@ -0,0 +1,19 @@ +#!/bin/bash + +# Helper to verify a given fallocate command is supported and skip a test +# otherwise. Older versions of the fallocate utility might not support all modes +# (i.e., discard) and older versions of fuse might not support the associated +# fallocate requests. + +function require_fallocate() +{ + output=`fallocate $* 2>&1` + ret=$? + if [ ! $ret -eq 0 ] && ([[ $output == *unsupported* ]] || + [[ $output == *invalid* ]] || + [[ $output == *"not supported"* ]]) + then + SKIP_TESTS + exit + fi +} |