common: use fiemap to count extents and holes

For the follwoing tests, this patch adds general script to get extent and
hole counts.

 xfs/137         (data vs filesize)
 xfs/138         (data vs filesize vs truncate)
 xfs/139         (data vs filesize vs partial truncate)
 xfs/140         (data vs filesize vs extending truncate)
 xfs/179         (data vs filesize w/ fsync)
 xfs/180         (data vs filesize w/ sync)
 xfs/182         (data vs filesize w/ recovery)

It also requires these tests to check for fiemap support.

[dchinner: use _require_xfs_io_command "fiemap" for consistency]

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Jaegeuk Kim
2015-02-12 14:18:23 +11:00
committed by Dave Chinner
parent e2b7ec91cc
commit f71327511d
8 changed files with 45 additions and 20 deletions
+5 -4
View File
@@ -41,6 +41,7 @@ _supported_os Linux IRIX
_require_scratch
_require_scratch_shutdown
_require_fiemap
_scratch_mkfs_xfs >/dev/null 2>&1
_scratch_mount
@@ -91,11 +92,11 @@ do
if [ -s $file ]
then
# if file has non-zero size but no extents then it's contents will be NULLs, bad.
if xfs_bmap $file | grep 'no extents' > /dev/null
then
num_extents=`_count_extents $file`
num_holes=`_count_holes $file`
if [ $num_extents -eq 0 ]; then
echo corrupt file $file - non-zero size but no extents
elif xfs_bmap $file | grep 'hole' > /dev/null
then
elif [ $num_holes -ne 0 ]; then
echo corrupt file $file - contains holes
else
rm -f $file