* [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns
@ 2024-06-07 16:31 Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 1/6] selftests: net: lib: ignore possible errors Matthieu Baerts (NGI0)
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: Matthieu Baerts (NGI0) @ 2024-06-07 16:31 UTC (permalink / raw)
To: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang
Cc: netdev, linux-kselftest, linux-kernel, Matthieu Baerts (NGI0),
Geliang Tang
The goal of this series is to use helpers from net/lib.sh with MPTCP
selftests.
- Patches 1 to 4 are some clean-ups and preparation in net/lib.sh:
- Patch 1 simplifies the code handling errexit by ignoring possible
errors instead of disabling errexit temporary.
- Patch 2 removes the netns from the list after having cleaned it, not
to try to clean it twice.
- Patch 3 removes the 'readonly' attribute for the netns variable, to
allow using the same name in local variables.
- Patch 4 removes the local 'ns' var, not to conflict with the global
one it needs to setup.
- Patch 5 uses helpers from net/lib.sh to create and delete netns in
MPTCP selftests.
- Patch 6 uses wait_local_port_listen helper from net/net_helper.sh.
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
Geliang Tang (3):
selftests: net: lib: remove 'ns' var in setup_ns
selftests: mptcp: lib: use setup/cleanup_ns helpers
selftests: mptcp: lib: use wait_local_port_listen helper
Matthieu Baerts (NGI0) (3):
selftests: net: lib: ignore possible errors
selftests: net: lib: remove ns from list after clean-up
selftests: net: lib: do not set ns var as readonly
tools/testing/selftests/net/lib.sh | 55 +++++++++++++++-----------
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 33 +++++-----------
2 files changed, 42 insertions(+), 46 deletions(-)
---
base-commit: a999973236543f0b8f6daeaa7ecba7488c3a593b
change-id: 20240607-upstream-net-next-20240607-selftests-mptcp-net-lib-365e43e2e1ca
Best regards,
--
Matthieu Baerts (NGI0) <matttbe@kernel.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH net-next 1/6] selftests: net: lib: ignore possible errors
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
@ 2024-06-07 16:31 ` Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up Matthieu Baerts (NGI0)
` (5 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Matthieu Baerts (NGI0) @ 2024-06-07 16:31 UTC (permalink / raw)
To: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang
Cc: netdev, linux-kselftest, linux-kernel, Matthieu Baerts (NGI0)
No need to disable errexit temporary, simply ignore the only possible
and not handled error.
Reviewed-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
tools/testing/selftests/net/lib.sh | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/tools/testing/selftests/net/lib.sh b/tools/testing/selftests/net/lib.sh
index 9155c914c064..b2572aff6286 100644
--- a/tools/testing/selftests/net/lib.sh
+++ b/tools/testing/selftests/net/lib.sh
@@ -128,25 +128,17 @@ slowwait_for_counter()
cleanup_ns()
{
local ns=""
- local errexit=0
local ret=0
- # disable errexit temporary
- if [[ $- =~ "e" ]]; then
- errexit=1
- set +e
- fi
-
for ns in "$@"; do
[ -z "${ns}" ] && continue
- ip netns delete "${ns}" &> /dev/null
+ ip netns delete "${ns}" &> /dev/null || true
if ! busywait $BUSYWAIT_TIMEOUT ip netns list \| grep -vq "^$ns$" &> /dev/null; then
echo "Warn: Failed to remove namespace $ns"
ret=1
fi
done
- [ $errexit -eq 1 ] && set -e
return $ret
}
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 1/6] selftests: net: lib: ignore possible errors Matthieu Baerts (NGI0)
@ 2024-06-07 16:31 ` Matthieu Baerts (NGI0)
2024-06-14 10:40 ` Simon Horman
2024-06-07 16:31 ` [PATCH net-next 3/6] selftests: net: lib: do not set ns var as readonly Matthieu Baerts (NGI0)
` (4 subsequent siblings)
6 siblings, 1 reply; 11+ messages in thread
From: Matthieu Baerts (NGI0) @ 2024-06-07 16:31 UTC (permalink / raw)
To: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang
Cc: netdev, linux-kselftest, linux-kernel, Matthieu Baerts (NGI0)
Instead of only appending items to the list, removing them when the
netns has been deleted.
By doing that, we can make sure 'cleanup_all_ns()' is not trying to
remove already deleted netns.
Reviewed-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
tools/testing/selftests/net/lib.sh | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/net/lib.sh b/tools/testing/selftests/net/lib.sh
index b2572aff6286..c7a8cfb477cc 100644
--- a/tools/testing/selftests/net/lib.sh
+++ b/tools/testing/selftests/net/lib.sh
@@ -125,6 +125,20 @@ slowwait_for_counter()
slowwait "$timeout" until_counter_is ">= $((base + delta))" "$@"
}
+remove_ns_list()
+{
+ local item=$1
+ local ns
+ local ns_list=("${NS_LIST[@]}")
+ NS_LIST=()
+
+ for ns in "${ns_list[@]}"; do
+ if [ "${ns}" != "${item}" ]; then
+ NS_LIST+=("${ns}")
+ fi
+ done
+}
+
cleanup_ns()
{
local ns=""
@@ -136,6 +150,8 @@ cleanup_ns()
if ! busywait $BUSYWAIT_TIMEOUT ip netns list \| grep -vq "^$ns$" &> /dev/null; then
echo "Warn: Failed to remove namespace $ns"
ret=1
+ else
+ remove_ns_list "${ns}"
fi
done
@@ -154,17 +170,14 @@ setup_ns()
local ns=""
local ns_name=""
local ns_list=()
- local ns_exist=
for ns_name in "$@"; do
# Some test may setup/remove same netns multi times
if unset ${ns_name} 2> /dev/null; then
ns="${ns_name,,}-$(mktemp -u XXXXXX)"
eval readonly ${ns_name}="$ns"
- ns_exist=false
else
eval ns='$'${ns_name}
cleanup_ns "$ns"
- ns_exist=true
fi
if ! ip netns add "$ns"; then
@@ -173,7 +186,7 @@ setup_ns()
return $ksft_skip
fi
ip -n "$ns" link set lo up
- ! $ns_exist && ns_list+=("$ns")
+ ns_list+=("$ns")
done
NS_LIST+=("${ns_list[@]}")
}
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next 3/6] selftests: net: lib: do not set ns var as readonly
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 1/6] selftests: net: lib: ignore possible errors Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up Matthieu Baerts (NGI0)
@ 2024-06-07 16:31 ` Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 4/6] selftests: net: lib: remove 'ns' var in setup_ns Matthieu Baerts (NGI0)
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Matthieu Baerts (NGI0) @ 2024-06-07 16:31 UTC (permalink / raw)
To: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang
Cc: netdev, linux-kselftest, linux-kernel, Matthieu Baerts (NGI0)
It sounds good to mark the global netns variable as 'readonly', but Bash
doesn't allow the creation of local variables with the same name.
Because it looks like 'readonly' is mainly used here to check if a netns
with that name has already been set, it sounds fine to check if a
variable with this name has already been set instead. By doing that, we
avoid having to modify helpers from MPTCP selftests using the same
variable name as the one used to store the created netns name.
While at it, also avoid an unnecessary call to 'eval' to set a local
variable.
Reviewed-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
tools/testing/selftests/net/lib.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/net/lib.sh b/tools/testing/selftests/net/lib.sh
index c7a8cfb477cc..114b927fee25 100644
--- a/tools/testing/selftests/net/lib.sh
+++ b/tools/testing/selftests/net/lib.sh
@@ -172,11 +172,11 @@ setup_ns()
local ns_list=()
for ns_name in "$@"; do
# Some test may setup/remove same netns multi times
- if unset ${ns_name} 2> /dev/null; then
+ if [ -z "${!ns_name}" ]; then
ns="${ns_name,,}-$(mktemp -u XXXXXX)"
- eval readonly ${ns_name}="$ns"
+ eval "${ns_name}=${ns}"
else
- eval ns='$'${ns_name}
+ ns="${!ns_name}"
cleanup_ns "$ns"
fi
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next 4/6] selftests: net: lib: remove 'ns' var in setup_ns
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
` (2 preceding siblings ...)
2024-06-07 16:31 ` [PATCH net-next 3/6] selftests: net: lib: do not set ns var as readonly Matthieu Baerts (NGI0)
@ 2024-06-07 16:31 ` Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 5/6] selftests: mptcp: lib: use setup/cleanup_ns helpers Matthieu Baerts (NGI0)
` (2 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Matthieu Baerts (NGI0) @ 2024-06-07 16:31 UTC (permalink / raw)
To: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang
Cc: netdev, linux-kselftest, linux-kernel, Matthieu Baerts (NGI0),
Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
The helper setup_ns() doesn't work when a net namespace named "ns" is
passed to it.
For example, in net/mptcp/diag.sh, the name of the namespace is "ns". If
"setup_ns ns" is used in it, diag.sh fails with errors:
Invalid netns name "./mptcp_connect"
Cannot open network namespace "10000": No such file or directory
Cannot open network namespace "10000": No such file or directory
That is because "ns" is also a local variable in setup_ns, and it will
not set the value for the global variable that has been giving in
argument. To solve this, we could rename the variable, but it sounds
better to drop it, as we can resolve the name using the variable passed
in argument instead.
The other local variables -- "ns_list" and "ns_name" -- are more
unlikely to conflict with existing global variables. They don't seem to
be currently used in any other net selftests.
Co-developed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
tools/testing/selftests/net/lib.sh | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/tools/testing/selftests/net/lib.sh b/tools/testing/selftests/net/lib.sh
index 114b927fee25..915f319bcc8b 100644
--- a/tools/testing/selftests/net/lib.sh
+++ b/tools/testing/selftests/net/lib.sh
@@ -167,26 +167,30 @@ cleanup_all_ns()
# setup_ns local remote
setup_ns()
{
- local ns=""
local ns_name=""
local ns_list=()
for ns_name in "$@"; do
- # Some test may setup/remove same netns multi times
- if [ -z "${!ns_name}" ]; then
- ns="${ns_name,,}-$(mktemp -u XXXXXX)"
- eval "${ns_name}=${ns}"
- else
- ns="${!ns_name}"
- cleanup_ns "$ns"
+ # avoid conflicts with local var: internal error
+ if [ "${ns_name}" = "ns_name" ]; then
+ echo "Failed to setup namespace '${ns_name}': invalid name"
+ cleanup_ns "${ns_list[@]}"
+ exit $ksft_fail
fi
- if ! ip netns add "$ns"; then
+ # Some test may setup/remove same netns multi times
+ if [ -z "${!ns_name}" ]; then
+ eval "${ns_name}=${ns_name,,}-$(mktemp -u XXXXXX)"
+ else
+ cleanup_ns "${!ns_name}"
+ fi
+
+ if ! ip netns add "${!ns_name}"; then
echo "Failed to create namespace $ns_name"
cleanup_ns "${ns_list[@]}"
return $ksft_skip
fi
- ip -n "$ns" link set lo up
- ns_list+=("$ns")
+ ip -n "${!ns_name}" link set lo up
+ ns_list+=("${!ns_name}")
done
NS_LIST+=("${ns_list[@]}")
}
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next 5/6] selftests: mptcp: lib: use setup/cleanup_ns helpers
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
` (3 preceding siblings ...)
2024-06-07 16:31 ` [PATCH net-next 4/6] selftests: net: lib: remove 'ns' var in setup_ns Matthieu Baerts (NGI0)
@ 2024-06-07 16:31 ` Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 6/6] selftests: mptcp: lib: use wait_local_port_listen helper Matthieu Baerts (NGI0)
2024-06-12 3:00 ` [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns patchwork-bot+netdevbpf
6 siblings, 0 replies; 11+ messages in thread
From: Matthieu Baerts (NGI0) @ 2024-06-07 16:31 UTC (permalink / raw)
To: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang
Cc: netdev, linux-kselftest, linux-kernel, Matthieu Baerts (NGI0),
Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
This patch includes lib.sh into mptcp_lib.sh, uses setup_ns helper
defined in lib.sh to set up namespaces in mptcp_lib_ns_init(), and
uses cleanup_ns to delete namespaces in mptcp_lib_ns_exit().
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 6ffa9b7a3260..d9e30516dc72 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -1,6 +1,8 @@
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
+. "$(dirname "${0}")/../lib.sh"
+
readonly KSFT_PASS=0
readonly KSFT_FAIL=1
readonly KSFT_SKIP=4
@@ -438,17 +440,13 @@ mptcp_lib_check_tools() {
}
mptcp_lib_ns_init() {
- local sec rndh
-
- sec=$(date +%s)
- rndh=$(printf %x "${sec}")-$(mktemp -u XXXXXX)
+ if ! setup_ns ${@}; then
+ mptcp_lib_pr_fail "Failed to setup namespace ${@}"
+ exit ${KSFT_FAIL}
+ fi
local netns
for netns in "${@}"; do
- eval "${netns}=${netns}-${rndh}"
-
- ip netns add "${!netns}" || exit ${KSFT_SKIP}
- ip -net "${!netns}" link set lo up
ip netns exec "${!netns}" sysctl -q net.mptcp.enabled=1
ip netns exec "${!netns}" sysctl -q net.ipv4.conf.all.rp_filter=0
ip netns exec "${!netns}" sysctl -q net.ipv4.conf.default.rp_filter=0
@@ -456,9 +454,10 @@ mptcp_lib_ns_init() {
}
mptcp_lib_ns_exit() {
+ cleanup_ns "${@}"
+
local netns
for netns in "${@}"; do
- ip netns del "${netns}"
rm -f /tmp/"${netns}".{nstat,out}
done
}
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next 6/6] selftests: mptcp: lib: use wait_local_port_listen helper
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
` (4 preceding siblings ...)
2024-06-07 16:31 ` [PATCH net-next 5/6] selftests: mptcp: lib: use setup/cleanup_ns helpers Matthieu Baerts (NGI0)
@ 2024-06-07 16:31 ` Matthieu Baerts (NGI0)
2024-06-12 3:00 ` [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns patchwork-bot+netdevbpf
6 siblings, 0 replies; 11+ messages in thread
From: Matthieu Baerts (NGI0) @ 2024-06-07 16:31 UTC (permalink / raw)
To: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang
Cc: netdev, linux-kselftest, linux-kernel, Matthieu Baerts (NGI0),
Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
This patch includes net_helper.sh into mptcp_lib.sh, uses the helper
wait_local_port_listen() defined in it to implement the similar mptcp
helper. This can drop some duplicate code.
It looks like this helper from net_helper.sh was originally coming from
MPTCP, but MPTCP selftests have not been updated to use it from this
shared place.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index d9e30516dc72..194c8fc2e55a 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -2,6 +2,7 @@
# SPDX-License-Identifier: GPL-2.0
. "$(dirname "${0}")/../lib.sh"
+. "$(dirname "${0}")/../net_helper.sh"
readonly KSFT_PASS=0
readonly KSFT_FAIL=1
@@ -363,20 +364,7 @@ mptcp_lib_check_transfer() {
# $1: ns, $2: port
mptcp_lib_wait_local_port_listen() {
- local listener_ns="${1}"
- local port="${2}"
-
- local port_hex
- port_hex="$(printf "%04X" "${port}")"
-
- local _
- for _ in $(seq 10); do
- ip netns exec "${listener_ns}" cat /proc/net/tcp* | \
- awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) \
- {rc=0; exit}} END {exit rc}" &&
- break
- sleep 0.1
- done
+ wait_local_port_listen "${@}" "tcp"
}
mptcp_lib_check_output() {
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
` (5 preceding siblings ...)
2024-06-07 16:31 ` [PATCH net-next 6/6] selftests: mptcp: lib: use wait_local_port_listen helper Matthieu Baerts (NGI0)
@ 2024-06-12 3:00 ` patchwork-bot+netdevbpf
6 siblings, 0 replies; 11+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-06-12 3:00 UTC (permalink / raw)
To: Matthieu Baerts
Cc: mptcp, davem, edumazet, kuba, pabeni, shuah, martineau, geliang,
netdev, linux-kselftest, linux-kernel, tanggeliang
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Fri, 07 Jun 2024 18:31:01 +0200 you wrote:
> The goal of this series is to use helpers from net/lib.sh with MPTCP
> selftests.
>
> - Patches 1 to 4 are some clean-ups and preparation in net/lib.sh:
>
> - Patch 1 simplifies the code handling errexit by ignoring possible
> errors instead of disabling errexit temporary.
>
> [...]
Here is the summary with links:
- [net-next,1/6] selftests: net: lib: ignore possible errors
https://git.kernel.org/netdev/net-next/c/7e0620bc6a5e
- [net-next,2/6] selftests: net: lib: remove ns from list after clean-up
https://git.kernel.org/netdev/net-next/c/92fe5670271a
- [net-next,3/6] selftests: net: lib: do not set ns var as readonly
https://git.kernel.org/netdev/net-next/c/577db6bd5750
- [net-next,4/6] selftests: net: lib: remove 'ns' var in setup_ns
https://git.kernel.org/netdev/net-next/c/f8a2d2f874b7
- [net-next,5/6] selftests: mptcp: lib: use setup/cleanup_ns helpers
https://git.kernel.org/netdev/net-next/c/f265d3119a29
- [net-next,6/6] selftests: mptcp: lib: use wait_local_port_listen helper
https://git.kernel.org/netdev/net-next/c/1af3bc912eac
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up
2024-06-07 16:31 ` [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up Matthieu Baerts (NGI0)
@ 2024-06-14 10:40 ` Simon Horman
2024-06-14 14:42 ` Matthieu Baerts
0 siblings, 1 reply; 11+ messages in thread
From: Simon Horman @ 2024-06-14 10:40 UTC (permalink / raw)
To: Matthieu Baerts (NGI0)
Cc: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang, netdev, linux-kselftest,
linux-kernel
On Fri, Jun 07, 2024 at 06:31:03PM +0200, Matthieu Baerts (NGI0) wrote:
> Instead of only appending items to the list, removing them when the
> netns has been deleted.
>
> By doing that, we can make sure 'cleanup_all_ns()' is not trying to
> remove already deleted netns.
>
> Reviewed-by: Geliang Tang <geliang@kernel.org>
> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Hi Matthieu,
I like this, and I am happy to see that it has been accepted.
I do wonder if we can go a step further and use an associative array for
ns_list (maybe renamed). I think this would reduce remove_ns_list to
something like:
unset ns_list["$item"]
OTOH, perhaps this breaks with older versions of bash that we still
care about.
...
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up
2024-06-14 10:40 ` Simon Horman
@ 2024-06-14 14:42 ` Matthieu Baerts
2024-06-15 7:40 ` Simon Horman
0 siblings, 1 reply; 11+ messages in thread
From: Matthieu Baerts @ 2024-06-14 14:42 UTC (permalink / raw)
To: Simon Horman
Cc: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang, netdev, linux-kselftest,
linux-kernel
Hi Simon,
Thank you for your reply!
On 14/06/2024 12:40, Simon Horman wrote:
> On Fri, Jun 07, 2024 at 06:31:03PM +0200, Matthieu Baerts (NGI0) wrote:
>> Instead of only appending items to the list, removing them when the
>> netns has been deleted.
>>
>> By doing that, we can make sure 'cleanup_all_ns()' is not trying to
>> remove already deleted netns.
>
> I do wonder if we can go a step further and use an associative array for
> ns_list (maybe renamed). I think this would reduce remove_ns_list to
> something like:
>
> unset ns_list["$item"]
I agree that it would ease the removal of one item -- which is not
complex to deal with the new helper :) -- but do you see any other benefits?
For the moment, there is no other value to associate with, so we would
do something like NS_MAP["$ns"]=1. We could link the name of the global
variable, but that's not needed for the tests for the moment.
Also, I don't know if it is important, but when we will iterate over the
list of netns, it will not be done following the same order items have
been added into the hashmap. So we will change the order in which items
are deleted.
> OTOH, perhaps this breaks with older versions of bash that we still
> care about.
Good point. I don't have the answer, but associative arrays are starting
to be quite old now :)
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up
2024-06-14 14:42 ` Matthieu Baerts
@ 2024-06-15 7:40 ` Simon Horman
0 siblings, 0 replies; 11+ messages in thread
From: Simon Horman @ 2024-06-15 7:40 UTC (permalink / raw)
To: Matthieu Baerts
Cc: mptcp, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Shuah Khan, Mat Martineau, Geliang Tang, netdev, linux-kselftest,
linux-kernel
Hi Matthieu,
Likewise, thanks for your response.
On Fri, Jun 14, 2024 at 04:42:38PM +0200, Matthieu Baerts wrote:
> Hi Simon,
>
> Thank you for your reply!
>
> On 14/06/2024 12:40, Simon Horman wrote:
> > On Fri, Jun 07, 2024 at 06:31:03PM +0200, Matthieu Baerts (NGI0) wrote:
> >> Instead of only appending items to the list, removing them when the
> >> netns has been deleted.
> >>
> >> By doing that, we can make sure 'cleanup_all_ns()' is not trying to
> >> remove already deleted netns.
> >
> > I do wonder if we can go a step further and use an associative array for
> > ns_list (maybe renamed). I think this would reduce remove_ns_list to
> > something like:
> >
> > unset ns_list["$item"]
>
> I agree that it would ease the removal of one item -- which is not
> complex to deal with the new helper :) -- but do you see any other benefits?
>
> For the moment, there is no other value to associate with, so we would
> do something like NS_MAP["$ns"]=1. We could link the name of the global
> variable, but that's not needed for the tests for the moment.
>
> Also, I don't know if it is important, but when we will iterate over the
> list of netns, it will not be done following the same order items have
> been added into the hashmap. So we will change the order in which items
> are deleted.
I agree that it would probably end up being a NS_MAP["$ns"]=1,
i.e. a dummy value as there is no natural one to use.
I had not considered the order issue.
And yes, the benefit I see would be limited to removal.
Which as you point out is not a terrible burden with the helper you added.
While, OTOH, my idea adds complexity and unknowns elsewhere.
So overall, perhaps it's best left as an idea for later.
As the code changes for other reasons (who knows what?)
an associative array may make more sense than it does now.
> > OTOH, perhaps this breaks with older versions of bash that we still
> > care about.
>
> Good point. I don't have the answer, but associative arrays are starting
> to be quite old now :)
Yes, I think so too.
But I also thought it was worth mentioning.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-06-15 7:40 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-07 16:31 [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 1/6] selftests: net: lib: ignore possible errors Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 2/6] selftests: net: lib: remove ns from list after clean-up Matthieu Baerts (NGI0)
2024-06-14 10:40 ` Simon Horman
2024-06-14 14:42 ` Matthieu Baerts
2024-06-15 7:40 ` Simon Horman
2024-06-07 16:31 ` [PATCH net-next 3/6] selftests: net: lib: do not set ns var as readonly Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 4/6] selftests: net: lib: remove 'ns' var in setup_ns Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 5/6] selftests: mptcp: lib: use setup/cleanup_ns helpers Matthieu Baerts (NGI0)
2024-06-07 16:31 ` [PATCH net-next 6/6] selftests: mptcp: lib: use wait_local_port_listen helper Matthieu Baerts (NGI0)
2024-06-12 3:00 ` [PATCH net-next 0/6] selftests: mptcp: use net/lib.sh to manage netns patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).