generic/247: filter out expected XFS warnings for mixed mmap/direct I/O

generic/247 reproduces some of the same, expected warnings from XFS
as generic/095. These warnings occur due to mixed buffered/mapped
I/O racing with direct I/O to the same file.

generic/095 contains a custom dmesg filter to prevent test failure
in the event of such warnings. Lift the helper from generic/095 to
common/xfs and reuse it in generic/247 to implement the same
behavior.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This commit is contained in:
Brian Foster
2017-06-28 10:14:42 -04:00
committed by Eryu Guan
parent 82012736f7
commit d55123c080
3 changed files with 27 additions and 20 deletions
+17
View File
@@ -584,3 +584,20 @@ _require_xfs_mkfs_ciname()
_scratch_mkfs_xfs_supported -n version=ci >/dev/null 2>&1 \
|| _notrun "need case-insensitive naming support in mkfs.xfs"
}
# xfs generates WARNINGs on purpose when applications mix buffered/mmap IO with
# direct IO on the same file. This is a helper for _check_dmesg() to filter out
# such warnings.
_filter_xfs_dmesg()
{
local warn1="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_write.*"
local warn2="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_read.*"
local warn3="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_read_iter.*"
local warn4="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_aio_read.*"
local warn5="WARNING:.*fs/iomap\.c:.*iomap_dio_rw.*"
sed -e "s#$warn1#Intentional warnings in xfs_file_dio_aio_write#" \
-e "s#$warn2#Intentional warnings in xfs_file_dio_aio_read#" \
-e "s#$warn3#Intentional warnings in xfs_file_read_iter#" \
-e "s#$warn4#Intentional warnings in xfs_file_aio_read#" \
-e "s#$warn5#Intentional warnings in iomap_dio_rw#"
}
+1 -18
View File
@@ -122,25 +122,8 @@ $FIO_PROG $fio_config >>$seqres.full 2>&1
# to be potent, we don't want to simply _disable_dmesg_check which could miss
# other potential bugs. So filter out the intentional WARNINGs, make sure test
# doesn't fail because of this warning and fails on other WARNINGs.
filter_xfs_dmesg()
{
local warn1="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_write.*"
local warn2="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_read.*"
local warn3="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_read_iter.*"
local warn4="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_aio_read.*"
local warn5="WARNING:.*fs/iomap\.c:.*iomap_dio_rw.*"
sed -e "s#$warn1#Intentional warnings in xfs_file_dio_aio_write#" \
-e "s#$warn2#Intentional warnings in xfs_file_dio_aio_read#" \
-e "s#$warn3#Intentional warnings in xfs_file_read_iter#" \
-e "s#$warn4#Intentional warnings in xfs_file_aio_read#" \
-e "s#$warn5#Intentional warnings in iomap_dio_rw#"
}
# umount before checking dmesg in case umount triggers any WARNING or Oops
_scratch_unmount
if [ "$FSTYP" == "xfs" ]; then
_check_dmesg filter_xfs_dmesg
_check_dmesg _filter_xfs_dmesg
else
_check_dmesg
fi
+9 -2
View File
@@ -80,6 +80,13 @@ wait
echo "Silence is golden."
# success, all done
status=0
# unmount and check dmesg, filtering out expected XFS warnings about mixed
# mmap/dio
_scratch_unmount
if [ "$FSTYP" == "xfs" ]; then
_check_dmesg _filter_xfs_dmesg
else
_check_dmesg
fi
status=$?
exit