2011-06-30 05:23:57

by Allison Henderson

[permalink] [raw]
Subject: [PATCH 0/4 v3] XFS TESTS: Fix 252 failure

This patch corrects a 252 test failure when run on ext4. This failure
occures because ext4 and xfs do not handle splitting extents in the same way,
and do not create the same fiemap outout.

To correct this, this patch set will make test 252 an xfs only test, and a new
test 255 will be added. The new test is similar to 252, but uses a weaker fiemap filter
that only shows the location of the hole, and not the extent type. An
md5 check sum has also been added to the tests to help ensure the contents are
correct.

Also, another patch was submitted that modifies the same code in 242.out.
Assuming that patch will go through, this set was modified to be applied on
top of Christoph's "[PATCH] xfstests: update test 042 golden output" (06/20/2011).

I noticed there are some other patches that are trying to add a test 255, so we
may need another version of this set depending on which ones go in first.

Allison Henderson (4):
XFS TESTS: Fix 252 Failure: Make 252 xfs only with MD5 checksum
XFS TESTS: Fix 252 Failure: Update 252 Golden Output
XFS TESTS: Fix 252 Failure: Update 242 Golden Output
XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255

242.out | 17 +++
252 | 2 +-
252.out | 68 +++++++++++++
255 | 67 +++++++++++++
255.out | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
common.punch | 40 ++++++++
group | 1 +
7 files changed, 501 insertions(+), 1 deletions(-)
create mode 100644 255
create mode 100644 255.out



2011-06-30 05:23:58

by Allison Henderson

[permalink] [raw]
Subject: [PATCH 1/4 v3] XFS TESTS: Fix 252 Failure: Make 252 xfs only with MD5 checksum

This patch modifies test 252 to run for only xfs, and also
adds an md5 checksum to each of the punch hole tests

Signed-off-by: Allison Henderson <[email protected]>
---
:100755 100755 5efa243... 441bed0... M 252
:100644 100644 ddf63b0... c18f88a... M common.punch
252 | 2 +-
common.punch | 23 +++++++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/252 b/252
index 5efa243..441bed0 100755
--- a/252
+++ b/252
@@ -44,7 +44,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15
. ./common.punch

# real QA test starts here
-_supported_fs generic
+_supported_fs xfs
_supported_os Linux

_require_xfs_io_falloc_punch
diff --git a/common.punch b/common.punch
index ddf63b0..c18f88a 100644
--- a/common.punch
+++ b/common.punch
@@ -218,6 +218,12 @@ _filter_fiemap()
_coalesce_extents
}

+# Prints the md5 checksum of a given file
+_md5_checksum()
+{
+ md5sum $1 | cut -d ' ' -f1
+}
+
_filter_bmap()
{
awk '
@@ -305,6 +311,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 2. into allocated space"
if [ "$remove_testfile" ]; then
@@ -315,6 +322,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 3. into unwritten space"
if [ "$remove_testfile" ]; then
@@ -325,6 +333,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 4. hole -> data"
if [ "$remove_testfile" ]; then
@@ -335,6 +344,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 5. hole -> unwritten"
if [ "$remove_testfile" ]; then
@@ -345,6 +355,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 6. data -> hole"
if [ "$remove_testfile" ]; then
@@ -355,6 +366,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 7. data -> unwritten"
if [ "$remove_testfile" ]; then
@@ -366,6 +378,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 8. unwritten -> hole"
if [ "$remove_testfile" ]; then
@@ -376,6 +389,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 9. unwritten -> data"
if [ "$remove_testfile" ]; then
@@ -387,6 +401,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 10. hole -> data -> hole"
if [ "$remove_testfile" ]; then
@@ -397,6 +412,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 11. data -> hole -> data"
if [ "$remove_testfile" ]; then
@@ -410,6 +426,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 12. unwritten -> data -> unwritten"
if [ "$remove_testfile" ]; then
@@ -421,6 +438,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 13. data -> unwritten -> data"
if [ "$remove_testfile" ]; then
@@ -433,6 +451,7 @@ _test_generic_punch()
-c "$zero_cmd 4k 12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 14. data -> hole @ EOF"
rm -f $testfile
@@ -441,6 +460,7 @@ _test_generic_punch()
-c "$zero_cmd 12k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 15. data -> hole @ 0"
if [ "$remove_testfile" ]; then
@@ -451,6 +471,7 @@ _test_generic_punch()
-c "$zero_cmd 0k 8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

echo " 16. data -> cache cold ->hole"
if [ "$remove_testfile" ]; then
@@ -470,6 +491,7 @@ _test_generic_punch()
diff $testfile $testfile.2
[ $? -ne 0 ] && die_now
rm -f $testfile.2
+ _md5_checksum $testfile

echo " 17. data -> hole in single block file"
if [ "$remove_testfile" ]; then
@@ -481,5 +503,6 @@ _test_generic_punch()
-c "$zero_cmd 128 128" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile

}
--
1.7.1


