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
. ./common.punch
# real QA test starts here
-_supported_fs generic
+_supported_fs xfs
_supported_os Linux
_require_xfs_io_falloc_punch
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
_coalesce_extents
}
+# Prints the md5 checksum of a given file
+_md5_checksum()
+{
+ md5sum $1 | cut -d ' ' -f1
+}
+
_filter_bmap()
{
awk '
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
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
-c "$zero_cmd 128 128" \
-c "$map_cmd -v" $testfile | $filter_cmd
[ $? -ne 0 ] && die_now
+ _md5_checksum $testfile
}