@@ -303,9 +303,9 @@ __scratch_xfs_fuzz_mdrestore()
__fuzz_notify() {
echo '========================================'
- echo "$@"
+ echo "$*"
echo '========================================'
- test -w /dev/ttyprintk && echo "$@" >> /dev/ttyprintk
+ _kernlog "$*"
}
# Perform the online repair part of a fuzz test.
@@ -4432,6 +4432,38 @@ _check_dmesg()
fi
}
+# Log the arguments to the kernel log with userspace annotation, if possible.
+# Output is not sent to stdout.
+_kernlog()
+{
+ if [ -w /dev/ttyprintk ]; then
+ echo "$*" >> /dev/ttyprintk
+ return
+ fi
+
+ if [ -w /dev/kmsg ]; then
+ echo "[U] $*" >> /dev/kmsg
+ return
+ fi
+}
+
+# Convey stdin to the kernel log with userspace annotation, if possible.
+# Output will be appended to any file paths provided as arguments.
+_tee_kernlog()
+{
+ if [ -w /dev/ttyprintk ]; then
+ tee -a /dev/ttyprintk "$@"
+ return
+ fi
+
+ if [ -w /dev/kmsg ]; then
+ awk '{printf("[U] %s\n", $0) >> "/dev/kmsg"; printf("%s\n", $0);}' | tee -a "$@"
+ return
+ fi
+
+ tee -a "$@"
+}
+
# Make whatever configuration changes we need ahead of testing fs shutdowns due
# to unexpected IO errors while updating metadata. The sole parameter should
# be the fs device, e.g. $SCRATCH_DEV.
@@ -53,11 +53,11 @@ $XFS_FSR_PROG -v -d $testdir/file1 >> $seqres.full 2>&1
echo "FS should be shut down, touch will fail"
touch $SCRATCH_MNT/badfs 2>&1 | _filter_scratch
-echo "Remount to replay log" | tee /dev/ttyprintk
+echo "Remount to replay log" | _tee_kernlog
_scratch_remount_dump_log >> $seqres.full
new_nextents=$(_count_extents $testdir/file1)
-echo "Check extent count" | tee /dev/ttyprintk
+echo "Check extent count" | _tee_kernlog
$XFS_IO_PROG -c 'stat -v' $testdir/file1 >> $seqres.full
$XFS_IO_PROG -c 'stat -v' $testdir/file2 >> $seqres.full
echo "extents: $old_nextents -> $new_nextents" >> $seqres.full
@@ -65,7 +65,7 @@ $XFS_FSR_PROG -v -d $testdir/file1 >> $seqres.full 2>&1
echo "FS should be shut down, touch will fail"
touch $SCRATCH_MNT/badfs 2>&1 | _filter_scratch
-echo "Remount to replay log" | tee /dev/ttyprintk
+echo "Remount to replay log" | _tee_kernlog
_scratch_unmount
_scratch_dump_log >> $seqres.full
_scratch_xfs_db -x -c 'agf 0' -c 'addr refcntroot' -c 'fuzz -d recs[1].startblock ones' >> $seqres.full
@@ -46,7 +46,7 @@ _pwrite_byte 0x62 0 $((blksz * blks)) $testdir/file1 >> $seqres.full
_pwrite_byte 0x63 0 $blksz $testdir/file2 >> $seqres.full
_reflink_range $testdir/file2 0 $testdir/file1 $blksz $blksz >> $seqres.full
-echo "Remount to check recovery" | tee /dev/ttyprintk
+echo "Remount to check recovery" | _tee_kernlog
_scratch_unmount
_scratch_xfs_db -x -c 'agf 0' -c 'addr refcntroot' -c 'fuzz -d recs[1].startblock ones' >> $seqres.full
_scratch_xfs_db -x -c 'agf 0' -c 'addr refcntroot' -c p >> $seqres.full
@@ -62,7 +62,7 @@ $XFS_FSR_PROG -v -d $testdir/file1 >> $seqres.full 2>&1
echo "FS should be shut down, touch will fail"
touch $SCRATCH_MNT/badfs 2>&1 | _filter_scratch
-echo "Remount to replay log" | tee /dev/ttyprintk
+echo "Remount to replay log" | _tee_kernlog
_scratch_unmount
_scratch_dump_log >> $seqres.full
_scratch_xfs_db -x -c 'agf 0' -c 'addr refcntroot' -c 'fuzz -d recs[1].startblock ones' >> $seqres.full
@@ -62,7 +62,7 @@ runtest() {
cmd="$1"
# Format filesystem
- echo "TEST $cmd" | tee /dev/ttyprintk
+ echo "TEST $cmd" | _tee_kernlog
echo "TEST $cmd" >> $seqres.full
_scratch_mkfs >> $seqres.full
@@ -31,7 +31,7 @@ _supports_xfs_scrub $TEST_DIR $TEST_DEV && run_scrub=1
log()
{
- echo "$@" | tee -a $seqres.full /dev/ttyprintk
+ echo "$*" | _tee_kernlog $seqres.full
}
__test_mount_opts()