2011-06-30 05:21:45

by Allison Henderson

[permalink] [raw]
Subject: [PATCH 4/4 v3] XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255

This patch adds a new test 255 that tests fallocate punch hole,
but is for use by generic filesystems. It is similar to 252,
but uses a weaker fiemap filter that only displays the location
of the hole, and not the extent types.

Signed-off-by: Allison Henderson <[email protected]>
---
:000000 100644 0000000... 0083963... A 255
:000000 100644 0000000... 2ce882b... A 255.out
:100644 100644 c18f88a... a48b7ae... M common.punch
:100644 100644 1f86075... 9558bc7... M group
255 | 67 +++++++++++++
255.out | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
common.punch | 17 +++
group | 1 +
4 files changed, 392 insertions(+), 0 deletions(-)

diff --git a/255 b/255
new file mode 100644
index 0000000..0083963
--- /dev/null
+++ b/255
@@ -0,0 +1,67 @@
+#! /bin/bash
+# FS QA Test No. 255
+#
+# Test Generic fallocate hole punching
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 Red Hat. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#-----------------------------------------------------------------------
+#
+# creator
[email protected]
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+
+_cleanup()
+{
+ rm -f $tmp.*
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.punch
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_xfs_io_falloc_punch
+_require_xfs_io_fiemap
+
+testfile=$TEST_DIR/255.$$
+
+# Standard punch hole tests
+_test_generic_punch falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+# Delayed allocation punch hole tests
+_test_generic_punch -d falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+# Multi hole punch tests
+_test_generic_punch -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+# Delayed allocation multi punch hole tests
+_test_generic_punch -d -k falloc fpunch fpunch fiemap _filter_hole_fiemap $testfile -F
+
+status=0 ; exit
diff --git a/255.out b/255.out
new file mode 100644
index 0000000..2ce882b
--- /dev/null
+++ b/255.out
@@ -0,0 +1,307 @@
+QA output created by 255
+ 1. into a hole
+daa100df6e6711906b61c9ab5aa16032
+ 2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+ 4. hole -> data
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+ 5. hole -> unwritten
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+ 6. data -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+1b3779878366498b28c702ef88c4a773
+ 7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+1b3779878366498b28c702ef88c4a773
+ 8. unwritten -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+ 9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+ 10. hole -> data -> hole
+daa100df6e6711906b61c9ab5aa16032
+ 11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+ 13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+ 15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
+ 1. into a hole
+daa100df6e6711906b61c9ab5aa16032
+ 2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+ 4. hole -> data
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+ 5. hole -> unwritten
+0: [0..23]: hole
+1: [24..31]: extent
+2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+ 6. data -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+1b3779878366498b28c702ef88c4a773
+ 7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+1b3779878366498b28c702ef88c4a773
+ 8. unwritten -> hole
+0: [0..7]: extent
+1: [8..39]: hole
+daa100df6e6711906b61c9ab5aa16032
+ 9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..31]: extent
+3: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
+ 10. hole -> data -> hole
+daa100df6e6711906b61c9ab5aa16032
+ 11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+daa100df6e6711906b61c9ab5aa16032
+ 13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+ 15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
+ 1. into a hole
+0: [0..7]: extent
+1: [8..39]: hole
+5a58e46082be047d0f13bee7974015b9
+ 2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 4. hole -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 5. hole -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 6. data -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 8. unwritten -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 10. hole -> data -> hole
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+ 15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
+ 1. into a hole
+0: [0..7]: extent
+1: [8..39]: hole
+5a58e46082be047d0f13bee7974015b9
+ 2. into allocated space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 3. into unwritten space
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 4. hole -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 5. hole -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 6. data -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 7. data -> unwritten
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 8. unwritten -> hole
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 9. unwritten -> data
+0: [0..7]: extent
+1: [8..23]: hole
+2: [24..39]: extent
+cc58a7417c2d7763adc45b6fcd3fa024
+ 10. hole -> data -> hole
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 11. data -> hole -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 12. unwritten -> data -> unwritten
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 13. data -> unwritten -> data
+0: [0..7]: extent
+1: [8..31]: hole
+2: [32..39]: extent
+f6aeca13ec49e5b266cd1c913cd726e3
+ 14. data -> hole @ EOF
+0: [0..23]: extent
+1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
+ 15. data -> hole @ 0
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 16. data -> cache cold ->hole
+0: [0..15]: hole
+1: [16..39]: extent
+eecb7aa303d121835de05028751d301c
+ 17. data -> hole in single block file
+0: [0..7]: extent
+13535fd4d496bf0b74bb2335aa4d1b31
diff --git a/common.punch b/common.punch
index c18f88a..a48b7ae 100644
--- a/common.punch
+++ b/common.punch
@@ -218,6 +218,23 @@ _filter_fiemap()
_coalesce_extents
}

