Change log from v5:
 o split _count_extents and _count_holes

-- >8 --

This is to detect whether fiemap tool supports or not.

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)

Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org>
---
 common/rc     | 18 ++++++++++++++++++
 tests/xfs/137 |  9 +++++----
 tests/xfs/138 |  9 +++++----
 tests/xfs/139 |  9 +++++----
 tests/xfs/140 |  5 +++--
 tests/xfs/179 |  5 +++--
 tests/xfs/180 |  5 +++--
 tests/xfs/182 |  5 +++--
 8 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/common/rc b/common/rc
index 234638b..a0b92eb 100644
--- a/common/rc
+++ b/common/rc
@@ -2332,6 +2332,24 @@ _require_scratch_shutdown()
        _scratch_unmount
 }
 
+# Does fiemap support?
+_require_fiemap()
+{
+       _require_xfs_io_command "fiemap"
+}
+
+_count_extents()
+{
+       res=`$XFS_IO_PROG -c "fiemap" $1 | tail -n +2`
+       echo $res | grep -v hole | wc -l | $AWK_PROG '{print $1}'
+}
+
+_count_holes()
+{
+       res=`$XFS_IO_PROG -c "fiemap" $1 | tail -n +2`
+       echo $res | grep hole | wc -l | $AWK_PROG '{print $1}'
+}
+
 # arg 1 is dev to remove and is output of the below eg.
 # ls -l /sys/class/block/sdd | rev | cut -d "/" -f 3 | rev
 _devmgt_remove()
diff --git a/tests/xfs/137 b/tests/xfs/137
index 662a267..eb9a5fa 100755
--- a/tests/xfs/137
+++ b/tests/xfs/137
@@ -41,6 +41,7 @@ _supported_os Linux IRIX
 
 _require_scratch
 _require_scratch_shutdown
+_require_fiemap
 _scratch_mkfs_xfs >/dev/null 2>&1
 _scratch_mount
 
@@ -85,11 +86,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
diff --git a/tests/xfs/138 b/tests/xfs/138
index 3fb182c..809a8ee 100755
--- a/tests/xfs/138
+++ b/tests/xfs/138
@@ -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
diff --git a/tests/xfs/139 b/tests/xfs/139
index 6986c17..de91a29 100755
--- a/tests/xfs/139
+++ b/tests/xfs/139
@@ -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
diff --git a/tests/xfs/140 b/tests/xfs/140
index b82e43b..4882abd 100755
--- a/tests/xfs/140
+++ b/tests/xfs/140
@@ -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,8 +92,8 @@ 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`
+                       if [ $num_extents -eq 0 ]; then
                                echo corrupt file $file - non-zero size but no 
extents
                        else
                                rm -f $file
diff --git a/tests/xfs/179 b/tests/xfs/179
index 87fac8a..2f3673e 100755
--- a/tests/xfs/179
+++ b/tests/xfs/179
@@ -42,6 +42,7 @@ _supported_os Linux IRIX
 
 _require_scratch
 _require_scratch_shutdown
+_require_fiemap
 _scratch_mkfs_xfs >/dev/null 2>&1
 _scratch_mount
 
@@ -59,8 +60,8 @@ _check_files()
                        if [ `ls -l $file | tr -s ' ' | cut -d ' ' -f 5` -eq 
32768 ]
                        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`
+                               if [ $num_extents -eq 0 ]; then
                                        echo corrupt file $file - non-zero size 
but no extents
                                else
                                        rm -f $file
diff --git a/tests/xfs/180 b/tests/xfs/180
index b3b0fe4..40a186a 100755
--- a/tests/xfs/180
+++ b/tests/xfs/180
@@ -42,6 +42,7 @@ _supported_os Linux IRIX
 
 _require_scratch
 _require_scratch_shutdown
+_require_fiemap
 _scratch_mkfs_xfs >/dev/null 2>&1
 _scratch_mount
 
@@ -62,8 +63,8 @@ _check_files()
                        if [ `ls -l $file | tr -s ' ' | cut -d ' ' -f 5` -eq 
10485760 ]
                        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`
+                               if [ $num_extents -eq 0 ]; then
                                        echo corrupt file $file - non-zero size 
but no extents
                                else
                                        rm -f $file
diff --git a/tests/xfs/182 b/tests/xfs/182
index dac15d4..028e121 100755
--- a/tests/xfs/182
+++ b/tests/xfs/182
@@ -42,6 +42,7 @@ _supported_os Linux IRIX
 
 _require_scratch
 _require_scratch_shutdown
+_require_fiemap
 _scratch_mkfs_xfs >/dev/null 2>&1
 _scratch_mount
 
@@ -59,8 +60,8 @@ _check_files()
                        if [ `ls -l $file | tr -s ' ' | cut -d ' ' -f 5` -eq 
32768 ]
                        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`
+                               if [ $num_extents -eq 0 ]; then
                                        echo corrupt file $file - non-zero size 
but no extents
                                else
                                        rm -f $file
-- 
2.1.1



------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to