From nobody Mon Feb 9 13:57:23 2026 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEC5025A2C2 for ; Tue, 21 Oct 2025 23:47:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761090443; cv=none; b=EHi+J1cFcUaxn4Yfb7Il8SN9eCgd/DzNnauWZ5KX3JWaawz2UGn8rhqZIxXM4NnF8PgzCx/Y8TCenLNuGBPY82F7O40BMqy1h4qT7fdo7q9fCbU0SzGNxCdcL8WBJD2ZqLsQTXDROUsclA20384AipyIi4ShbA4DiinI8Be9kyw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761090443; c=relaxed/simple; bh=lSmQpIOx2H+wwJpTKFrN8deypuk5nLfSt39JjhPsaKs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sbvntjH5tPPLaBgwWIS88+JpifnxK9tJ1lh+/A9BTpb6YV0LY4/leCqu92RK8X9dd+ChkhD10AECTiCpcfy8FfEXUxxzNetmLPaYV5CNKv4KoI8/kaE/RYrg4gAg0jfoPdZaazzNiRQ0eHVyiILYlqqAVnP3RjXV9M0dmSO6NVM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=f9Kph4+0; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="f9Kph4+0" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-796f9a8a088so5580115b3a.1 for ; Tue, 21 Oct 2025 16:47:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761090436; x=1761695236; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=C11MVom9GcVVigp1JH83uYh4dJ6GwBGVsbP0u+3A/D8=; b=f9Kph4+0zDcKIBxfP0+EgWXBXt+CyK8sMV/E5hmt7T3LgSiCfpUV064w/7RaIn8TfH adbMJdAhV5KTscE7C3b/PVvSLCUzaHfOhHZI1S5Y5YoZzSiBMw3k+tD82HERenF1uaZa VLtfGPecQE1mve70L7MibxDd0GU0wDAI9T+QRoO2YZRpJEmxgZM/sUyC7B+/yEsaKqiz znL1lmBQEzO92yuAdmwcVhElCRNYwi0gN2zuLJevsCevD87AXgkil5Wr8LkxM8bd6zJ3 wLiFZiSe9j6pNV39d6iTcczvLGUIbZKRKvibTz9s7KX4IYw5VjpLmB0BVZuEtrDGuIMA UpTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761090436; x=1761695236; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=C11MVom9GcVVigp1JH83uYh4dJ6GwBGVsbP0u+3A/D8=; b=Xn4GFigyZyG+WealF4Rhkpo+KLBqCSZh34PE+GL5+KkXa9JCb4cnW4xz8jq22YE5Ug YgAxPpcquIDNf4oFLCvz1ip0g47g25SDMOP+EHnqMO/1q5EBDZBNoDmzZRkHUWTE67gj ilSoI5tCyPfnYw2WFzdR+8+4ZO3WoaRGAf9578e9CgBwVyehmfZG/h55M2Dsv3FEeuxY ldZDDwC6iE5owdjKWwndXWRhd035aoaWBwtxtiwqvASEiipt4ztAWU0LT68nFCSoDbn5 uoMAFJVPNSKC56nQCwo1Ex8mcA0pfK8Eg75xuEKFTnklHLKy3HcTBE7dy237x804WGpj IfCg== X-Forwarded-Encrypted: i=1; AJvYcCUktYwXguujUMv+JHkKbLRqztZ4/oKtDhg45Xu20gRjtaxAEQpk5PWvEVn7Sc5YRwvFugX+LlFuy1xnw1A=@vger.kernel.org X-Gm-Message-State: AOJu0YzFbiaAZz9YjMTDthMrtpjOjt9QUi5qLPzmufrGwbRePDZp2rZT qNLEhWPS7/IXy5R/XRkPMYgVf08o2SzXw+OX+yEGDk/MGB8pJNbVUc7d X-Gm-Gg: ASbGnct4c6Old9HWKmIUKmnnUXqD/EyaBvrfcCS4g3Sj9QW0KBJpmtHB963jHcEMWyX 2OKwO46duvh71tsFN3SHmd1NDcLr9/7KnwJuytS0r/TY0vlwkO7iStir7V9n0U21hpp7/yowYip 2vrNt0XQdlBp0q33Kc4GzbkFRVtswINRQolnu7dH+TeANpgClD9EOAQw2WHkX/2CL4aHRAYqSqN ZkA7HYg3AxqNpEzOPWRWIcw7ILLcKFe7YWpiBExVzDkhKEzCLTXJaO74a5XhPPejn8wApM1t9kr zRJP+JpzSkzGI+KQzuLKDtqU+xpm8tSebqjb2SeRQSKyUAkNsTucSNK/sfL3HRbdXEbeAlAkjqX GjWvlf1Akrb1f7+SlTPSWYDf5NHjCaGOp9kZ7sgWptYt6uy3KC/szRrWtmqYCl4wok1R/R1kSyw == X-Google-Smtp-Source: AGHT+IFruEIphVWMplpeA2jQqUDuG27XuGu5lChapLWZrI9BuGwBvnIU/lhkYltuDcRgwCsCwNZgMg== X-Received: by 2002:a05:6a21:8881:b0:33a:86cd:1553 with SMTP id adf61e73a8af0-33a86dc7f16mr2340882637.12.1761090436048; Tue, 21 Oct 2025 16:47:16 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:74::]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b6cdafadb8dsm833596a12.1.2025.10.21.16.47.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Oct 2025 16:47:15 -0700 (PDT) From: Bobby Eshleman Date: Tue, 21 Oct 2025 16:47:01 -0700 Subject: [PATCH net-next v7 18/26] selftests/vsock: prepare vm management helpers for namespaces Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251021-vsock-vmtest-v7-18-0661b7b6f081@meta.com> References: <20251021-vsock-vmtest-v7-0-0661b7b6f081@meta.com> In-Reply-To: <20251021-vsock-vmtest-v7-0-0661b7b6f081@meta.com> To: Stefano Garzarella , Shuah Khan , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Stefan Hajnoczi , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Bryan Tan , Vishnu Dasa , Broadcom internal kernel review list , Bobby Eshleman Cc: virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, berrange@redhat.com, Bobby Eshleman X-Mailer: b4 0.13.0 From: Bobby Eshleman Add namespace support to vm management, ssh helpers, and vsock_test wrapper functions. This is in preparation for adding namespace tests that rely on SSH and spinning up VMs in different namespaces. The functions still work correctly within the init ns, though the caller must now pass "init_ns" as the requested namespace. Signed-off-by: Bobby Eshleman --- tools/testing/selftests/vsock/vmtest.sh | 102 ++++++++++++++++++++++------= ---- 1 file changed, 72 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/vsock/vmtest.sh b/tools/testing/selfte= sts/vsock/vmtest.sh index 49b3dd78efad..e8f938419e8e 100755 --- a/tools/testing/selftests/vsock/vmtest.sh +++ b/tools/testing/selftests/vsock/vmtest.sh @@ -141,7 +141,18 @@ ns_set_mode() { } =20 vm_ssh() { - ssh -q -o UserKnownHostsFile=3D/dev/null -p ${SSH_HOST_PORT} localhost "$= @" + local ns_exec + + if [[ "${1}" =3D=3D init_ns ]]; then + ns_exec=3D"" + else + ns_exec=3D"ip netns exec ${1}" + fi + + shift + + ${ns_exec} ssh -q -o UserKnownHostsFile=3D/dev/null -p ${SSH_HOST_PORT} l= ocalhost $* + return $? } =20 @@ -252,10 +263,12 @@ terminate_pidfiles() { =20 vm_start() { local pidfile=3D$1 + local ns=3D$2 local logfile=3D/dev/null local verbose_opt=3D"" local kernel_opt=3D"" local qemu_opts=3D"" + local ns_exec=3D"" local qemu =20 qemu=3D$(command -v "${QEMU}") @@ -276,7 +289,11 @@ vm_start() { kernel_opt=3D"${KERNEL_CHECKOUT}" fi =20 - vng \ + if [[ "${ns}" !=3D "init_ns" ]]; then + ns_exec=3D"ip netns exec ${ns}" + fi + + ${ns_exec} vng \ --run \ ${kernel_opt} \ ${verbose_opt} \ @@ -291,6 +308,7 @@ vm_start() { } =20 vm_wait_for_ssh() { + local ns=3D$1 local i =20 i=3D0 @@ -298,7 +316,8 @@ vm_wait_for_ssh() { if [[ ${i} -gt ${WAIT_PERIOD_MAX} ]]; then die "Timed out waiting for guest ssh" fi - if vm_ssh -- true; then + + if vm_ssh "${ns}" -- true; then break fi i=3D$(( i + 1 )) @@ -342,28 +361,42 @@ wait_for_listener() } =20 vm_wait_for_listener() { - local port=3D$1 + local ns=3D$1 + local port=3D$2 =20 - vm_ssh <&1 | log_host rc=3D$? else - ${VSOCK_TEST} \ + ${cmd} \ --mode=3Dserver \ --peer-cid=3D"${cid}" \ --control-port=3D"${port}" 2>&1 | log_host & @@ -418,7 +457,7 @@ host_vsock_test() { return $rc fi =20 - host_wait_for_listener "${port}" "${WAIT_PERIOD}" "${WAIT_PERIOD_MAX}" + host_wait_for_listener "${ns}" "${port}" "${WAIT_PERIOD}" "${WAIT_PERIOD= _MAX}" rc=3D$? fi set +o pipefail @@ -462,11 +501,11 @@ log_guest() { } =20 test_vm_server_host_client() { - if ! vm_vsock_test "server" 2 "${TEST_GUEST_PORT}"; then + if ! vm_vsock_test "init_ns" "server" 2 "${TEST_GUEST_PORT}"; then return "${KSFT_FAIL}" fi =20 - if ! host_vsock_test "127.0.0.1" "${VSOCK_CID}" "${TEST_HOST_PORT}"; then + if ! host_vsock_test "init_ns" "127.0.0.1" "${VSOCK_CID}" "${TEST_HOST_PO= RT}"; then return "${KSFT_FAIL}" fi =20 @@ -474,11 +513,11 @@ test_vm_server_host_client() { } =20 test_vm_client_host_server() { - if ! host_vsock_test "server" "${VSOCK_CID}" "${TEST_HOST_PORT_LISTENER}"= ; then + if ! host_vsock_test "init_ns" "server" "${VSOCK_CID}" "${TEST_HOST_PORT_= LISTENER}"; then return "${KSFT_FAIL}" fi =20 - if ! vm_vsock_test "10.0.2.2" 2 "${TEST_HOST_PORT_LISTENER}"; then + if ! vm_vsock_test "init_ns" "10.0.2.2" 2 "${TEST_HOST_PORT_LISTENER}"; t= hen return "${KSFT_FAIL}" fi =20 @@ -488,11 +527,14 @@ test_vm_client_host_server() { test_vm_loopback() { local port=3D60000 # non-forwarded local port =20 - if ! vm_vsock_test "server" 1 "${port}"; then + vm_ssh "init_ns" -- modprobe vsock_loopback &> /dev/null || : + + if ! vm_vsock_test "init_ns" "server" 1 "${port}"; then return "${KSFT_FAIL}" fi =20 - if ! vm_vsock_test "127.0.0.1" 1 "${port}"; then + + if ! vm_vsock_test "init_ns" "127.0.0.1" 1 "${port}"; then return "${KSFT_FAIL}" fi =20 @@ -550,8 +592,8 @@ run_shared_vm_test() { =20 host_oops_cnt_before=3D$(dmesg | grep -c -i 'Oops') host_warn_cnt_before=3D$(dmesg --level=3Dwarn | wc -l) - vm_oops_cnt_before=3D$(vm_ssh -- dmesg | grep -c -i 'Oops') - vm_warn_cnt_before=3D$(vm_ssh -- dmesg --level=3Dwarn | wc -l) + vm_oops_cnt_before=3D$(vm_ssh "init_ns" -- dmesg | grep -c -i 'Oops') + vm_warn_cnt_before=3D$(vm_ssh "init_ns" -- dmesg --level=3Dwarn | wc -l) =20 name=3D$(echo "${1}" | awk '{ print $1 }') eval test_"${name}" @@ -569,13 +611,13 @@ run_shared_vm_test() { rc=3D$KSFT_FAIL fi =20 - vm_oops_cnt_after=3D$(vm_ssh -- dmesg | grep -i 'Oops' | wc -l) + vm_oops_cnt_after=3D$(vm_ssh "init_ns" -- dmesg | grep -i 'Oops' | wc -l) if [[ ${vm_oops_cnt_after} -gt ${vm_oops_cnt_before} ]]; then echo "FAIL: kernel oops detected on vm" | log_host rc=3D$KSFT_FAIL fi =20 - vm_warn_cnt_after=3D$(vm_ssh -- dmesg --level=3Dwarn | wc -l) + vm_warn_cnt_after=3D$(vm_ssh "init_ns" -- dmesg --level=3Dwarn | wc -l) if [[ ${vm_warn_cnt_after} -gt ${vm_warn_cnt_before} ]]; then echo "FAIL: kernel warning detected on vm" | log_host rc=3D$KSFT_FAIL @@ -620,8 +662,8 @@ cnt_total=3D0 if shared_vm_tests_requested "${ARGS[@]}"; then log_host "Booting up VM" pidfile=3D$(mktemp $PIDFILE_TEMPLATE) - vm_start "${pidfile}" - vm_wait_for_ssh + vm_start "${pidfile}" "init_ns" + vm_wait_for_ssh "init_ns" log_host "VM booted up" =20 run_shared_vm_tests "${ARGS[@]}" --=20 2.47.3