+# Filters fiemap output to only print the
+# file offset column and whether or not
+# it is an extent or a hole
+_filter_hole_fiemap()
+{
+ awk --posix '
+ $3 ~ /hole/ {
+ print $1, $2, $3;
+ next;
+ }
+ $5 ~ /0x[[:digit:]]+/ {
+ print $1, $2, "extent";
+ }' |
+ _coalesce_extents
+}
+
+
# Prints the md5 checksum of a given file
_md5_checksum()
{
diff --git a/group b/group
index 1f86075..9558bc7 100644
--- a/group
+++ b/group
@@ -368,3 +368,4 @@ deprecated
252 auto quick prealloc
253 auto quick
254 auto quick
+255 auto quick prealloc
--
1.7.1


2011-06-30 05:21:43

by Allison Henderson

[permalink] [raw]
Subject: [PATCH 2/4 v3] XFS TESTS: Fix 252 Failure: Update 252 Golden Output

New filtered golden output for test 252

Signed-off-by: Allison Henderson <[email protected]>
---
:100644 100644 930c924... 3caf9d6... M 252.out
252.out | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)

diff --git a/252.out b/252.out
index 930c924..3caf9d6 100644
--- a/252.out
+++ b/252.out
@@ -1,239 +1,307 @@
QA output created by 252
1. into a hole
+daa100df6e6711906b61c9ab5aa16032
2. into allocated space
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
3. into unwritten space
0: [0..7]: unwritten
1: [8..23]: hole
2: [24..39]: unwritten
+daa100df6e6711906b61c9ab5aa16032
4. hole -> data
0: [0..23]: hole
1: [24..31]: data
2: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
5. hole -> unwritten
0: [0..23]: hole
1: [24..31]: unwritten
2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
6. data -> hole
0: [0..7]: data
1: [8..39]: hole
+1b3779878366498b28c702ef88c4a773
7. data -> unwritten
0: [0..7]: data
1: [8..23]: hole
2: [24..31]: unwritten
3: [32..39]: hole
+1b3779878366498b28c702ef88c4a773
8. unwritten -> hole
0: [0..7]: unwritten
1: [8..39]: hole
+daa100df6e6711906b61c9ab5aa16032
9. unwritten -> data
0: [0..7]: unwritten
1: [8..23]: hole
2: [24..31]: data
3: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
10. hole -> data -> hole
+daa100df6e6711906b61c9ab5aa16032
11. data -> hole -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
12. unwritten -> data -> unwritten
0: [0..7]: unwritten
1: [8..31]: hole
2: [32..39]: unwritten
+daa100df6e6711906b61c9ab5aa16032
13. data -> unwritten -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
14. data -> hole @ EOF
0: [0..23]: data
1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
15. data -> hole @ 0
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
16. data -> cache cold ->hole
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
17. data -> hole in single block file
0: [0..7]: data
+13535fd4d496bf0b74bb2335aa4d1b31
1. into a hole
+daa100df6e6711906b61c9ab5aa16032
2. into allocated space
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
3. into unwritten space
0: [0..7]: unwritten
1: [8..23]: hole
2: [24..39]: unwritten
+daa100df6e6711906b61c9ab5aa16032
4. hole -> data
0: [0..23]: hole
1: [24..31]: data
2: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
5. hole -> unwritten
0: [0..23]: hole
1: [24..31]: unwritten
2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
6. data -> hole
0: [0..7]: data
1: [8..39]: hole
+1b3779878366498b28c702ef88c4a773
7. data -> unwritten
0: [0..7]: data
1: [8..23]: hole
2: [24..31]: unwritten
3: [32..39]: hole
+1b3779878366498b28c702ef88c4a773
8. unwritten -> hole
0: [0..7]: unwritten
1: [8..39]: hole
+daa100df6e6711906b61c9ab5aa16032
9. unwritten -> data
0: [0..7]: unwritten
1: [8..23]: hole
2: [24..31]: data
3: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
10. hole -> data -> hole
+daa100df6e6711906b61c9ab5aa16032
11. data -> hole -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
12. unwritten -> data -> unwritten
0: [0..7]: unwritten
1: [8..31]: hole
2: [32..39]: unwritten
+daa100df6e6711906b61c9ab5aa16032
13. data -> unwritten -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
14. data -> hole @ EOF
0: [0..23]: data
1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
15. data -> hole @ 0
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
16. data -> cache cold ->hole
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
17. data -> hole in single block file
0: [0..7]: data
+13535fd4d496bf0b74bb2335aa4d1b31
1. into a hole
0: [0..7]: data
1: [8..39]: hole
+5a58e46082be047d0f13bee7974015b9
2. into allocated space
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
3. into unwritten space
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
4. hole -> data
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
5. hole -> unwritten
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
6. data -> hole
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
7. data -> unwritten
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
8. unwritten -> hole
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
9. unwritten -> data
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
10. hole -> data -> hole
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
11. data -> hole -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
12. unwritten -> data -> unwritten
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
13. data -> unwritten -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
14. data -> hole @ EOF
0: [0..23]: data
1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
15. data -> hole @ 0
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
16. data -> cache cold ->hole
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
17. data -> hole in single block file
0: [0..7]: data
+13535fd4d496bf0b74bb2335aa4d1b31
1. into a hole
0: [0..7]: data
1: [8..39]: hole
+5a58e46082be047d0f13bee7974015b9
2. into allocated space
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
3. into unwritten space
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
4. hole -> data
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
5. hole -> unwritten
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
6. data -> hole
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
7. data -> unwritten
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
8. unwritten -> hole
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
9. unwritten -> data
0: [0..7]: data
1: [8..23]: hole
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
10. hole -> data -> hole
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
11. data -> hole -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
12. unwritten -> data -> unwritten
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
13. data -> unwritten -> data
0: [0..7]: data
1: [8..31]: hole
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
14. data -> hole @ EOF
0: [0..23]: data
1: [24..39]: hole
+e1f024eedd27ea6b1c3e9b841c850404
15. data -> hole @ 0
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
16. data -> cache cold ->hole
0: [0..15]: hole
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
17. data -> hole in single block file
0: [0..7]: data
+13535fd4d496bf0b74bb2335aa4d1b31
--
1.7.1


