mptcp_connect.sh can be executed manually with "-m <MODE>" and "-C" to make sure everything works as expected when using "mmap" and "sendfile" modes instead of "poll", and with the MPTCP checksum support.
These modes should be validated, but they are not when the selftests are executed via the kselftest helpers. It means that most CIs validating these selftests, like NIPA for the net development trees and LKFT for the stable ones, are not covering these modes.
To fix that, new test programs have been added, simply calling mptcp_connect.sh with the right parameters.
The first patch can be backported up to v5.6, and the second one up to v5.14.
Signed-off-by: Matthieu Baerts (NGI0) matttbe@kernel.org --- Changes in v2: - force using a different prefix in the subtests to avoid having the same test names in all mptcp_connect*.sh selftests. - Link to v1: https://lore.kernel.org/r/20250714-net-mptcp-sft-connect-alt-v1-0-bf1c5abbe5...
--- Matthieu Baerts (NGI0) (2): selftests: mptcp: connect: also cover alt modes selftests: mptcp: connect: also cover checksum
tools/testing/selftests/net/mptcp/Makefile | 3 ++- tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh | 5 +++++ tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh | 5 +++++ tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh | 5 +++++ 4 files changed, 17 insertions(+), 1 deletion(-) --- base-commit: b640daa2822a39ff76e70200cb2b7b892b896dce change-id: 20250714-net-mptcp-sft-connect-alt-c1aaf073ef4e
Best regards,
The "mmap" and "sendfile" alternate modes for mptcp_connect.sh/.c are available from the beginning, but only tested when mptcp_connect.sh is manually launched with "-m mmap" or "-m sendfile", not via the kselftests helpers.
The MPTCP CI was manually running "mptcp_connect.sh -m mmap", but not "-m sendfile". Plus other CIs, especially the ones validating the stable releases, were not validating these alternate modes.
To make sure these modes are validated by these CIs, add two new test programs executing mptcp_connect.sh with the alternate modes.
Fixes: 048d19d444be ("mptcp: add basic kselftest for mptcp") Cc: stable@vger.kernel.org Reviewed-by: Geliang Tang geliang@kernel.org Signed-off-by: Matthieu Baerts (NGI0) matttbe@kernel.org --- Notes: - v2: force using a different prefix in the subtests to avoid having the same test names in all mptcp_connect*.sh selftests. --- tools/testing/selftests/net/mptcp/Makefile | 3 ++- tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh | 5 +++++ tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile index e47788bfa671313f21d5ba95821121cdc3e5d2c7..c6b030babba8cf888101d6af44f3e56fe5ab831b 100644 --- a/tools/testing/selftests/net/mptcp/Makefile +++ b/tools/testing/selftests/net/mptcp/Makefile @@ -4,7 +4,8 @@ top_srcdir = ../../../../..
CFLAGS += -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
-TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \ +TEST_PROGS := mptcp_connect.sh mptcp_connect_mmap.sh mptcp_connect_sendfile.sh \ + pm_netlink.sh mptcp_join.sh diag.sh \ simult_flows.sh mptcp_sockopt.sh userspace_pm.sh
TEST_GEN_FILES = mptcp_connect pm_nl_ctl mptcp_sockopt mptcp_inq mptcp_diag diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh b/tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh new file mode 100755 index 0000000000000000000000000000000000000000..5dd30f9394af6a88b14936a64c50ac9566be2e6e --- /dev/null +++ b/tools/testing/selftests/net/mptcp/mptcp_connect_mmap.sh @@ -0,0 +1,5 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +MPTCP_LIB_KSFT_TEST="$(basename "${0}" .sh)" \ + "$(dirname "${0}")/mptcp_connect.sh" -m mmap "${@}" diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh b/tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh new file mode 100755 index 0000000000000000000000000000000000000000..1d16fb1cc9bb6d1f88a9fdc11206237ca2b790bb --- /dev/null +++ b/tools/testing/selftests/net/mptcp/mptcp_connect_sendfile.sh @@ -0,0 +1,5 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +MPTCP_LIB_KSFT_TEST="$(basename "${0}" .sh)" \ + "$(dirname "${0}")/mptcp_connect.sh" -m sendfile "${@}"
The checksum mode has been added a while ago, but it is only validated when manually launching mptcp_connect.sh with "-C".
The different CIs were then not validating these MPTCP Connect tests with checksum enabled. To make sure they do, add a new test program executing mptcp_connect.sh with the checksum mode.
Fixes: 94d66ba1d8e4 ("selftests: mptcp: enable checksum in mptcp_connect.sh") Cc: stable@vger.kernel.org Reviewed-by: Geliang Tang geliang@kernel.org Signed-off-by: Matthieu Baerts (NGI0) matttbe@kernel.org --- Notes: - v2: force using a different prefix in the subtests to avoid having the same test names in all mptcp_connect*.sh selftests. --- tools/testing/selftests/net/mptcp/Makefile | 2 +- tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile index c6b030babba8cf888101d6af44f3e56fe5ab831b..4c7e51336ab25c662f02719f1632fa2d27d148f1 100644 --- a/tools/testing/selftests/net/mptcp/Makefile +++ b/tools/testing/selftests/net/mptcp/Makefile @@ -5,7 +5,7 @@ top_srcdir = ../../../../.. CFLAGS += -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
TEST_PROGS := mptcp_connect.sh mptcp_connect_mmap.sh mptcp_connect_sendfile.sh \ - pm_netlink.sh mptcp_join.sh diag.sh \ + mptcp_connect_checksum.sh pm_netlink.sh mptcp_join.sh diag.sh \ simult_flows.sh mptcp_sockopt.sh userspace_pm.sh
TEST_GEN_FILES = mptcp_connect pm_nl_ctl mptcp_sockopt mptcp_inq mptcp_diag diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh b/tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh new file mode 100755 index 0000000000000000000000000000000000000000..ce93ec2f107fba2a699387188932a2680bc9ded7 --- /dev/null +++ b/tools/testing/selftests/net/mptcp/mptcp_connect_checksum.sh @@ -0,0 +1,5 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +MPTCP_LIB_KSFT_TEST="$(basename "${0}" .sh)" \ + "$(dirname "${0}")/mptcp_connect.sh" -C "${@}"
On Tue, 15 Jul 2025 20:43:27 +0200 Matthieu Baerts (NGI0) wrote:
mptcp_connect.sh can be executed manually with "-m <MODE>" and "-C" to make sure everything works as expected when using "mmap" and "sendfile" modes instead of "poll", and with the MPTCP checksum support.
These modes should be validated, but they are not when the selftests are executed via the kselftest helpers. It means that most CIs validating these selftests, like NIPA for the net development trees and LKFT for the stable ones, are not covering these modes.
To fix that, new test programs have been added, simply calling mptcp_connect.sh with the right parameters.
The first patch can be backported up to v5.6, and the second one up to v5.14.
Looks like the failures that Paolo flagged yesterday:
https://lore.kernel.org/all/a7a89aa2-7354-42c7-8219-99a3cafd3b33@redhat.com/
are back as soon as this hit NIPA :(
https://netdev.bots.linux.dev/contest.html?branch=net-next-2025-07-16--00-00...
No idea why TBH, the tests run sequentially and connect.sh run before any of the new ones.
I'm gonna leave it in patchwork in case the next run is clean, please use pw-bot to discard them if they keep failing.
On Tue, 15 Jul 2025 18:53:08 -0700 Jakub Kicinski wrote:
On Tue, 15 Jul 2025 20:43:27 +0200 Matthieu Baerts (NGI0) wrote:
mptcp_connect.sh can be executed manually with "-m <MODE>" and "-C" to make sure everything works as expected when using "mmap" and "sendfile" modes instead of "poll", and with the MPTCP checksum support.
These modes should be validated, but they are not when the selftests are executed via the kselftest helpers. It means that most CIs validating these selftests, like NIPA for the net development trees and LKFT for the stable ones, are not covering these modes.
To fix that, new test programs have been added, simply calling mptcp_connect.sh with the right parameters.
The first patch can be backported up to v5.6, and the second one up to v5.14.
Looks like the failures that Paolo flagged yesterday:
https://lore.kernel.org/all/a7a89aa2-7354-42c7-8219-99a3cafd3b33@redhat.com/
are back as soon as this hit NIPA :(
https://netdev.bots.linux.dev/contest.html?branch=net-next-2025-07-16--00-00...
No idea why TBH, the tests run sequentially and connect.sh run before any of the new ones.
I'm gonna leave it in patchwork in case the next run is clean, please use pw-bot to discard them if they keep failing.
It failed again on the latest run, in a somewhat more concerning way :(
# (duration 30279ms) [FAIL] file received by server does not match (in, out): # -rw------- 1 root root 5171914 Jul 16 05:24 /tmp/tmp.W2c96hxSIz # Trailing bytes are: # w,ѐ)-rw------- 1 root root 5166208 Jul 16 05:24 /tmp/tmp.s33PNcrN6M # Trailing bytes are: # (<v /&^<ֱrnFsaC7INFO: with peek mode: saveAfterPeek
https://netdev-3.bots.linux.dev/vmksft-mptcp/results/211121/4-mptcp-connect-...
BTW feeding the random data into hexdump-like formatter seems advisable? :P
Hi Jakub,
On 16/07/2025 16:26, Jakub Kicinski wrote:
On Tue, 15 Jul 2025 18:53:08 -0700 Jakub Kicinski wrote:
On Tue, 15 Jul 2025 20:43:27 +0200 Matthieu Baerts (NGI0) wrote:
mptcp_connect.sh can be executed manually with "-m <MODE>" and "-C" to make sure everything works as expected when using "mmap" and "sendfile" modes instead of "poll", and with the MPTCP checksum support.
These modes should be validated, but they are not when the selftests are executed via the kselftest helpers. It means that most CIs validating these selftests, like NIPA for the net development trees and LKFT for the stable ones, are not covering these modes.
To fix that, new test programs have been added, simply calling mptcp_connect.sh with the right parameters.
The first patch can be backported up to v5.6, and the second one up to v5.14.
Looks like the failures that Paolo flagged yesterday:
https://lore.kernel.org/all/a7a89aa2-7354-42c7-8219-99a3cafd3b33@redhat.com/
are back as soon as this hit NIPA :(
https://netdev.bots.linux.dev/contest.html?branch=net-next-2025-07-16--00-00...
No idea why TBH, the tests run sequentially and connect.sh run before any of the new ones.
And just to be sure, no CPU or IO overload at that moment? I didn't see such errors reported by our CI, but I can try to reproduce them locally in different conditions.
I'm gonna leave it in patchwork in case the next run is clean, please use pw-bot to discard them if they keep failing.
Oops, sorry I forgot to reply: when I checked in the morning, the last two builds were clean. I wanted to check the next one, then I forgot :)
It failed again on the latest run, in a somewhat more concerning way :(
# (duration 30279ms) [FAIL] file received by server does not match (in, out): # -rw------- 1 root root 5171914 Jul 16 05:24 /tmp/tmp.W2c96hxSIz # Trailing bytes are: # w,ѐ)-rw------- 1 root root 5166208 Jul 16 05:24 /tmp/tmp.s33PNcrN6M # Trailing bytes are: # (<v /&^<rnFsaC7INFO: with peek mode: saveAfterPeek
https://netdev-3.bots.linux.dev/vmksft-mptcp/results/211121/4-mptcp-connect-...
I see, the error can be a bit scary :)
If I'm not mistaken, there was a poll timeout error before. When it is detected, the test is stopped. After each test, even in case of errors, the received file is compared with the sending one. So here, this concerning error is expected.
Anyway, even if the errors are not caused by this series, I think it is better to delay these patches while we are investigating that:
pw-bot: cr
BTW feeding the random data into hexdump-like formatter seems advisable? :P
It is just to check that the CIs can correctly parse random data :-D
Cheers, Matt
On Wed, 16 Jul 2025 16:55:21 +0200 Matthieu Baerts wrote:
Looks like the failures that Paolo flagged yesterday:
https://lore.kernel.org/all/a7a89aa2-7354-42c7-8219-99a3cafd3b33@redhat.com/
are back as soon as this hit NIPA :(
https://netdev.bots.linux.dev/contest.html?branch=net-next-2025-07-16--00-00...
No idea why TBH, the tests run sequentially and connect.sh run before any of the new ones.
And just to be sure, no CPU or IO overload at that moment? I didn't see such errors reported by our CI, but I can try to reproduce them locally in different conditions.
None that I can see. The test run ~10min after all the builds completed, and we wait now for the CPU load to die down and writeback to finish before we kick off VMs. The VMs for various tests are running at that point, the CPU util averaged across cores is 66%.
On 16/07/2025 17:36, Jakub Kicinski wrote:
On Wed, 16 Jul 2025 16:55:21 +0200 Matthieu Baerts wrote:
Looks like the failures that Paolo flagged yesterday:
https://lore.kernel.org/all/a7a89aa2-7354-42c7-8219-99a3cafd3b33@redhat.com/
are back as soon as this hit NIPA :(
https://netdev.bots.linux.dev/contest.html?branch=net-next-2025-07-16--00-00...
No idea why TBH, the tests run sequentially and connect.sh run before any of the new ones.
And just to be sure, no CPU or IO overload at that moment? I didn't see such errors reported by our CI, but I can try to reproduce them locally in different conditions.
None that I can see. The test run ~10min after all the builds completed, and we wait now for the CPU load to die down and writeback to finish before we kick off VMs. The VMs for various tests are running at that point, the CPU util averaged across cores is 66%.
Thank you for having checked, and for the explanations!
OK, so maybe running stress-ng in parallel to be able to reproduce the issue might not help. We will investigate.
Cheers, Matt
linux-stable-mirror@lists.linaro.org