From nobody Thu Oct 9 16:43:22 2025 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (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 BB11923B63B; Tue, 17 Jun 2025 04:54:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750136047; cv=none; b=iC5OX/0tucOi0D+TA9yPbw+v+6uHzp1/jBVvXtlk/zxbluV6nJZBOWpGflu6OnjLDnS0gAyzeudTjK/K1yJfCKDGzppudRT2glLtIBGJT2+5SxlXBpTsHhFpB/9G+ePyPYdcB1GpFVfST42Jp84UiJFQSumCnQQTuEbvyLpmw7w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750136047; c=relaxed/simple; bh=yYhC1SvTr4r/q4aKyafrkgVQ1b+GHoCyO4kJ6c3v10c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ixSTZgr6TV/rID65h1fsGnioTurwcQqbj5zvvtvNlL8O/VzEIfp3kTyVrL/UBj9Y8r9Tdv1R3+sjN+5IKI74FdslWtmwJHsz83RZUEfIp6SG0EYkQRhBP3Vp/G4vE9FBd38Ep0bsnH8u+wjVZAX4pzBKtv6fpUiEFbGwDgAu6E4= 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=clDsEYf7; arc=none smtp.client-ip=209.85.215.171 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="clDsEYf7" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-879d2e419b9so5104793a12.2; Mon, 16 Jun 2025 21:54:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750136045; x=1750740845; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Te1ubGn4t4pkro6tbCWw9qlZ7DcNvsq3ids6nDR7Ezw=; b=clDsEYf7kG4oxWg3neixkhvTD4lVK7qEtnVpV9vX4ulkOUQFy6VH0bDYqzq0XoQVWe imnQmkQBcCEe3J/gWd0Cj90eiIFHbim9x8+V008G3/sLQJNt79tSdSCtPlyd3igRa9ob bk+P6v9e68+V+iVPg/P99Yzm4HZimdRHK23pO7Yxn926BNSBWn4qW4fPYKJ6bcMkg1BP mJooKpj+FLzih8hJqdMYAvyR+Bqp2wOAFJMCQGkbj5KBwb7J4sx3Vy648ttovVXfSzc0 mi59CAHl/q//TjqyAXBUvkGRrZoR0dBRMr/nLAcDMM4UNY3scmS3gIjWMx9PBvwy7YJ3 11Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750136045; x=1750740845; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Te1ubGn4t4pkro6tbCWw9qlZ7DcNvsq3ids6nDR7Ezw=; b=LQE5imTSStT0cNs9vWtE4tGgKhddwIy6WoJE2T5csw4NJmHATWbs2qnTeWXT3m/H7e BCQqIiJBDt9icyuJ6JjHRaPzqQm0KEjyoa1bs2QcN9P7tnjrs0BZiui7lL6LhO5t2Jp6 m6kxW/S7kfVcyDLsNPrhJT4rlgOnInOKpdOZcs65o7iCCdOk2CXDfzLLggJvxLPDifdI vU6RsIs4w5DghepITYM4QkKqB44xrW1Jnkf67qZ27mRCRrAT1u29jPt0xVXG3NUBKWWP SK7GBGFsDFBIfpRTFEnS0p4WCh9dXzgEcLiok+SOC77FO170tglmkfDpH9BCzDUnA8rw dWRA== X-Forwarded-Encrypted: i=1; AJvYcCURqAsvv1GwIyLq4KYP4rEf+Ur6kwq2O4Hs0F6dM1GCcHBkAyyOKhIX2+BXe7H6radMLkW2DUjT@vger.kernel.org, AJvYcCWRAArT1jgmSt0hAz9gnRhtvuOtkj9CxMP9pxjkZFM9XU+bkuxalDNekxzIZPBR1ymOEr+lLQZ2y8Gy/aT0@vger.kernel.org, AJvYcCXzX4ayfX371TmAQzX5VHrRObN7HUPICdzSMHMeonB4TYy+tg3bvhHzzVG95O4wQ5Wrj7A=@vger.kernel.org X-Gm-Message-State: AOJu0YyHz1gYePG0Nlwv7ld5kQnIWkIEnvD+XXNfw6inUegRnIiYJAXE I5aG2QYWINCcX6IgiSZZn2Sj/U6BKjr8244x2bB5tEHgZZJkMXSG01M6 X-Gm-Gg: ASbGncsPpktfGAPksQkHBi0WWZYRpR/stwLp5R3HkVjXLNqYOTF3q5Ib6e9fNqm8D4t JL2+obWw9F/0QV+HyAlG4A0tXcjeuxZ7HFJWNqByXu0vgw9yOei7WC306W6gr/qPK43dEMEEVyB nIjfDdNBxd7G33OvZjoJxIZUXb+EU6Vns+/BfglgZXf9CScAgJN/2HGhEWT7z7q0JTi/w1WN6p+ 766Ecx376XqgR5q/2ABid3ZUsYXfLUMTzZRHKT0xjwrH5tEEjFG0muA4nfzwOPFlz3HwK+wwoIi R4qnkpoalpt/4wfE+6IdeDLqQ+or98kBJk67WjOcKIOkSPoN+FMsOHvysvrlEOoYUKsR0q8fZbS avjSOcySZqcn4GnSfRx0= X-Google-Smtp-Source: AGHT+IFWLomMyMMiootDI6sNH+M2APnpL0s4349WJSyZsCDj3PUu6b9MZuRQQzq74o3s8FUXyYRzBA== X-Received: by 2002:a05:6a00:1787:b0:748:1bac:aff9 with SMTP id d2e1a72fcca58-7489cfc7ed0mr16816419b3a.18.1750136044879; Mon, 16 Jun 2025 21:54:04 -0700 (PDT) Received: from devant.antgroup-inc.local ([47.89.83.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74890005f47sm8132852b3a.51.2025.06.16.21.54.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Jun 2025 21:54:04 -0700 (PDT) From: Xuewei Niu X-Google-Original-From: Xuewei Niu To: sgarzare@redhat.com, mst@redhat.com, pabeni@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, davem@davemloft.net, netdev@vger.kernel.org, stefanha@redhat.com, leonardi@redhat.com Cc: virtualization@lists.linux.dev, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, fupan.lfp@antgroup.com, Xuewei Niu Subject: [PATCH net-next v3 1/3] vsock: Add support for SIOCINQ ioctl Date: Tue, 17 Jun 2025 12:53:44 +0800 Message-Id: <20250617045347.1233128-2-niuxuewei.nxw@antgroup.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250617045347.1233128-1-niuxuewei.nxw@antgroup.com> References: <20250617045347.1233128-1-niuxuewei.nxw@antgroup.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add support for SIOCINQ ioctl, indicating the length of bytes unread in the socket. The value is obtained from `vsock_stream_has_data()`. Signed-off-by: Xuewei Niu --- net/vmw_vsock/af_vsock.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 2e7a3034e965..bae6b89bb5fb 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1389,6 +1389,28 @@ static int vsock_do_ioctl(struct socket *sock, unsig= ned int cmd, vsk =3D vsock_sk(sk); =20 switch (cmd) { + case SIOCINQ: { + ssize_t n_bytes; + + if (!vsk->transport) { + ret =3D -EOPNOTSUPP; + break; + } + + if (sock_type_connectible(sk->sk_type) && + sk->sk_state =3D=3D TCP_LISTEN) { + ret =3D -EINVAL; + break; + } + + n_bytes =3D vsock_stream_has_data(vsk); + if (n_bytes < 0) { + ret =3D n_bytes; + break; + } + ret =3D put_user(n_bytes, arg); + break; + } case SIOCOUTQ: { ssize_t n_bytes; =20 --=20 2.34.1 From nobody Thu Oct 9 16:43:22 2025 Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) (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 8A49B23F26B; Tue, 17 Jun 2025 04:54:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750136051; cv=none; b=ulG10SLoVN9jFskR4/xlWQCtvIcAUZg4HzJtAW0Dh2F7T+qpU0Xrshz5OpHxVLZctyWBDDwx0cCCruWPqW52YSgeO1aZf0FeD5ZYm7LGofR5UwkaL+gfivhbge4NQLQyxDdcYpg02OKKp68mnvpkkju9vImjzIhNfmqtBZ2xJxE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750136051; c=relaxed/simple; bh=qAAEyNvoPsG1J2rvH/RjZ+lSWAbM8Y+vzxmxNzalfo8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MpI1ZmBXyQs/33i5tNt+EuvMtTF/nzQJLzYnHZYfQTHoW1z//wY/DAL3/HgUkD8+D2op2+/hkeBvL9MT81+yLQotXPQKqI0loE1BFqQQSjWrG986hOfbQU+ALYRL1Z5Oj3nwQWuBcMvzrAEOKv5xBeM6G8vr10vBSPg31sbluK8= 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=jFD7oag4; arc=none smtp.client-ip=209.85.215.176 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="jFD7oag4" Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-b2c49373c15so4059798a12.3; Mon, 16 Jun 2025 21:54:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750136049; x=1750740849; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bgHC0F7sRFE0xD766MwngM3VrQ1DYAvaKq5Aq9oTyWQ=; b=jFD7oag4wIRgOuduHBpoxkdYG3nxhd6H+q6awhxpvVubDuQPsuuuLSEjEV+v3Gorbg cfZReirfZoiDdBahIbOm/kmN03tpys9JcC8FGjatujP0uAUVtBf9chQvXNRtHWUsLDh5 72MWZqa/mJuXdNyaKc7NSAMaF+LfI68339aKyZ/+tvKQslYwA5PxrugH+8yBYfkSp57I Pm85x6O1jF619WMiYaUlGYOw91xF/DJgfRCdcTLRDnQ9qQBFFK22NEMlXyyWu+vb2GhB PudbRdZT5GcU7xAsv2FvOSUHxJzG6PFQAIbNOsGmon+6PYEX2+d3z3lPbmOT6807XYx1 wFZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750136049; x=1750740849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bgHC0F7sRFE0xD766MwngM3VrQ1DYAvaKq5Aq9oTyWQ=; b=KfNEewcpqV+yoTNyb5ezrkfUsk/DdcJgrDBbanZzJaYjVcWKwLxOfVNp3iz5QWsXfM drlOKoACGgq5P9VlXdviq56WMHfNR195H3KOcs0WLVTSkIDrx5pAHJSX/ZvtJbDODLiR HO6GtUVicAFJXYxzfuurtFmiZVwdNgQIfE4CQe2fWwU03tWlwDOG+3bPa4YNtdavKfEf t004f68hkvyFjHQX4Ss24ggbr+B8/kktlci2xP6mBUc1fVYpnZ9FsWwA2yNGv+BI9FfR 0Md4LUjvCqeKhiAXc/v8R2lEbOrfEA8hZ1oCbTZaLJfmzFU5GS8ub2o0L8XIXllLVJRj 8ciQ== X-Forwarded-Encrypted: i=1; AJvYcCVw3wCWuUV3a/r09UcvexJab0h9cG1+V2IFxkiFWDD3KNrwo6rrgkuIZg90+Ik3KHGcj5zEp19BLT4nvVdX@vger.kernel.org, AJvYcCWMpLuPTd2g7wQ2bLd92KJp9SI8cHHnTYr3x7SGOkn0+TYOfhxlmvUKXvwj+1T8MQ3+bNYoqCio@vger.kernel.org, AJvYcCXOjIjRNRPHCItbM/tPBrdS6hTa70C71y18buDLZ5aHzDXC4qAwIum7i7VJsDKLxXVJnrg=@vger.kernel.org X-Gm-Message-State: AOJu0YyYlRhNd3zbsLiYgkMoUCTQ6dSSvhmDQ2j4w/E4Js1InF2aDaDU pkB3C0M5uwt6UY1xmAu3hxq8IQqV+1oUUAtncPJ2ERXTOoc1W5FV5sY2 X-Gm-Gg: ASbGncsDVsF/qNHJjvM61uiJ40s0Kdr6WgqjyBuf/cQ+Rq+PN0jr69SS3HLrsAv2ylG q/Gpcd4TdSOsnUvoGLx7xC1fPulvZgN0rBkiOJTXwcP+mIlmdPaYJ01o78TyC+cex9W8mZ9bTU3 HfZGG+Viodi5xmzAEiHZuoO418jbpyFodWroQG1sMCUV2mvOWR5NpK1fwAR3G4w9r0bIBLb7bB3 ah1bmxcvM0XmNs9fWW6OyFCQ0vBARhUgghFQTxUVUi87YwASz1vOcMCEAJHHBnIXF8gXkRjFTQh M15Ggq2fUuuvVel0+BTIequ5cwrYwfjUCBeXse/YTymryyJnCCqkOJ6BPTwBUB2SSvkM+HTJOES qTzhJrMbK X-Google-Smtp-Source: AGHT+IEfXDDzD9PnwNIYIzF/TekNHe0XANz+pvj6cipCHX/lkoLuDej0R9GMax6kH5rGQiod4Tat0w== X-Received: by 2002:a05:6a21:648b:b0:21f:53e4:1925 with SMTP id adf61e73a8af0-21fbd523a1dmr15565101637.10.1750136048640; Mon, 16 Jun 2025 21:54:08 -0700 (PDT) Received: from devant.antgroup-inc.local ([47.89.83.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74890005f47sm8132852b3a.51.2025.06.16.21.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Jun 2025 21:54:08 -0700 (PDT) From: Xuewei Niu X-Google-Original-From: Xuewei Niu To: sgarzare@redhat.com, mst@redhat.com, pabeni@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, davem@davemloft.net, netdev@vger.kernel.org, stefanha@redhat.com, leonardi@redhat.com Cc: virtualization@lists.linux.dev, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, fupan.lfp@antgroup.com, Xuewei Niu Subject: [PATCH net-next v3 2/3] test/vsock: Add retry mechanism to ioctl wrapper Date: Tue, 17 Jun 2025 12:53:45 +0800 Message-Id: <20250617045347.1233128-3-niuxuewei.nxw@antgroup.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250617045347.1233128-1-niuxuewei.nxw@antgroup.com> References: <20250617045347.1233128-1-niuxuewei.nxw@antgroup.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Wrap the ioctl in `ioctl_int()`, which takes a pointer to the actual int value and an expected int value. The function will not return until either the ioctl returns the expected value or a timeout occurs, thus avoiding immediate failure. Signed-off-by: Xuewei Niu --- tools/testing/vsock/util.c | 37 ++++++++++++++++++++++++++++--------- tools/testing/vsock/util.h | 1 + 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/tools/testing/vsock/util.c b/tools/testing/vsock/util.c index 0c7e9cbcbc85..ecfbe52efca2 100644 --- a/tools/testing/vsock/util.c +++ b/tools/testing/vsock/util.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include =20 @@ -97,28 +98,46 @@ void vsock_wait_remote_close(int fd) close(epollfd); } =20 -/* Wait until transport reports no data left to be sent. - * Return false if transport does not implement the unsent_bytes() callbac= k. +/* Wait until ioctl gives an expected int value. + * Return a negative value if the op is not supported. */ -bool vsock_wait_sent(int fd) +int ioctl_int(int fd, unsigned long op, int *actual, int expected) { - int ret, sock_bytes_unsent; + int ret; + char name[32]; + + if (!actual) { + fprintf(stderr, "%s requires a non-null pointer\n", __func__); + exit(EXIT_FAILURE); + } + + snprintf(name, sizeof(name), "ioctl(%lu)", op); =20 timeout_begin(TIMEOUT); do { - ret =3D ioctl(fd, SIOCOUTQ, &sock_bytes_unsent); + ret =3D ioctl(fd, op, actual); if (ret < 0) { if (errno =3D=3D EOPNOTSUPP) break; =20 - perror("ioctl(SIOCOUTQ)"); + perror(name); exit(EXIT_FAILURE); } - timeout_check("SIOCOUTQ"); - } while (sock_bytes_unsent !=3D 0); + timeout_check(name); + } while (*actual !=3D expected); timeout_end(); =20 - return !ret; + return ret; +} + +/* Wait until transport reports no data left to be sent. + * Return false if transport does not implement the unsent_bytes() callbac= k. + */ +bool vsock_wait_sent(int fd) +{ + int sock_bytes_unsent; + + return !(ioctl_int(fd, SIOCOUTQ, &sock_bytes_unsent, 0)); } =20 /* Create socket , bind to and return the file descripto= r. */ diff --git a/tools/testing/vsock/util.h b/tools/testing/vsock/util.h index 5e2db67072d5..f3fe725cdeab 100644 --- a/tools/testing/vsock/util.h +++ b/tools/testing/vsock/util.h @@ -54,6 +54,7 @@ int vsock_stream_listen(unsigned int cid, unsigned int po= rt); int vsock_seqpacket_accept(unsigned int cid, unsigned int port, struct sockaddr_vm *clientaddrp); void vsock_wait_remote_close(int fd); +int ioctl_int(int fd, unsigned long op, int *actual, int expected); bool vsock_wait_sent(int fd); void send_buf(int fd, const void *buf, size_t len, int flags, ssize_t expected_ret); --=20 2.34.1 From nobody Thu Oct 9 16:43:22 2025 Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.175]) (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 3E90D23B618; Tue, 17 Jun 2025 04:54:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750136054; cv=none; b=Ve13wohXWGibEdPF4LYKWEDdijHgutwIgvR0ec/J4eyHqGjpJpvfKatAe5wXkTi8rboJdCQhSP+pL0GQewACqs7Uzu7TUV85TK58qH7/3U864cb0y3U8z4+y3Kz7EQO+3EhgEHvSl7jtt3r6kKWxrcLcK+F/qs/n4I/o5mfa7mc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750136054; c=relaxed/simple; bh=hgFFSeG/Y3hy3TRLWUuF2/wDRWFdJSGr2WyqIM1rJ5E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JVz1Zg96P+H9MyIA7J4yGqoEE8JT4rxxLjGZFlAV5tvWadHwO1g8jU3kKiY2EvzOKS0/IdQM1TmfEK2QSYG8QIsvQ24Rk0oEDJJ/H4HFW7ShkBTWxdU90yuAV3Hq8vyHTues7qS8PjauihpUv02bPDZsauSw48G2M3m+VZfqnE8= 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=QPZhcL8C; arc=none smtp.client-ip=209.85.215.175 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="QPZhcL8C" Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-b26f5f47ba1so4312728a12.1; Mon, 16 Jun 2025 21:54:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750136052; x=1750740852; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=n8zzLDE6njEpryzHGmq8M68mZjr/gPDq07PO+JYQaTc=; b=QPZhcL8C+/qJoAr5KcBzS2GWrEhfU4T7RF9I3hy5ea2DG5asCqoIhSv1x/pJb9mUWg +7rxAT9h67LrEgXz5qIQBA23nQzN/Iw9YWd6SneHUXzAiSaBUrKyLNjduLVyaNyEaZgB yz15G5fP6Hebi4FWKDy5HloK9JM9sleLnpeY+R2l+JeWqfQBqQKcrIR7Yabj/dX4rm0t be8fcaCShIiOJySsA1cTwh726ryuD65ikr1LrvfE6uEZ3BTCJ7gxv6pjVdPvJwV201U1 M7WVNDlzKHr+hNPFhQ8/4Q/zJtkgwCFZNSGVugPe7Zq8ns1Xb9zbzAeXxm+ao4fqTzF8 hJiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750136052; x=1750740852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n8zzLDE6njEpryzHGmq8M68mZjr/gPDq07PO+JYQaTc=; b=SsWtYWguHq+uWEr4eKU1SUVW/BgP0ZaAvfEmGqVTrjOZxncetOtqUChjsZMU+ofmmU tzQnU6SNL8W6xngZqoPkGVtaAr+PYclgPGQ2V09AW7fePu9eWDoeTxeaJ6qre8/FBhbu 7Gj1fj1fHAjzplcocgMyU0o0jv30SUClGwMFsf296KnovTtxGiD4kzmFPfUaTFyBicVF e0LkKvGeh6C5z/mviXE454WNlLfW90XnvPmR+3WPZercsUDCrTyreaJbQ+uo27fkzLCk nfUuhlF+1QaVWyboxLTRp3VstoDiPwBEPeQSAkIdG7SQZAAueqapLD8IE9uRdkRzjRpJ rLYA== X-Forwarded-Encrypted: i=1; AJvYcCU+JS1qrVgvG8RInUDNnM1J0jf29Ubn3MNg02gARlrSeTpDMdrKMZAy8b07vxypvcCJF2vkbvv+@vger.kernel.org, AJvYcCWjCmhjNPDrMrMfN/ZLY5wzBsZ5tjQCJvRs4QSWFlAdIYWK9eG//LsBr4Cee1LI5aFj9f3SkD57L78C4EHv@vger.kernel.org, AJvYcCX1Q9INNsjgz6gU91nAbv5R3751dcg0QjyVzjOYd0Rl3U6s6iporkYI7qmue+e0hC66Ipw=@vger.kernel.org X-Gm-Message-State: AOJu0YybsblKRJYJR1vhS8gzuRoO7/9VHrKdr6DDTYrucQ1VFObCgTfo enz1xt8NaB1v/vwPA+ZEVpleqlk6VRVahfd96ZM+4Qt9wsaO5Pd3vO3f X-Gm-Gg: ASbGncunHhZwzBi/RPFAD0YYK1WluejYsswlnq1UbMkDgmMObsnIrLgbjxSbGg70QMO dEp9l90KvdwhTWHLyfRd2xXGKP3TolxzCmLcoEdcwk2TjVkOOey8E4LYEGr6R+IbFgd9Jv/8/7M RgbAxaMz9XD/qMfR1jeQR3WpyU6ex+aqk/1w8pyYGXtYiJ3EKBk+FBwM0un2yqdp++EkHcfkYb/ PBMdkbdBb5Stah8Nxi6g+LXINZWtNqTsxNsCkOptXG0Ra8Qi/SvEHQaOClSBPlgwUAel+QnjXxv K96kAoZqs+07gsvlq/7sVqmTi0/WwAm0as7SVO/nUX1ukukdnBaaTlzeu/7VJIPRvJCfld3pfZ0 puVFTYD8E X-Google-Smtp-Source: AGHT+IHnBLa7t0ubsYSeKkayXhW4mKBqb1+QAMW9EvWq+u4JW6gRZtgfqBWqro4ZYC+uYeX68JLHRA== X-Received: by 2002:a05:6a21:6005:b0:21a:e090:7b88 with SMTP id adf61e73a8af0-21fbd55a108mr18242268637.21.1750136052423; Mon, 16 Jun 2025 21:54:12 -0700 (PDT) Received: from devant.antgroup-inc.local ([47.89.83.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74890005f47sm8132852b3a.51.2025.06.16.21.54.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Jun 2025 21:54:12 -0700 (PDT) From: Xuewei Niu X-Google-Original-From: Xuewei Niu To: sgarzare@redhat.com, mst@redhat.com, pabeni@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, davem@davemloft.net, netdev@vger.kernel.org, stefanha@redhat.com, leonardi@redhat.com Cc: virtualization@lists.linux.dev, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, fupan.lfp@antgroup.com, Xuewei Niu Subject: [PATCH net-next v3 3/3] test/vsock: Add ioctl SIOCINQ tests Date: Tue, 17 Jun 2025 12:53:46 +0800 Message-Id: <20250617045347.1233128-4-niuxuewei.nxw@antgroup.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250617045347.1233128-1-niuxuewei.nxw@antgroup.com> References: <20250617045347.1233128-1-niuxuewei.nxw@antgroup.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add SIOCINQ ioctl tests for both SOCK_STREAM and SOCK_SEQPACKET. The client waits for the server to send data, and checks if the SIOCINQ ioctl value matches the data size. After consuming the data, the client checks if the SIOCINQ value is 0. Signed-off-by: Xuewei Niu --- tools/testing/vsock/vsock_test.c | 82 ++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_t= est.c index f669baaa0dca..66bb9fde7eca 100644 --- a/tools/testing/vsock/vsock_test.c +++ b/tools/testing/vsock/vsock_test.c @@ -1305,6 +1305,58 @@ static void test_unsent_bytes_client(const struct te= st_opts *opts, int type) close(fd); } =20 +static void test_unread_bytes_server(const struct test_opts *opts, int typ= e) +{ + unsigned char buf[MSG_BUF_IOCTL_LEN]; + int client_fd; + + client_fd =3D vsock_accept(VMADDR_CID_ANY, opts->peer_port, NULL, type); + if (client_fd < 0) { + perror("accept"); + exit(EXIT_FAILURE); + } + + for (int i =3D 0; i < sizeof(buf); i++) + buf[i] =3D rand() & 0xFF; + + send_buf(client_fd, buf, sizeof(buf), 0, sizeof(buf)); + control_writeln("SENT"); + control_expectln("RECEIVED"); + + close(client_fd); +} + +static void test_unread_bytes_client(const struct test_opts *opts, int typ= e) +{ + unsigned char buf[MSG_BUF_IOCTL_LEN]; + int ret, fd; + int sock_bytes_unread; + + fd =3D vsock_connect(opts->peer_cid, opts->peer_port, type); + if (fd < 0) { + perror("connect"); + exit(EXIT_FAILURE); + } + + control_expectln("SENT"); + /* The data has arrived but has not been read. The expected is + * MSG_BUF_IOCTL_LEN. + */ + ret =3D ioctl_int(fd, TIOCINQ, &sock_bytes_unread, MSG_BUF_IOCTL_LEN); + if (ret) { + fprintf(stderr, "Test skipped, TIOCINQ not supported.\n"); + goto out; + } + + recv_buf(fd, buf, sizeof(buf), 0, sizeof(buf)); + // All date has been consumed, so the expected is 0. + ioctl_int(fd, TIOCINQ, &sock_bytes_unread, 0); + control_writeln("RECEIVED"); + +out: + close(fd); +} + static void test_stream_unsent_bytes_client(const struct test_opts *opts) { test_unsent_bytes_client(opts, SOCK_STREAM); @@ -1325,6 +1377,26 @@ static void test_seqpacket_unsent_bytes_server(const= struct test_opts *opts) test_unsent_bytes_server(opts, SOCK_SEQPACKET); } =20 +static void test_stream_unread_bytes_client(const struct test_opts *opts) +{ + test_unread_bytes_client(opts, SOCK_STREAM); +} + +static void test_stream_unread_bytes_server(const struct test_opts *opts) +{ + test_unread_bytes_server(opts, SOCK_STREAM); +} + +static void test_seqpacket_unread_bytes_client(const struct test_opts *opt= s) +{ + test_unread_bytes_client(opts, SOCK_SEQPACKET); +} + +static void test_seqpacket_unread_bytes_server(const struct test_opts *opt= s) +{ + test_unread_bytes_server(opts, SOCK_SEQPACKET); +} + #define RCVLOWAT_CREDIT_UPD_BUF_SIZE (1024 * 128) /* This define is the same as in 'include/linux/virtio_vsock.h': * it is used to decide when to send credit update message during @@ -2051,6 +2123,16 @@ static struct test_case test_cases[] =3D { .run_client =3D test_stream_nolinger_client, .run_server =3D test_stream_nolinger_server, }, + { + .name =3D "SOCK_STREAM ioctl(SIOCINQ) functionality", + .run_client =3D test_stream_unread_bytes_client, + .run_server =3D test_stream_unread_bytes_server, + }, + { + .name =3D "SOCK_SEQPACKET ioctl(SIOCINQ) functionality", + .run_client =3D test_seqpacket_unread_bytes_client, + .run_server =3D test_seqpacket_unread_bytes_server, + }, {}, }; =20 --=20 2.34.1