ext4/001: Select different output based on mount options

Depending on mount options, we handle unwritten extents somewhat
differently. So sometimes we end up zeroing out unwritten extent and
converting it to written one and sometimes we just split it. Choose
expected output based on mount options.

Signed-off-by: Jan Kara <jack@suse.com>
Reviewed-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Jan Kara
2015-12-21 17:08:46 +11:00
committed by Dave Chinner
parent 254360fd9a
commit 2674015584
4 changed files with 339 additions and 0 deletions
+4
View File
@@ -22,6 +22,7 @@
#-----------------------------------------------------------------------
#
seqfull=$0
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
@@ -48,6 +49,9 @@ _supported_os Linux
_require_xfs_io_command "fzero"
_require_test
# Select appropriate golden output based on mount options
_link_out_file
testfile=$TEST_DIR/001.$$
# Standard zero range tests
+2
View File
@@ -0,0 +1,2 @@
dax: nozero
dioread_nolock: nozero
+333
View File
@@ -0,0 +1,333 @@
QA output created by 001
1. into a hole
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]: data
0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*
0000200 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*
1. into a hole
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]: data
0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*
0000200 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*
1. into a hole
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..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
4. hole -> data
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
5. hole -> unwritten
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
6. data -> hole
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
7. data -> unwritten
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
8. unwritten -> hole
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
9. unwritten -> data
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
10. hole -> data -> hole
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
f6aeca13ec49e5b266cd1c913cd726e3
11. data -> hole -> data
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
f6aeca13ec49e5b266cd1c913cd726e3
12. unwritten -> data -> unwritten
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
f6aeca13ec49e5b266cd1c913cd726e3
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]: data
0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*
0000200 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*
1. into a hole
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..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
4. hole -> data
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
5. hole -> unwritten
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
6. data -> hole
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
7. data -> unwritten
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
8. unwritten -> hole
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
9. unwritten -> data
0: [0..7]: data
1: [8..23]: unwritten
2: [24..39]: data
cc58a7417c2d7763adc45b6fcd3fa024
10. hole -> data -> hole
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
f6aeca13ec49e5b266cd1c913cd726e3
11. data -> hole -> data
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
f6aeca13ec49e5b266cd1c913cd726e3
12. unwritten -> data -> unwritten
0: [0..7]: data
1: [8..31]: unwritten
2: [32..39]: data
f6aeca13ec49e5b266cd1c913cd726e3
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]: data
0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*
0000200 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
*