2011-06-30 05:21:44

by Allison Henderson

[permalink] [raw]
Subject: [PATCH 3/4 v3] XFS TESTS: Fix 252 Failure: Update 242 Golden Output

New filtered golden output for test 242. Another patch
has been sumbitted that also modifies the 242 output, and
this set has been adjusted to apply on top of it.

This patch requires Christoph's
"[PATCH] xfstests: update test 042 golden output" (06/20/2011)

Signed-off-by: Allison Henderson <[email protected]>
---
:100644 100644 e69382c... 649ac04... M 242.out
242.out | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/242.out b/242.out
index e69382c..649ac04 100644
--- a/242.out
+++ b/242.out
@@ -3,58 +3,75 @@ QA output created by 242
0: [0..7]: hole
1: [8..23]: unwritten
2: [24..39]: hole
+daa100df6e6711906b61c9ab5aa16032
2. into allocated space
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
+cc58a7417c2d7763adc45b6fcd3fa024
3. into unwritten space
0: [0..39]: unwritten
+daa100df6e6711906b61c9ab5aa16032
4. hole -> data
0: [0..7]: hole
1: [8..23]: unwritten
2: [24..31]: data
3: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
5. hole -> unwritten
0: [0..7]: hole
1: [8..31]: unwritten
2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
6. data -> hole
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: hole
+1b3779878366498b28c702ef88c4a773
7. data -> unwritten
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: hole
+1b3779878366498b28c702ef88c4a773
8. unwritten -> hole
0: [0..23]: unwritten
1: [24..39]: hole
+daa100df6e6711906b61c9ab5aa16032
9. unwritten -> data
0: [0..23]: unwritten
1: [24..31]: data
2: [32..39]: hole
+cc63069677939f69a6e8f68cae6a6dac
10. hole -> data -> hole
0: [0..7]: hole
1: [8..31]: unwritten
2: [32..39]: hole
+daa100df6e6711906b61c9ab5aa16032
11. data -> hole -> data
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
12. unwritten -> data -> unwritten
0: [0..39]: unwritten
+daa100df6e6711906b61c9ab5aa16032
13. data -> unwritten -> data
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
+f6aeca13ec49e5b266cd1c913cd726e3
14. data -> hole @ EOF
0: [0..23]: data
1: [24..39]: unwritten
+e1f024eedd27ea6b1c3e9b841c850404
15. data -> hole @ 0
0: [0..15]: unwritten
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
16. data -> cache cold ->hole
0: [0..15]: unwritten
1: [16..39]: data
+eecb7aa303d121835de05028751d301c
17. data -> hole in single block file
0: [0..7]: unwritten
+56819989ef2d9f40785adce8c06b64d0
--
1.7.1


