@@ -896,6 +896,7 @@ function run_section()
echo "run fstests $seqnum at $date_time" > /dev/kmsg
# _check_dmesg depends on this log in dmesg
touch ${RESULT_DIR}/check_dmesg
+ rm -f ${RESULT_DIR}/dmesg_filter
fi
_try_wipe_scratch_devs > /dev/null 2>&1
@@ -4164,8 +4164,25 @@ _check_dmesg_for()
# lockdep.
_check_dmesg_filter()
{
+ local extra_filter=
+ local filter_file="${RESULT_DIR}/dmesg_filter"
+
+ test -e "$filter_file" && extra_filter="-f $filter_file"
+
egrep -v -e "BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low" \
- -e "BUG: MAX_STACK_TRACE_ENTRIES too low"
+ -e "BUG: MAX_STACK_TRACE_ENTRIES too low" \
+ $extra_filter
+}
+
+# Add a simple expression to the default dmesg filter
+_add_dmesg_filter()
+{
+ local regexp="$1"
+ local filter_file="${RESULT_DIR}/dmesg_filter"
+
+ if [ ! -e "$filter_file" ] || ! grep -q "$regexp" "$filter_file"; then
+ echo "$regexp" >> "${RESULT_DIR}/dmesg_filter"
+ fi
}
# check dmesg log for WARNING/Oops/etc.
@@ -841,6 +841,13 @@ _xfs_prepare_for_eio_shutdown()
local dev="$1"
local ctlfile="error/fail_at_unmount"
+ # Once we enable IO errors, it's possible that a writer thread will
+ # trip over EIO, cancel the transaction, and shut down the system.
+ # This is expected behavior, so we need to remove the "Internal error"
+ # message from the list of things that can cause the test to be marked
+ # as failed.
+ _add_dmesg_filter "Internal error"
+
# Don't retry any writes during the (presumably) post-shutdown unmount
_has_fs_sysfs "$ctlfile" && _set_fs_sysfs_attr $dev "$ctlfile" 1