@@ -401,5 +401,13 @@ _filter_mknod()
sed -e "s/mknod: [\`']\(.*\)': File exists/mknod: \1: File exists/"
}
+# xfs_io has inconsistent error report prefix.
+# For some error it reports like "dedupe: STRING" while for some it
+# reports "XFS_IOC_FILE_EXTENT_SAME: STRING"
+# Use this filter to unify them to "dedupe:"
+_filter_dedupe_ioctl()
+{
+ sed -e "s/^XFS_IOC_FILE_EXTENT_SAME:/dedupe:/"
+}
# make sure this script returns success
/bin/true
@@ -98,7 +98,8 @@ echo "Try overlapping dedupe"
_dedupe_range $testdir1/file1 0 $testdir1/file1 1 $((blksz * 2))
echo "Try dedupe from past EOF"
-_dedupe_range $testdir1/file1 $(( (blks + 10) * blksz)) $testdir1/file1 0 $blksz
+_dedupe_range $testdir1/file1 $(( (blks + 10) * blksz)) $testdir1/file1 0 $blksz \
+ 2>&1 | _filter_dedupe_ioctl
echo "Try dedupe to past EOF, destination offset beyond EOF"
_dedupe_range $testdir1/file1 0 $testdir1/file1 $(( (blks + 10) * blksz)) \
@@ -109,10 +110,12 @@ _dedupe_range $testdir1/file1 0 $testdir1/file1 $(( (blks - 1) * blksz)) \
$((blksz * 2))
echo "Try to dedupe a dir"
-_dedupe_range $testdir1/dir1 0 $testdir1/file2 0 $blksz
+_dedupe_range $testdir1/dir1 0 $testdir1/file2 0 $blksz 2>&1 | \
+ _filter_dedupe_ioctl
echo "Try to dedupe a device"
-_dedupe_range $testdir1/dev1 0 $testdir1/file2 0 $blksz 2>&1 | _filter_enotty
+_dedupe_range $testdir1/dev1 0 $testdir1/file2 0 $blksz 2>&1 | \
+ _filter_enotty | _filter_dedupe_ioctl
echo "Try to dedupe to a dir"
_dedupe_range $testdir1/file1 0 $testdir1/dir1 0 $blksz 2>&1 | _filter_test_dir
@@ -14,9 +14,9 @@ dedupe: Invalid argument
Try dedupe to past EOF, destination offset behind EOF
dedupe: Invalid argument
Try to dedupe a dir
-XFS_IOC_FILE_EXTENT_SAME: Is a directory
+dedupe: Is a directory
Try to dedupe a device
-XFS_IOC_FILE_EXTENT_SAME: Invalid argument
+dedupe: Invalid argument
Try to dedupe to a dir
TEST_DIR/test-158/dir1: Is a directory
Try to dedupe to a device
@@ -75,13 +75,19 @@ echo "Dedupe high offset to low offset"
_dedupe_range $testdir/file1 $bigoff_64k $testdir/file6 1048576 65535 >> $seqres.full
echo "Dedupe past source file EOF (should fail)"
-_dedupe_range $testdir/file2 524288 $testdir/file7 0 1048576 >> $seqres.full
+_dedupe_range $testdir/file2 524288 $testdir/file7 0 1048576 >> $seqres.full \
+ 2>$tmp.error
+cat $tmp.error | _filter_dedupe_ioctl
echo "Dedupe max size at nonzero offset (should fail)"
-_dedupe_range $testdir/file2 524288 $testdir/file8 0 $len >> $seqres.full
+_dedupe_range $testdir/file2 524288 $testdir/file8 0 $len >> $seqres.full \
+ 2>$tmp.error
+cat $tmp.error | _filter_dedupe_ioctl
echo "Dedupe with huge off/len (should fail)"
-_dedupe_range $testdir/file2 $bigoff_64k $testdir/file9 0 $bigoff_64k >> $seqres.full
+_dedupe_range $testdir/file2 $bigoff_64k $testdir/file9 0 $bigoff_64k \
+ >> $seqres.full 2>$tmp.error
+cat $tmp.error | _filter_dedupe_ioctl
echo "Check file creation"
_test_cycle_mount
@@ -14,7 +14,7 @@ dedupe: Invalid argument
Dedupe max size at nonzero offset (should fail)
dedupe: Invalid argument
Dedupe with huge off/len (should fail)
-XFS_IOC_FILE_EXTENT_SAME: Invalid argument
+dedupe: Invalid argument
Check file creation
file3
7ffffffffffffffe: 61 a
Test case like generic/304 and generic/158 can cause false alert due to the error output change of xfs_io. For error case, xfs_io mostly reports error like "dedupe: ERROR STRING" while under certain case, it reports error like "XFS_IOC_FILE_EXTENT_SAME: ERROR STRING". Fix it by adding a new filter, _filter_dedupe_ioctl(), to filter out all "XFS_IOC_FILE_EXTENT_SAME:" to "dedupe:" Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> --- common/filter | 8 ++++++++ tests/generic/158 | 9 ++++++--- tests/generic/158.out | 4 ++-- tests/generic/304 | 12 +++++++++--- tests/generic/304.out | 2 +- 5 files changed, 26 insertions(+), 9 deletions(-)