]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: netconsole: print diagnostic on busywait timeout in netcons_basic
authorBreno Leitao <leitao@debian.org>
Mon, 2 Mar 2026 14:40:39 +0000 (06:40 -0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 4 Mar 2026 01:22:54 +0000 (17:22 -0800)
The script uses set -euo pipefail, so when busywait times out waiting
for the netconsole message to arrive, it returns 1 and the script exits
immediately without printing any error message. As reported by Jakub,
this makes failures hard to diagnose since the test reports exit=1 with
no explanation.

Handle the busywait failure explicitly so that a FAIL message is printed
before exiting. This is how it looks like now:

Running with target mode: basic (ipv6)
[  167.452561] netconsole selftest: netcons_QdMay
FAIL: Timed out waiting (20000 ms) for netconsole message in /tmp/netcons_QdMay

The remaining silent failures under set -e can only happen during the
setup phase (netdevsim creation, interface configuration, configfs
writes). So, it is not expected to have any silent failure once the test
starts.

Note that this issue might be less frequent now, since commit
a68a9bd086c28 ("selftests: netconsole: Increase port listening timeout")
increased the timeout that _might_ have been the root cause of these
random failures in NIPA.

Signed-off-by: Breno Leitao <leitao@debian.org>
Link: https://patch.msgid.link/20260302-netconsole_test_verbose-v1-1-b1be5d30cd7d@debian.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/netconsole/netcons_basic.sh

index 59cf10013ecd57900251f708df6e8688006a8544..7976206523b2c1728d05f639d3d2ea6c58e92a15 100755 (executable)
@@ -58,7 +58,11 @@ do
                # Send the message
                echo "${MSG}: ${TARGET}" > /dev/kmsg
                # Wait until socat saves the file to disk
-               busywait "${BUSYWAIT_TIMEOUT}" test -s "${OUTPUT_FILE}"
+               if ! busywait "${BUSYWAIT_TIMEOUT}" test -s "${OUTPUT_FILE}"
+               then
+                       echo "FAIL: Timed out waiting (${BUSYWAIT_TIMEOUT} ms) for netconsole message in ${OUTPUT_FILE}" >&2
+                       exit "${ksft_fail}"
+               fi
 
                # Make sure the message was received in the dst part
                # and exit