From nobody Tue Oct 7 21:05:08 2025 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.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 859E21A08A4; Sun, 6 Jul 2025 04:37:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751776633; cv=none; b=ecKvmoAiJEUXpp2/bpoc39fscYReM1vq0N18kFDHg0nIYdERV8wyvMkjBOgrAfKwxPAu0263CpUe9ozzrHkL5RWbD45X3vDwJvRcBL6CqqJsqMhsJ3fvuxvQmsTToeebn8cT2GgWC+7DF5sQenIRIQ79AvCvGpA226AYSRnJr+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751776633; c=relaxed/simple; bh=n9Q2c70s99hykiVWRTO0HNEhldxVXbUo16t8vijIGOk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cOQ+3x4OZl/CMEwktiMQfC8Yzfq5J6AwmcTzli7Pe8HmTXKP97owo+gR/CnRlCs8hkYPpHR2k/07Fg+BEy9uTriyOmhGUyaUm4YZuthwl62bXlZQyVqPR+wJQtJ28oSlRdqAoO8ppPTm1R7Pm+gUyKe3ezRAVzR7t6xlMNQiFH0= 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=lJ/2gn54; arc=none smtp.client-ip=209.85.210.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="lJ/2gn54" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-74264d1832eso2563800b3a.0; Sat, 05 Jul 2025 21:37:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751776631; x=1752381431; 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=IkHPe6LE8OXWdD0I5CLih7m7+WFtKYT46OEMON9KnWQ=; b=lJ/2gn5400QRjGV5Ift6119tD+rQ112n7K/0muZmekdv/p7l5x47Lp/3f7mZ1mmIAx bXi1iXj0mlh6KtDKRfqWu1T/eiecpfrTI5yRPYk2X3HTNOTLglwKlfKl4FneoaW9bFOT nRreJtjKtfxwDMMU/4XAbnuoCEMGS3KlUsyG5lH8yOe12H+TfEC2JCa/zbpBLqHyfOCP W/EyLythaEBSa+d6UDaK6e2lz8M169T4gWO8XthtIjJBaFoqdbvxjuPxWN4HuFyKtPqN w4aKXRjww/HP31cqXh6H8td3oNPZx4SrEXDFnw8IPSY/Zd6RXon3Aag5wTqeQOOQintC QeHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751776631; x=1752381431; 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=IkHPe6LE8OXWdD0I5CLih7m7+WFtKYT46OEMON9KnWQ=; b=Q4skcTmeljoSsEZK2GUDMe/NWWt1tNyqlRqsg7FlZEm4TmMvLO8G6+nWS2lXL6sxkX FneDkqsBP8QreTaNLUG7SjGkgxJIMTS9nIoI1t2D6pF5dZbjb8tWJ0NiIdQ7HUeaElAf MVNG7E1x4PfSIFcvJeTrpPibfIMXZ73QeHvfn7Eku3eSvftQckold4wJnSjTbWYfBHiG dwNEAO3xALIYAhmN0arBxylcwlTRXpSrSayBREzs0C7tk8PKgOMVDl5AkWvJYlk80qCr TwP0hKhSFg9dkrCZ+dEvlzB/JQS2ROyftOTbbSCJH9Tr3v9TrewDh9GpvpNrKvmdkAhJ oUvw== X-Forwarded-Encrypted: i=1; AJvYcCUAuBFafTxXRPzFKHU60F+l/Ovz3bhFIrRze0ChR4s780HEPTwf81TLeaD9wFe1UaoRx3BSjrHaOcljBHk=@vger.kernel.org, AJvYcCVsBtHFEvMGu3C5quy3x30/XX50JDdggOHwZmYbW0fqYmLdBGEjOsNK4zg36MndNTKiNgUGAXCD@vger.kernel.org X-Gm-Message-State: AOJu0YyDazMFVJbNxooJyZWHlMGaqi6cLYsvPeKg+9kE037rCG+NKtR3 lkGmr0g4eyudbl3SnLJEb4kkQ/t9245PXRHgqr0Hbi/nNXo7qBSonw8E X-Gm-Gg: ASbGncv78shSVFnbQRwSeHC8iu3n4UE6RPI/nKL+c9RPdTPt4X2g2H2bWMnhPeslgXa HhLPNYWVwL08N8eFECdwZIwmuX2XpGPYYd3TXReLJYXR0Djd7ONH8epFpjrgGUCV7K6LqoUu4ly 9cz+wnPHUe+UZuCeXPZKqSNID/w4EMKhIWM9XKyl0ff4La346SY+JO8MKG5CQYRnVciwdpaInNR xlAkB5MiY6IIe6H1+mYP/fqWcNQnQauRTOH4ybzYmo7KLnhhobr2TgAPK2CZxiKhW/3NOiyQzB8 j3tRwBKia5YGrISB8/EvSZcw/oiNNP1aeU4qMkqsuqBEho05YUModZRRWxa9d5uzsQ== X-Google-Smtp-Source: AGHT+IHGk8AFJbLfLq2JPJAq88rU8JLJAkLvo3fQgqjmGI7NA8C+iaMBGdiCICDxGFishDdjSB5qyg== X-Received: by 2002:a05:6a00:3e21:b0:748:f365:bedd with SMTP id d2e1a72fcca58-74ce8ad63cdmr10121558b3a.17.1751776630879; Sat, 05 Jul 2025 21:37:10 -0700 (PDT) Received: from [127.0.0.1] ([47.89.83.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74ce35cc2cesm6105137b3a.59.2025.07.05.21.37.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Jul 2025 21:37:10 -0700 (PDT) From: Xuewei Niu X-Google-Original-From: Xuewei Niu Date: Sun, 06 Jul 2025 12:36:29 +0800 Subject: [PATCH net-next v5 1/4] hv_sock: Return the readable bytes in hvs_stream_has_data() 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: <20250706-siocinq-v5-1-8d0b96a87465@antgroup.com> References: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> In-Reply-To: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> To: "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Xuewei Niu , fupan.lfp@antgroup.com X-Mailer: b4 0.14.2 When hv_sock was originally added, __vsock_stream_recvmsg() and vsock_stream_has_data() actually only needed to know whether there is any readable data or not, so hvs_stream_has_data() was written to return 1 or 0 for simplicity. However, now hvs_stream_has_data() should return the readable bytes because vsock_data_ready() -> vsock_stream_has_data() needs to know the actual bytes rather than a boolean value of 1 or 0. The SIOCINQ ioctl support also needs hvs_stream_has_data() to return the readable bytes. Let hvs_stream_has_data() return the readable bytes of the payload in the next host-to-guest VMBus hv_sock packet. Note: there may be multpile incoming hv_sock packets pending in the VMBus channel's ringbuffer, but so far there is not a VMBus API that allows us to know all the readable bytes in total without reading and caching the payload of the multiple packets, so let's just return the readable bytes of the next single packet. In the future, we'll either add a VMBus API that allows us to know the total readable bytes without touching the data in the ringbuffer, or the hv_sock driver needs to understand the VMBus packet format and parse the packets directly. Signed-off-by: Dexuan Cui --- net/vmw_vsock/hyperv_transport.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/net/vmw_vsock/hyperv_transport.c b/net/vmw_vsock/hyperv_transp= ort.c index 31342ab502b4fc35feb812d2c94e0e35ded73771..432fcbbd14d4f44bd2550be8376= e42ce65122758 100644 --- a/net/vmw_vsock/hyperv_transport.c +++ b/net/vmw_vsock/hyperv_transport.c @@ -694,15 +694,26 @@ static ssize_t hvs_stream_enqueue(struct vsock_sock *= vsk, struct msghdr *msg, static s64 hvs_stream_has_data(struct vsock_sock *vsk) { struct hvsock *hvs =3D vsk->trans; + bool need_refill; s64 ret; =20 if (hvs->recv_data_len > 0) - return 1; + return hvs->recv_data_len; =20 switch (hvs_channel_readable_payload(hvs->chan)) { case 1: - ret =3D 1; - break; + need_refill =3D !hvs->recv_desc; + if (!need_refill) + return -EIO; + + hvs->recv_desc =3D hv_pkt_iter_first(hvs->chan); + if (!hvs->recv_desc) + return -ENOBUFS; + + ret =3D hvs_update_recv_data(hvs); + if (ret) + return ret; + return hvs->recv_data_len; case 0: vsk->peer_shutdown |=3D SEND_SHUTDOWN; ret =3D 0; --=20 2.34.1 From nobody Tue Oct 7 21:05:08 2025 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (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 B122C1ACEDA; Sun, 6 Jul 2025 04:37:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751776637; cv=none; b=fzgnOJQ22n/wCC19ZQ8DT6RMuxTM76NgBn4BN2ySOBIHP7o8DbvUSeiGienZweLTyFhxwUPssor7PbGlccyj0BxicG6iw9igzAaeAkgI5Kh5EcEm7YSuH59IFj9VNrIPVxN+EaNvFU24LRMXuftKHNltrLfoIvZDkcMzlew5aVQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751776637; c=relaxed/simple; bh=lrNsByWI4+JZUOhPSorgBp0TBt5xNkaU5kzScC5uvPo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jalav3xev9ou6O6pHN3/mbdE1vqcHB8eEK2qAHCpvusHVLro/ZI4LCZtr4gCdfUIPUoz2kncKUgk3SUb4A6UGVwQEhhayB9laVCfk1o4s8zDwqoqdDrKeTRmvUmcH35W9HW8v3J0v5faC0+Zp8kKO9Kx1KqvsIBsGBDHsUbNYwA= 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=ZgEi//0j; arc=none smtp.client-ip=209.85.210.169 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="ZgEi//0j" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-748fe69a7baso1850140b3a.3; Sat, 05 Jul 2025 21:37:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751776635; x=1752381435; 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=enAMJL6mb/z9WNfWVziA8KCdR5RF2FfP9GwDXl38f/E=; b=ZgEi//0jRnwTsrvAwQgmNhy2ueR37xPEuP5bbNsHJlhP7ogfxD8/rCf5uZzxdvqGTi 7Xa6krRFUn2ou4L2Xgxs1tNcAifL9gEPujOkFRLbczJHtey41wiI560PxyvxfoRJ2hmW ooajIzSASwmcQj2+c91UWTTIZZcovxBi8KGn0bhp5pApTVmnUIM1L4Ilkxd1aoP8YDFt +aZ1MJxmGqnlybTNkkEh9g08IFdhMjzFLKZU6EAe7KUYyH9njoA+HC9Eaixpuek38WVn ua5NAmQGKsVIoJDK94fLwGyjDBiRm/qjnl4pQBxb3lcXnc7RrmsH9vm/U/u1EQ6d1Jio +WGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751776635; x=1752381435; 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=enAMJL6mb/z9WNfWVziA8KCdR5RF2FfP9GwDXl38f/E=; b=GjjetGcVUcXR2SOgrmdZWexd70sb+bppdVxmw9VpG1dKJmssVOxUSf7cDzn4VGRhgc 5/vjMJAvhpvcph4AtF4UmouPL3bFBNCXvboqw2vVtd9ttusZT372m5jy/E83btwes9Uq Ewd5qrIXa332SM6toqnFctrRhI5K5zCMTy9h+BezJ9caLEmDeYhf7cGpjWJkTpjh05pm G91zgRQm7BrlOa7/tiPqbFCj44EVuoE3aBRhn8S5s63wfMr3Eo+rYpSDcTw2U1Nkz8s7 6k/kYxNQybWltliRFl7uujQzG/U8T8rrr/lsLkWjKjDHiolFQ32kF9Xh9WbKSMbaTpeg kNrw== X-Forwarded-Encrypted: i=1; AJvYcCUaC6hojK0mbP8pgeeltWQWYoY/4MVKnVeIgENTolw2Uri1io1rm/odeYdh/K+0/6CxlXel57cVn5BoCMs=@vger.kernel.org, AJvYcCWEtRle9/yWCdfMzjCldvVzCOklIrXVJy/fuw4rWhbf9PpHtTVwUAsxp/W0C0xRyynxdQFSxnwp@vger.kernel.org X-Gm-Message-State: AOJu0YzOfplM00E7TuUsEG+jWrTqCAU+R9WpuQ8VBCxhjDW9eDNYv3uq fZJrzSgw2iQO1NPweOaiYdTZLiB3xpxmGSRPexzxPmnKZ2wTikQdyM+w X-Gm-Gg: ASbGncuPm5dU1ALkaYENYSnj5jtGLPmOmdRNuPDNlKb+q3gsq4gzCvxAiCNb3mgNW2H yuS2GLPhCW7FN3DvaESORguTWwqhLTBtmjgYUq3SuVRJf/vGbW0SMGn25B66MOn0hfEqyBTuoey pQVmSpyzUY+h95i+4FoCHXnQKny8qh1a3e2kTEEzC39AmIpcrgAkIDgJf7FAkxWi+96/HWVGGXP 3g7fOUcABk0cOD0Swc8V+eU3CBR08ekmZXh+DsSyCJ7oIh5LtT9Ew2FXEHpxoXqIxrW3ycThSMA CRzpIv2+w81ULpzv8TRHQyZvBDnOMWvhoh+PlStdrCTKWijPAPDxDeH3/omHtvf9+A== X-Google-Smtp-Source: AGHT+IHQIGrgZb4Ga8DvGclOdGTppLhL3WybIIS3/IKCgYv4g44bAwZQzlV18+HfQ/D8ucanu+qLQQ== X-Received: by 2002:a05:6a00:4b10:b0:748:f1ba:9aff with SMTP id d2e1a72fcca58-74cf6ef79aemr5032449b3a.5.1751776634875; Sat, 05 Jul 2025 21:37:14 -0700 (PDT) Received: from [127.0.0.1] ([47.89.83.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74ce35cc2cesm6105137b3a.59.2025.07.05.21.37.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Jul 2025 21:37:14 -0700 (PDT) From: Xuewei Niu X-Google-Original-From: Xuewei Niu Date: Sun, 06 Jul 2025 12:36:30 +0800 Subject: [PATCH net-next v5 2/4] vsock: Add support for SIOCINQ ioctl 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: <20250706-siocinq-v5-2-8d0b96a87465@antgroup.com> References: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> In-Reply-To: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> To: "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Xuewei Niu , fupan.lfp@antgroup.com X-Mailer: b4 0.14.2 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 2e7a3034e965db30b6ee295370d866e6d8b1c341..bae6b89bb5fb7dd7a3a378f9209= 7561a98a0c814 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 Tue Oct 7 21:05:08 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 A3A791C5496; Sun, 6 Jul 2025 04:37:19 +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=1751776641; cv=none; b=PZIGjtB3PT6MNnc5DCVNim2DFtoycr1keuwNgj/+f4NjS/fklDO6Y8+KdLz2R3JVQS4Vh3j8BwUXBHzEypKstVKkUZtlqFHyWfziKlZECgqW147b/QTwkltDnL4QJLI1S7l1s5ljQ8giKiuiUX1Cd3+nIdhbK9HskO3d65YTlBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751776641; c=relaxed/simple; bh=e6+A6V/GIHjY2NtS85toohY3fDmWeS+De+ENSmkaW48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RFKoF3fyglnZ3XTQA+MCNjWkIPKx4DJ8ClPsb1w+zO+PGtk6U2aJB/jFXkgPXQZIrAiRUCbhc7dR9bKvGvHDfh2X07FrCs2sdcG1q5CGShaD/Yx86RbrhzLeIfRgOrNkcwVmNNqy6EHX8f/JfO96jfOo8+NGCy/pL8u14e3xHfc= 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=XZkq7iHE; 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="XZkq7iHE" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-b26f7d2c1f1so2812974a12.0; Sat, 05 Jul 2025 21:37:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751776639; x=1752381439; 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=+Adkwaehj8WQlyxe1tcyATntmfd0OiZXAi1oQdyK2Hg=; b=XZkq7iHE+NDE2pvfOJPU2CFte8mnQU93hEKiTtfDkKzjTmhoX+xmNw8Xpip3409p8m enOSxPVnzqpP1SqUA5k+f87is7CrSs9ufKE6SJjdwDCcLZpTpUgF0s3W2fA9F7zESREi MHO1rUdoNO3cPxT/0oA92hONHSR1972eNGwN21U1a8dSTk7HcG1cgYkapEtYZ6dHoSgq SP6xu/n6wM9nGqXoCc8jm0Sl3yYCW11n9B/ZuHPcMd9jw7oI6wICci79PXCdelNtOs1T tLg8E/l0ZWJBZyGTPgefUotGQcaxHijikGKZewo3HY9n3E6ahcvWMfb8U6SzMqFmHJAC ijQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751776639; x=1752381439; 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=+Adkwaehj8WQlyxe1tcyATntmfd0OiZXAi1oQdyK2Hg=; b=BDltYM79qHdfm6qqZO+wqdz3se2ug2cjfLNTXB99sCtc3uzwQaNG8HYFhmIigBLDtb tcNMnXhrD51+50MlJt82S6dqmZe71Cpk1d7gdGdZ7eITnlm5dv03PsI32E1DUoRbNgVz o2uNMbQZvDn1XoSLRQ2eZKskaU7VJU0ejIcOciEoTNWTsJu7/XJ8KbcbcDy5Exo5PfQ+ BI2pam8+lvTb+QoVtDKpqtP0rzSuRfDqV9WzJXqq3o2hliuUMCfIm0hqqbcQHNZP3hvW NU4ct3uclL8jVbWk3kAKyFHqw/n5kH6pOyOa+sPiUa2/rDbzr51GIFQS8U6CqzJ98kYw EZBA== X-Forwarded-Encrypted: i=1; AJvYcCU1RVFU1+Cv7Ikv8Gx3vYL6HSFKGWNRF+brzIBNIqcZXJTvU3bL5VfjA1dEj8c5WzBGvA0BliZmipEsrto=@vger.kernel.org, AJvYcCXhPQ2MrzCzvNtr3h6+EyMAkHHtSYeaA3gb00PacIyUoQcv/18kPUDCNOOY6zbkyXWlepQzjsjf@vger.kernel.org X-Gm-Message-State: AOJu0YyIYM0e/wW4ZVUHUgXZicoS2aWv33dRZ057pZK9/XLGJMy4P8U8 tB9L44buuDIysa/vI58yx7s1SbEBjGBqIhUHIUVGWRvcxjXOZrk2UbdV X-Gm-Gg: ASbGncv97GBBP4icI/mmNrBpNIrIfk4j5QuEKzRNDsttXKT3TWM+C/kRHb5ir7bnTZY AxhYaohLjRmuinsqcDOWvoGg8Pm7WUnG+TmhxQ+qnnTQhjR0XRIl/QLDfmotZ7O7rmXke7ehKck YAn+X4g35bIz5BTc9Xh/N+fSz9YlYLufnn3QlO3ktWyNpTpjmr6aaMTQnAO0OMqLkvzPo6XW2ZC gpr+IH77Ookt6NzCWfd2m8XNFToanW84hn925vWKEyfwvep0lLT1q1d8wxNVTwnCG+k3CDg3TWd 55GcOvQQ/ZF3m0pAl7D4vax1u5DUDLaTbsZeDBpuxFRxPy0pr+1aOHnU4JvNZjBKUQ== X-Google-Smtp-Source: AGHT+IFTD8Ubs6vrLh9uOBqgWb9R02OzYwWvb5+TvstZ1sZuMkvbVOBc0mozEtb+peNJ0afHcOnIqg== X-Received: by 2002:a05:6a20:748a:b0:220:94b1:f1b8 with SMTP id adf61e73a8af0-225b4fe122emr14819222637.0.1751776638842; Sat, 05 Jul 2025 21:37:18 -0700 (PDT) Received: from [127.0.0.1] ([47.89.83.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74ce35cc2cesm6105137b3a.59.2025.07.05.21.37.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Jul 2025 21:37:18 -0700 (PDT) From: Xuewei Niu X-Google-Original-From: Xuewei Niu Date: Sun, 06 Jul 2025 12:36:31 +0800 Subject: [PATCH net-next v5 3/4] test/vsock: Add retry mechanism to ioctl wrapper 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: <20250706-siocinq-v5-3-8d0b96a87465@antgroup.com> References: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> In-Reply-To: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> To: "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Xuewei Niu , fupan.lfp@antgroup.com X-Mailer: b4 0.14.2 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 | 30 +++++++++++++++++++++--------- tools/testing/vsock/util.h | 1 + 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/tools/testing/vsock/util.c b/tools/testing/vsock/util.c index 803f1e075b62228c25f9dffa1eff131b8072a06a..1e65c5abd85b8bcf5886272de15= 437d7be13eb89 100644 --- a/tools/testing/vsock/util.c +++ b/tools/testing/vsock/util.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include =20 @@ -101,28 +102,39 @@ 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 false if the op is not supported. */ -bool vsock_wait_sent(int fd) +bool vsock_ioctl_int(int fd, unsigned long op, int expected) { - int ret, sock_bytes_unsent; + int actual, ret; + char name[32]; + + 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 >=3D 0; +} + +/* 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) +{ + return vsock_ioctl_int(fd, SIOCOUTQ, 0); } =20 /* Create socket , bind to . diff --git a/tools/testing/vsock/util.h b/tools/testing/vsock/util.h index fdd4649fe2d49f57c93c4aa5dfbb37b710c65918..142c02a6834acb7117aca485b66= 1332b73754b63 100644 --- a/tools/testing/vsock/util.h +++ b/tools/testing/vsock/util.h @@ -87,6 +87,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); +bool vsock_ioctl_int(int fd, unsigned long op, 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 Tue Oct 7 21:05:08 2025 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) (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 BE5831D5CFE; Sun, 6 Jul 2025 04:37:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751776645; cv=none; b=r7aHQKmVyu+aYmGIRXx31cxTwHjlZAoktvzjUdILzYkLBfL+AGNylw08r+8ZYXS3pZ2C5zANVLAnE6fgnjQo1JtsFnYeXrV6Jj5OkuFuLJVPsHpd+VsiJs5PVWuxcxZm+mByOA9IIgm5jGasyZD3eai6SqDGVc+Cr3ly3N37TOw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751776645; c=relaxed/simple; bh=Doct89OeyNO072Y2Ys7bCVOd+ekwZZ2v2r0ziNK3ALY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cSOt3BHB03+Kx+IY4l/XAWDYn4Vkfz96lnq6MeJf9Bnsvts2hPaZIt/r2siM4gSBnSKyGX5i0Coc+kRzAGyLfaLeg8Zt37VK7Qa28OXRbDEy+R51RlmZd+AyyeCK/bLPfXhGpAuy+KUBfKjNZIF6ECAPz377AEbFzT2fSFcT2rQ= 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=A9wQ/Ath; arc=none smtp.client-ip=209.85.210.180 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="A9wQ/Ath" Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-747fba9f962so1573496b3a.0; Sat, 05 Jul 2025 21:37:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751776643; x=1752381443; 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=78u4kXViM2gstT6OJkwZc50WiKMJcTjBxWIBBOazpAI=; b=A9wQ/AthfS8Z1qGdi8uzDvwBn1LKRdGAGjp978NjVTCp95NYJruZe6tcdPoLvZlcfv S0mqjYqU3STrpOnyW9q6z7PDbcivMBkt8QDkJ+zK5802wgnrO1rIPzcfazt5zB/xIGky T9cm5BkR1zb5KcfcDePduKp8HozfqzuOOUv3BqGrTUg9J67rZTcC6j3AjhzCeuuQH1Yb DcJYUegejC+FMc1vNgbkUQhqNhKJQkss/r0jC0sl+/DaTrHDm4PuBZ9NyZohmN1ykpTK a57Gc0QbjBw2MsvGfd9gXRJgaFI+siNAe8gy2KttjlaMb+3Z2qts0rsmMjBJq8Nb9nsm nLWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751776643; x=1752381443; 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=78u4kXViM2gstT6OJkwZc50WiKMJcTjBxWIBBOazpAI=; b=ATjAtbFpSRvhAnoDYvQm+XLCjFbm4R4v+iXAxd66Uo/9i9sJPUOfks/AimFtcGu1Mk 3NA1MyRLQfmqypYE/AghQwSsEbKRsl2UoUqwZPTIfeaZ51z7qQw9nQRg87Q0hE7BbSyx XnMbWXrbXAqF6V8IuHkxYJ3SSFlJX8cr2ffkhCFMRhWF+yf+Fr+QJ1D/F1bW+aLqHMPx q+KGaLdS+cyXzGrMp/+2z+yINLdpRZdwmiQtu36yD5yvrwZsUWGLFYynfe9q94qECKzN arUVm2Gq6dwEpLxTnoHf3tTg/TwoCYr8iYDbEWAUCZicfFApKTxgseTJLnfR7tjLP/ZV t+jA== X-Forwarded-Encrypted: i=1; AJvYcCXVxJbwLglFcnonJnEGXuIYG8ZrVo8DK1QyUsIq2kLaFQGqIxsUufO0G8CfioqyGrc5ORt7drEzgWKDoWY=@vger.kernel.org, AJvYcCXjZi59LXPE52BdMmUpJEc5EElNBCEXjnDLcAeIVZQW4oEcyZbRy8UTsZqbjecTacMUSakKUdXc@vger.kernel.org X-Gm-Message-State: AOJu0YwYajtRpX41cly5zRMd2SaEa8nN7l71DuNCZ37FhDg1++3m9Wwz oyOIY3NYF7CVYoVr/M446FZgX04Eia5btBm6uqAOj5FpVzSSfNYd3F1e X-Gm-Gg: ASbGncuW4x1UQndueoezD9GDvcCk2VRkfqKWz9tdOOduXOEnd7rN/2+YbFABQsN5xb2 VPGqok6I9Poi4Q/hiexPQZr0K4Fi2UVyFZcGV+6uUFyhvBKaO/hMDI3I9dsNH1EKZUdRvL0bSFe GnjsdYhZ3dcDFXqMcFnIw7xCpsLldgtzcqAWBihX9mQpkm0jVuMEVlSEqrOmUs2Q+cZjsq9B2dr ACmQ4nzmSOWzAOy7lx2PMnkHyOsNzKVhETxDTEHtEypbpHlyNHig0QagvcMy79npKGAqOfLWB6o w0+iH+5k8Jc1nlenKmoVJrga+QBtBYGFMrKqwgahNz9as52if0+7dReOpyTxAL1FAg== X-Google-Smtp-Source: AGHT+IH2y2QqKJnnc+SmoDKhK3pmoL1e3dI0WHkyQabKVkG03aZHUFCwpTWKs/9Ba4zbMfwP3glYUw== X-Received: by 2002:a05:6a00:1a93:b0:744:a240:fb1b with SMTP id d2e1a72fcca58-74ce5f5f908mr12036995b3a.5.1751776642904; Sat, 05 Jul 2025 21:37:22 -0700 (PDT) Received: from [127.0.0.1] ([47.89.83.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74ce35cc2cesm6105137b3a.59.2025.07.05.21.37.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Jul 2025 21:37:22 -0700 (PDT) From: Xuewei Niu X-Google-Original-From: Xuewei Niu Date: Sun, 06 Jul 2025 12:36:32 +0800 Subject: [PATCH net-next v5 4/4] test/vsock: Add ioctl SIOCINQ tests 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: <20250706-siocinq-v5-4-8d0b96a87465@antgroup.com> References: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> In-Reply-To: <20250706-siocinq-v5-0-8d0b96a87465@antgroup.com> To: "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Xuewei Niu , fupan.lfp@antgroup.com X-Mailer: b4 0.14.2 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 | 79 ++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 79 insertions(+) diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_t= est.c index be6ce764f69480c0f9c3e2288fc19cd2e74be148..a66d2360133dd0e36940a590767= 9aeacc8af7714 100644 --- a/tools/testing/vsock/vsock_test.c +++ b/tools/testing/vsock/vsock_test.c @@ -24,6 +24,7 @@ #include #include #include +#include =20 #include "vsock_test_zerocopy.h" #include "timeout.h" @@ -1307,6 +1308,54 @@ 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"); + + 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 fd; + + 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. + */ + if (!vsock_ioctl_int(fd, SIOCINQ, MSG_BUF_IOCTL_LEN)) { + fprintf(stderr, "Test skipped, SIOCINQ not supported.\n"); + goto out; + } + + recv_buf(fd, buf, sizeof(buf), 0, sizeof(buf)); + /* All data has been consumed, so the expected is 0. */ + vsock_ioctl_int(fd, SIOCINQ, 0); + +out: + close(fd); +} + static void test_stream_unsent_bytes_client(const struct test_opts *opts) { test_unsent_bytes_client(opts, SOCK_STREAM); @@ -1327,6 +1376,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 @@ -2276,6 +2345,16 @@ static struct test_case test_cases[] =3D { .run_client =3D test_stream_transport_change_client, .run_server =3D test_stream_transport_change_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