]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
generic/247: filter out expected XFS warnings for mixed mmap/direct I/O
authorBrian Foster <bfoster@redhat.com>
Wed, 28 Jun 2017 14:14:42 +0000 (10:14 -0400)
committerEryu Guan <eguan@redhat.com>
Thu, 29 Jun 2017 06:19:30 +0000 (14:19 +0800)
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>
common/xfs
tests/generic/095
tests/generic/247

index 0f0825bc62dd07826748558d6db9e5709e12049a..77100f7389a7377a72a34e6b069ee85a82e9c0ec 100644 (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#"
+}
index d837564f79ab0d3f0f0a75a20c1fea650d28f616..9dff1bc1ce20836e5e092c709610810a628327c7 100755 (executable)
@@ -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
index 832ade164bbf230382656e0f0eed539bd6a5534c..509e8808167865bf98994af9569b20b74863c402 100755 (executable)
@@ -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