2011-07-13 12:38:28

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH 0/4 v3] XFS TESTS: Fix 252 failure

I have applied the series. I had to merge patches 1 to 3 into a single
commit to keep thing bisectable, though.


2011-07-13 16:32:02

by Alex Elder

[permalink] [raw]
Subject: Re: [PATCH 4/4 v3] XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255

On Wed, 2011-06-29 at 22:24 -0700, Allison Henderson wrote:
> This patch adds a new test 255 that tests fallocate punch hole,
> but is for use by generic filesystems. It is similar to 252,
> but uses a weaker fiemap filter that only displays the location
> of the hole, and not the extent types.
>
> Signed-off-by: Allison Henderson <[email protected]>

I realize Christoph already committed this but I
spotted something so I thought I might as well
mention it. I haven't tested any of this, so
it may be OK after all, but if it's not then
the filter_hole_fiemap() function ought to be
updated.

-Alex

. . .

> diff --git a/common.punch b/common.punch
> index c18f88a..a48b7ae 100644
> --- a/common.punch
> +++ b/common.punch
> @@ -218,6 +218,23 @@ _filter_fiemap()
> _coalesce_extents
> }
>
> +# Filters fiemap output to only print the
> +# file offset column and whether or not
> +# it is an extent or a hole
> +_filter_hole_fiemap()
> +{
> + awk --posix '
> + $3 ~ /hole/ {
> + print $1, $2, $3;
> + next;
> + }
> + $5 ~ /0x[[:digit:]]+/ {

I believe this should be:
$5 ~ /0x[[:xdigit:]]+/ {

(I.e., hex digits, not just decimals.)

> + print $1, $2, "extent";
> + }' |
> + _coalesce_extents
> +}
> +
> +
> # Prints the md5 checksum of a given file
> _md5_checksum()
> {

. . .


2011-07-13 22:25:52

by Allison Henderson

[permalink] [raw]
Subject: Re: [PATCH 0/4 v3] XFS TESTS: Fix 252 failure

On 07/13/2011 05:38 AM, Christoph Hellwig wrote:
> I have applied the series. I had to merge patches 1 to 3 into a single
> commit to keep thing bisectable, though.
>
Thx Christoph, I will be sure to keep patches bisectable from now on. :)

Allison


2011-07-13 22:37:53

by Allison Henderson

[permalink] [raw]
Subject: Re: [PATCH 4/4 v3] XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255

On 07/13/2011 09:31 AM, Alex Elder wrote:
> On Wed, 2011-06-29 at 22:24 -0700, Allison Henderson wrote:
>> This patch adds a new test 255 that tests fallocate punch hole,
>> but is for use by generic filesystems. It is similar to 252,
>> but uses a weaker fiemap filter that only displays the location
>> of the hole, and not the extent types.
>>
>> Signed-off-by: Allison Henderson<[email protected]>
>
> I realize Christoph already committed this but I
> spotted something so I thought I might as well
> mention it. I haven't tested any of this, so
> it may be OK after all, but if it's not then
> the filter_hole_fiemap() function ought to be
> updated.
>
> -Alex
>
> . . .
>
>> diff --git a/common.punch b/common.punch
>> index c18f88a..a48b7ae 100644
>> --- a/common.punch
>> +++ b/common.punch
>> @@ -218,6 +218,23 @@ _filter_fiemap()
>> _coalesce_extents
>> }
>>
>> +# Filters fiemap output to only print the
>> +# file offset column and whether or not
>> +# it is an extent or a hole
>> +_filter_hole_fiemap()
>> +{
>> + awk --posix '
>> + $3 ~ /hole/ {
>> + print $1, $2, $3;
>> + next;
>> + }
>> + $5 ~ /0x[[:digit:]]+/ {
>
> I believe this should be:
> $5 ~ /0x[[:xdigit:]]+/ {
>
> (I.e., hex digits, not just decimals.)
>

Hi Alex,

I think you are right. The extent flags are printed in hex, so it
should be xdigit. The existing _filter_fiemap routine that I modeled
this code from is also only parsing decimal digits. Even though the
tests are not showing any problems right now, it should probably be
fixed. Should I submit a patch to correct it?

Allison Henderson

>> + print $1, $2, "extent";
>> + }' |
>> + _coalesce_extents
>> +}
>> +
>> +
>> # Prints the md5 checksum of a given file
>> _md5_checksum()
>> {
>
> . . .
>


2011-07-14 14:37:53

by Alex Elder

[permalink] [raw]
Subject: Re: [PATCH 4/4 v3] XFS TESTS: Fix 252 Failure: Add Generic FS Punch Hole Test 255

On Wed, 2011-07-13 at 15:37 -0700, Allison Henderson wrote:
> On 07/13/2011 09:31 AM, Alex Elder wrote:
> > On Wed, 2011-06-29 at 22:24 -0700, Allison Henderson wrote:
> >> This patch adds a new test 255 that tests fallocate punch hole,
> >> but is for use by generic filesystems. It is similar to 252,
> >> but uses a weaker fiemap filter that only displays the location
> >> of the hole, and not the extent types.
> >>
> >> Signed-off-by: Allison Henderson<[email protected]>
> >
> > I realize Christoph already committed this but I
> > spotted something so I thought I might as well
> > mention it. I haven't tested any of this, so
> > it may be OK after all, but if it's not then
> > the filter_hole_fiemap() function ought to be
> > updated.
> >
> > -Alex
> >
> > . . .
> >
> >> diff --git a/common.punch b/common.punch
> >> index c18f88a..a48b7ae 100644
> >> --- a/common.punch
> >> +++ b/common.punch
> >> @@ -218,6 +218,23 @@ _filter_fiemap()
> >> _coalesce_extents
> >> }
> >>
> >> +# Filters fiemap output to only print the
> >> +# file offset column and whether or not
> >> +# it is an extent or a hole
> >> +_filter_hole_fiemap()
> >> +{
> >> + awk --posix '
> >> + $3 ~ /hole/ {
> >> + print $1, $2, $3;
> >> + next;
> >> + }
> >> + $5 ~ /0x[[:digit:]]+/ {
> >
> > I believe this should be:
> > $5 ~ /0x[[:xdigit:]]+/ {
> >
> > (I.e., hex digits, not just decimals.)
> >
>
> Hi Alex,
>
> I think you are right. The extent flags are printed in hex, so it
> should be xdigit. The existing _filter_fiemap routine that I modeled
> this code from is also only parsing decimal digits. Even though the
> tests are not showing any problems right now, it should probably be
> fixed. Should I submit a patch to correct it?


Please, yes--to fix both. And please verify the problem
while you're at it if possible. Thank you.

-Alex

> Allison Henderson
>
> >> + print $1, $2, "extent";
> >> + }' |
> >> + _coalesce_extents
> >> +}
> >> +
> >> +
> >> # Prints the md5 checksum of a given file
> >> _md5_checksum()
> >> {
> >
> > . . .
> >
>