From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C7E75ECAAD3 for ; Fri, 2 Sep 2022 01:00:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234915AbiIBBAb (ORCPT ); Thu, 1 Sep 2022 21:00:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232835AbiIBBAX (ORCPT ); Thu, 1 Sep 2022 21:00:23 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23CC637FBE for ; Thu, 1 Sep 2022 18:00:22 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id BE9B480C0B; Fri, 2 Sep 2022 01:00:17 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080421; bh=xlT8ZBYljMLF/iDvL7d497O6CwzFosNpW9mk4b4aomw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ClxGCIIcEIszw+3JW53Bqjpf88KCRC7NZBZ0GUYOvPwutLy3eWMMGhkQp6/LxlhiQ CI3vjnnY1W98dPS+2nkcqkhZCTXJVsyxXjdngOIQk3j37k5eQyCVX/EQTeD0fvhXUd fvyocMgjLvUGoZu0GRoS0+Se22Pg83dRANo/TisiH+5epjtUJZI/Og47BwUoXczzPs 3An1cA8CyRO+3+FcUqRvX7/WFGVDHEEi2wM4ekX0dyt+kBny1atdRphv/FgqN/cpNJ X8U2bB7up2wyxRNMzUHSDW7r2q0GCb0Gv7M9j1twHtJ2O2MsvQaLTAgzeERIGrrAxQ GzhioQ3koBIxA== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 01/12] test/helpers: Add `t_bind_ephemeral_port()` function Date: Fri, 2 Sep 2022 07:59:35 +0700 Message-Id: <20220902005825.2484023-2-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi This is a prep patch to fix an intermittent issue with the port number. We have many places where we need to bind() a socket to any unused port number. To achieve that, the current approach does one of the following mechanisms: 1) Randomly brute force the port number until the bind() syscall succeeds. 2) Use a static port at compile time (randomly chosen too). This is not reliable and it results in an intermittent issue (test fails when the selected port is in use). Setting @addr->sin_port to zero on a bind() syscall lets the kernel choose a port number that is not in use. The caller then can know the port number to be bound by invoking a getsockname() syscall after bind() succeeds. Wrap this procedure in a new function called t_bind_ephemeral_port(). The selected port will be returned into @addr->sin_port, the caller can use it later to connect() or whatever they need. Link: https://lore.kernel.org/r/918facd1-78ba-2de7-693a-5f8c65ea2fcd@gnuwee= b.org Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/helpers.c | 18 ++++++++++++++++++ test/helpers.h | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/test/helpers.c b/test/helpers.c index 0146533..4d5c402 100644 --- a/test/helpers.c +++ b/test/helpers.c @@ -18,26 +18,44 @@ #include "liburing.h" =20 /* * Helper for allocating memory in tests. */ void *t_malloc(size_t size) { void *ret; ret =3D malloc(size); assert(ret); return ret; } =20 +/* + * Helper for binding socket to an ephemeral port. + * The port number to be bound is returned in @addr->sin_port. + */ +int t_bind_ephemeral_port(int fd, struct sockaddr_in *addr) +{ + socklen_t addrlen; + + addr->sin_port =3D 0; + if (bind(fd, (struct sockaddr *)addr, sizeof(*addr))) + return -errno; + + addrlen =3D sizeof(*addr); + assert(!getsockname(fd, (struct sockaddr *)addr, &addrlen)); + assert(addr->sin_port !=3D 0); + return 0; +} + /* * Helper for allocating size bytes aligned on a boundary. */ void t_posix_memalign(void **memptr, size_t alignment, size_t size) { int ret; ret =3D posix_memalign(memptr, alignment, size); assert(!ret); } =20 /* * Helper for allocating space for an array of nmemb elements * with size bytes for each element. diff --git a/test/helpers.h b/test/helpers.h index 6d5726c..9ad9947 100644 --- a/test/helpers.h +++ b/test/helpers.h @@ -12,26 +12,33 @@ extern "C" { #include "liburing.h" =20 enum t_setup_ret { T_SETUP_OK =3D 0, T_SETUP_SKIP, }; =20 enum t_test_result { T_EXIT_PASS =3D 0, T_EXIT_FAIL =3D 1, T_EXIT_SKIP =3D 77, }; =20 +/* + * Helper for binding socket to an ephemeral port. + * The port number to be bound is returned in @addr->sin_port. + */ +int t_bind_ephemeral_port(int fd, struct sockaddr_in *addr); + + /* * Helper for allocating memory in tests. */ void *t_malloc(size_t size); =20 =20 /* * Helper for allocating size bytes aligned on a boundary. */ void t_posix_memalign(void **memptr, size_t alignment, size_t size); =20 =20 /* --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2D37ECAAD3 for ; Fri, 2 Sep 2022 01:00:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235033AbiIBBAq (ORCPT ); Thu, 1 Sep 2022 21:00:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234803AbiIBBA1 (ORCPT ); Thu, 1 Sep 2022 21:00:27 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2C0247BB3 for ; Thu, 1 Sep 2022 18:00:26 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id 5C5AD80C0C; Fri, 2 Sep 2022 01:00:22 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080426; bh=O+bQx1dVeJn2RzOj49n3WMYCD9Vph/X1is42mAcoHoU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FqYCo+8x8PKijRKVwSGBuWz3Gh/vMusuucmB2o62U2GfeYyUjf8RqkSfi9BtIF5SS xLASi+hLMStOoDXS6/9pje40C1NXxnZaBrDOYAzfK+snLZrOgqhY2erCB3Qfbf1ODZ Z+EbeC2teDZFkUj6B3l5wwZr8S1cfFPN3IUhddORZETQPA9nG2NSopmKqBSIZOe1L3 3wKDigjQFbcIjFft0J1mZpsuI56BAXW7A930ihTm0YzYXlpnv/dSqwyKUFd7vNKotJ DeOrCMGcB1IcJ9jpuhQEQD54QznqIddrK8KCTABezgw33Qvmz8rXyV55T1Kw+R9pIl FewQX9Y6WkAFw== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 02/12] t/poll-link: Don't brute force the port number Date: Fri, 2 Sep 2022 07:59:36 +0700 Message-Id: <20220902005825.2484023-3-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't brute force the port number, use `t_bind_ephemeral_port()`, much simpler and reliable for choosing a port number that is not in use. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/poll-link.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/test/poll-link.c b/test/poll-link.c index 197ad77..a6fe0de 100644 --- a/test/poll-link.c +++ b/test/poll-link.c @@ -3,26 +3,27 @@ #include #include #include #include #include #include #include #include #include #include #include #include =20 +#include "helpers.h" #include "liburing.h" =20 pthread_mutex_t mutex =3D PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond =3D PTHREAD_COND_INITIALIZER; =20 static int recv_thread_ready =3D 0; static int recv_thread_done =3D 0; =20 static void signal_var(int *var) { pthread_mutex_lock(&mutex); *var =3D 1; pthread_cond_signal(&cond); @@ -79,47 +80,39 @@ void *recv_thread(void *arg) =20 ret =3D io_uring_queue_init(8, &ring, 0); assert(ret =3D=3D 0); =20 int s0 =3D socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); assert(s0 !=3D -1); =20 int32_t val =3D 1; ret =3D setsockopt(s0, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(ret !=3D -1); ret =3D setsockopt(s0, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(ret !=3D -1); =20 - struct sockaddr_in addr; + struct sockaddr_in addr =3D { }; =20 addr.sin_family =3D AF_INET; data->addr =3D inet_addr("127.0.0.1"); addr.sin_addr.s_addr =3D data->addr; =20 - i =3D 0; - do { - data->port =3D htons(1025 + (rand() % 64510)); - addr.sin_port =3D data->port; - - if (bind(s0, (struct sockaddr*)&addr, sizeof(addr)) !=3D -1) - break; - } while (++i < 100); - - if (i >=3D 100) { - fprintf(stderr, "Can't find good port, skipped\n"); + if (t_bind_ephemeral_port(s0, &addr)) { + perror("bind"); data->stop =3D 1; signal_var(&recv_thread_ready); - goto out; + goto err; } + data->port =3D addr.sin_port; =20 ret =3D listen(s0, 128); assert(ret !=3D -1); =20 signal_var(&recv_thread_ready); =20 sqe =3D io_uring_get_sqe(&ring); assert(sqe !=3D NULL); =20 io_uring_prep_poll_add(sqe, s0, POLLIN | POLLHUP | POLLERR); sqe->flags |=3D IOSQE_IO_LINK; sqe->user_data =3D 1; =20 @@ -148,27 +141,26 @@ void *recv_thread(void *arg) fprintf(stderr, "cqe %" PRIu64 " got %x, wanted mask %x\n", (uint64_t) cqe->user_data, cqe->res, data->expected[idx]); goto err; } else if (!data->is_mask[idx] && cqe->res !=3D data->expected[idx]) { fprintf(stderr, "cqe %" PRIu64 " got %d, wanted %d\n", (uint64_t) cqe->user_data, cqe->res, data->expected[idx]); goto err; } io_uring_cqe_seen(&ring, cqe); } =20 -out: signal_var(&recv_thread_done); close(s0); io_uring_queue_exit(&ring); return NULL; err: signal_var(&recv_thread_done); close(s0); io_uring_queue_exit(&ring); return (void *) 1; } =20 static int test_poll_timeout(int do_connect, unsigned long timeout) { --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 706ABECAAD2 for ; Fri, 2 Sep 2022 01:00:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235083AbiIBBAv (ORCPT ); Thu, 1 Sep 2022 21:00:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234977AbiIBBAd (ORCPT ); Thu, 1 Sep 2022 21:00:33 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F0A6A4F668 for ; Thu, 1 Sep 2022 18:00:30 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id BDEFB80C0D; Fri, 2 Sep 2022 01:00:26 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080430; bh=/pwN25iNiXvIBeV3gyM2kueXUf4lKhq4xRNERQDi0IE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rociiTo5+dN3963oyVQ1OBpZMX5R4/9kRYZ6Cll/5QaWFqsqUeqEtEv4Qc7xluIPw 9Ep0QwkiEmUmMDH9M7UrJBCri5lEdL3sYLt3S5mZ7mBw31FZIQt2xcyX3qJVclJvX0 FOoF1h4TrHg1+iA8c/CA2tIlyAS12rtyNHBFFtBjl0JWMtXVZ5rNLj1ph+01mC/j8D AP5gd573agvGwclLIxeTpzf43TWPNwBTtfLYPZ6st86Lg8yCZkNUMi44G8LfcwFfkr Mdfil+tPG3b4ITuCpueUwQitpu5j+24FJF+6suZre17n/vRgfE90SRYASeD525B/r+ l9pKgkDDY3uSw== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 03/12] t/socket-rw: Don't brute force the port number Date: Fri, 2 Sep 2022 07:59:37 +0700 Message-Id: <20220902005825.2484023-4-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't brute force the port number, use `t_bind_ephemeral_port()`, much simpler and reliable for choosing a port number that is not in use. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/socket-rw.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/test/socket-rw.c b/test/socket-rw.c index 4fbf032..6211b01 100644 --- a/test/socket-rw.c +++ b/test/socket-rw.c @@ -10,60 +10,51 @@ #include #include =20 #include #include #include #include #include #include #include #include =20 #include "liburing.h" +#include "helpers.h" =20 int main(int argc, char *argv[]) { int p_fd[2], ret; int32_t recv_s0; int32_t val =3D 1; struct sockaddr_in addr; struct iovec iov_r[1], iov_w[1]; =20 if (argc > 1) return 0; =20 srand(getpid()); =20 recv_s0 =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(ret !=3D -1); ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(ret !=3D -1); =20 addr.sin_family =3D AF_INET; addr.sin_addr.s_addr =3D inet_addr("127.0.0.1"); - - do { - addr.sin_port =3D htons((rand() % 61440) + 4096); - ret =3D bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr)); - if (!ret) - break; - if (errno !=3D EADDRINUSE) { - perror("bind"); - exit(1); - } - } while (1); + assert(!t_bind_ephemeral_port(recv_s0, &addr)); ret =3D listen(recv_s0, 128); assert(ret !=3D -1); =20 =20 p_fd[1] =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 val =3D 1; ret =3D setsockopt(p_fd[1], IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); assert(ret !=3D -1); =20 int32_t flags =3D fcntl(p_fd[1], F_GETFL, 0); assert(flags !=3D -1); =20 --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 73C87ECAAD2 for ; Fri, 2 Sep 2022 01:01:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235007AbiIBBBF (ORCPT ); Thu, 1 Sep 2022 21:01:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234836AbiIBBAi (ORCPT ); Thu, 1 Sep 2022 21:00:38 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90B2B48CA6 for ; Thu, 1 Sep 2022 18:00:35 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id 306D380C0E; Fri, 2 Sep 2022 01:00:30 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080435; bh=qs4JWXzimskB0a0dxpXuwJq+RPw5p6Ix1O988JFqCXs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KFNn40UYvQ4q7OUbaNPIHEDdxDyVPJu4V3423xzNxkvVntWFVsuDK9clwX0Kbk3Ic rNYzP71HYXwvfugIWjJBA5zYwspn9hzBqxn6CznbImonljgWZ3GIC7Hg3+nXd4XjYw W1axHUf68kA6cZm//gdXdDJYwTGFCR+cYd1lsotPgtWBRgW7/Jwdh/FpqJGZ9KZCc8 x2te4tc412nqE6FMg1pUHPQXZOU+u4EJOSZybSJspHc/3es2ivkRrQVXfjdrAZ95Mi wkdJ3bCM8gI7YwrHaP2a7GxEp6Lt+iRT12O4bFpQvE1ZD+qCszrmNpc1zpOl/qfYvP WHntArYofsaQA== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 04/12] t/socket-rw-eagain: Don't brute force the port number Date: Fri, 2 Sep 2022 07:59:38 +0700 Message-Id: <20220902005825.2484023-5-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't brute force the port number, use `t_bind_ephemeral_port()`, much simpler and reliable for choosing a port number that is not in use. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/socket-rw-eagain.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/test/socket-rw-eagain.c b/test/socket-rw-eagain.c index 2d6a817..a12c70d 100644 --- a/test/socket-rw-eagain.c +++ b/test/socket-rw-eagain.c @@ -8,61 +8,51 @@ #include #include =20 #include #include #include #include #include #include #include #include =20 #include "liburing.h" +#include "helpers.h" =20 int main(int argc, char *argv[]) { int p_fd[2], ret; int32_t recv_s0; int32_t val =3D 1; struct sockaddr_in addr; struct iovec iov_r[1], iov_w[1]; =20 if (argc > 1) return 0; =20 srand(getpid()); =20 recv_s0 =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(ret !=3D -1); ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(ret !=3D -1); =20 addr.sin_family =3D AF_INET; addr.sin_addr.s_addr =3D inet_addr("127.0.0.1"); - - do { - addr.sin_port =3D htons((rand() % 61440) + 4096); - ret =3D bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr)); - if (!ret) - break; - if (errno !=3D EADDRINUSE) { - perror("bind"); - exit(1); - } - } while (1); - + assert(!t_bind_ephemeral_port(recv_s0, &addr)); ret =3D listen(recv_s0, 128); assert(ret !=3D -1); =20 p_fd[1] =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 val =3D 1; ret =3D setsockopt(p_fd[1], IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); assert(ret !=3D -1); =20 int32_t flags =3D fcntl(p_fd[1], F_GETFL, 0); assert(flags !=3D -1); =20 flags |=3D O_NONBLOCK; --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F0394C38145 for ; Fri, 2 Sep 2022 01:01:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234852AbiIBBBN (ORCPT ); Thu, 1 Sep 2022 21:01:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235060AbiIBBAn (ORCPT ); Thu, 1 Sep 2022 21:00:43 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 174F45283C for ; Thu, 1 Sep 2022 18:00:39 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id 9384080C0F; Fri, 2 Sep 2022 01:00:35 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080439; bh=9GSXmeVjCxnKtOIl8QXARd1WE15qBfZ6Fsg6NpWTl7A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YZDE+vqvKQs2IiFObLQGYe56c1JQ2spJtNsYb1nxLPiDd5/q7gq/GsVqs5liG1Cyr hs+QBx8s5lZKRX84VZedS9HOGM1Kkxqg/Luse9g5s0lJ6nWgZIh+y5E93hBmsTIW8g lSTXPcPiQg4TtvP5bGB9u19wwIJh3CRdQKGqkMfTY24TUMx3tWORDRaZiH0vuC0k+p iw5pBJ6pntwMxEvqK6yF0Whq1dIh5YIjil+VKlMsBN1pKt7rYfktXGPRBdfMVmaVUD vxrDiVJlkqbJVH4ibX+r9VZsmalWovS2ZwDKMhYGkMZ/VTlz+eB2nAmj662hjfee9n Mw61yG7GrB8ig== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 05/12] t/socket-rw-offset: Don't brute force the port number Date: Fri, 2 Sep 2022 07:59:39 +0700 Message-Id: <20220902005825.2484023-6-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't brute force the port number, use `t_bind_ephemeral_port()`, much simpler and reliable for choosing a port number that is not in use. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/socket-rw-offset.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/test/socket-rw-offset.c b/test/socket-rw-offset.c index 987b6c9..c422442 100644 --- a/test/socket-rw-offset.c +++ b/test/socket-rw-offset.c @@ -10,60 +10,51 @@ #include #include =20 #include #include #include #include #include #include #include #include =20 #include "liburing.h" +#include "helpers.h" =20 int main(int argc, char *argv[]) { int p_fd[2], ret; int32_t recv_s0; int32_t val =3D 1; struct sockaddr_in addr; struct iovec iov_r[1], iov_w[1]; =20 if (argc > 1) return 0; =20 srand(getpid()); =20 recv_s0 =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(ret !=3D -1); ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(ret !=3D -1); =20 addr.sin_family =3D AF_INET; addr.sin_addr.s_addr =3D inet_addr("127.0.0.1"); - - do { - addr.sin_port =3D htons((rand() % 61440) + 4096); - ret =3D bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr)); - if (!ret) - break; - if (errno !=3D EADDRINUSE) { - perror("bind"); - exit(1); - } - } while (1); + assert(!t_bind_ephemeral_port(recv_s0, &addr)); ret =3D listen(recv_s0, 128); assert(ret !=3D -1); =20 =20 p_fd[1] =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 val =3D 1; ret =3D setsockopt(p_fd[1], IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); assert(ret !=3D -1); =20 int32_t flags =3D fcntl(p_fd[1], F_GETFL, 0); assert(flags !=3D -1); =20 --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13361ECAAD3 for ; Fri, 2 Sep 2022 01:01:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235206AbiIBBBR (ORCPT ); Thu, 1 Sep 2022 21:01:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234832AbiIBBBB (ORCPT ); Thu, 1 Sep 2022 21:01:01 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3810F5D13B for ; Thu, 1 Sep 2022 18:00:43 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id E482C80C10; Fri, 2 Sep 2022 01:00:39 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080443; bh=bn92G2/WYBNLJSMRZSx4NfHoCNzbF2NxOW0dvPrdplU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tLZ4D4mqY+Eafut4H9fJrmMAPOrTLiLrbQyodlHejjAJJIkwJrn+j1g5rIj29ptsh 2kwR/Uq+rZVO774OKxu+750cffkB/OsvFVQX+y8nPqJNC//5EkfSmUfutUdsE+Lwfh Aln/xFc1jlP1SLj8cUCrSk2dOYKssSIOAxWMHxYKS8sOXVeQsH+FjorlLcIuP+t/Ed vrfjDwB8bRWTsnfq5bas0tjvzOYCczRPv07zzT//J1cNnyFHb0/CQof8oIukcbq5z6 2lCBZ7v89jAeumB10nap98ivspjCkDtvJqG5em86LFXt1tHVPHfWu5EAXgl/FXfX+F z/ytQnWtQnXVQ== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 06/12] t/files-exit-hang-poll: Don't brute force the port number Date: Fri, 2 Sep 2022 07:59:40 +0700 Message-Id: <20220902005825.2484023-7-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't brute force the port number, use `t_bind_ephemeral_port()`, much simpler and reliable for choosing a port number that is not in use. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/files-exit-hang-poll.c | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/test/files-exit-hang-poll.c b/test/files-exit-hang-poll.c index 0c609f1..04febc8 100644 --- a/test/files-exit-hang-poll.c +++ b/test/files-exit-hang-poll.c @@ -9,28 +9,26 @@ #include #include #include #include #include #include #include #include #include "liburing.h" #include "helpers.h" =20 #define BACKLOG 512 =20 -#define PORT 9100 - static struct io_uring ring; =20 static void add_poll(struct io_uring *ring, int fd) { struct io_uring_sqe *sqe; =20 sqe =3D io_uring_get_sqe(ring); io_uring_prep_poll_add(sqe, fd, POLLIN); sqe->flags |=3D IOSQE_IO_LINK; } =20 static void add_accept(struct io_uring *ring, int fd) { @@ -54,57 +52,45 @@ static int setup_io_uring(void) } =20 static void alarm_sig(int sig) { exit(0); } =20 int main(int argc, char *argv[]) { struct sockaddr_in serv_addr; struct io_uring_cqe *cqe; int ret, sock_listen_fd; const int val =3D 1; - int i; =20 if (argc > 1) return T_EXIT_SKIP; =20 sock_listen_fd =3D socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0); if (sock_listen_fd < 0) { perror("socket"); return T_EXIT_FAIL; } =20 setsockopt(sock_listen_fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); =20 memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family =3D AF_INET; serv_addr.sin_addr.s_addr =3D INADDR_ANY; =20 - for (i =3D 0; i < 100; i++) { - serv_addr.sin_port =3D htons(PORT + i); - - ret =3D bind(sock_listen_fd, (struct sockaddr *)&serv_addr, sizeof(serv_= addr)); - if (!ret) - break; - if (errno !=3D EADDRINUSE) { - fprintf(stderr, "bind: %s\n", strerror(errno)); - return T_EXIT_FAIL; - } - if (i =3D=3D 99) { - printf("Gave up on finding a port, skipping\n"); - goto skip; - } + if (t_bind_ephemeral_port(sock_listen_fd, &serv_addr)) { + perror("bind"); + return T_EXIT_FAIL; } =20 if (listen(sock_listen_fd, BACKLOG) < 0) { perror("Error listening on socket\n"); return T_EXIT_FAIL; } =20 if (setup_io_uring()) return T_EXIT_FAIL; =20 add_poll(&ring, sock_listen_fd); add_accept(&ring, sock_listen_fd); =20 @@ -115,17 +101,14 @@ int main(int argc, char *argv[]) } =20 signal(SIGALRM, alarm_sig); alarm(1); =20 ret =3D io_uring_wait_cqe(&ring, &cqe); if (ret) { fprintf(stderr, "wait_cqe=3D%d\n", ret); return T_EXIT_FAIL; } =20 io_uring_queue_exit(&ring); return T_EXIT_PASS; -skip: - io_uring_queue_exit(&ring); - return T_EXIT_SKIP; } --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C5ACECAAD3 for ; Fri, 2 Sep 2022 01:01:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235229AbiIBBBY (ORCPT ); Thu, 1 Sep 2022 21:01:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235125AbiIBBBE (ORCPT ); Thu, 1 Sep 2022 21:01:04 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31F7461D4D for ; Thu, 1 Sep 2022 18:00:48 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id 5322680C11; Fri, 2 Sep 2022 01:00:44 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080448; bh=wR9q1fHEmL5ldOvaDTrkydTc4/6tKsgAaLiL2mDHhBo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IbgKz3i/nO4VsDAtrZZG8l0JbtymMLAEOoHcxuZ8GZ71hCtv0E7GZg2ewnm+XIKvM dpT4uyxH2uXi7g0VkRabpTECHb1ncCSB5jtWwUCT2gOoVC/unpxwOkUW4x7Y57Z8Y4 NT9ZBhzmRN2joZJhcAYM7z0TJkRZU9PwKtu/3cBc9ye4du+DPt5JWtTHbwBGajIGbk yS7uylGOkzf2VFLlXbZ50qE1oXoMJvg0apBB9I0jKQHNfqF2HumqZST8eTXVVWSLma +ISlhCFrsPO/hBZKOeIeBbbewDI6IoVRuRPCy0yHpSo56Ie8MREfUYl2tDTxaK+Jz9 tCgkJnCuuCoMw== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 07/12] t/socket: Don't use a static port number Date: Fri, 2 Sep 2022 07:59:41 +0700 Message-Id: <20220902005825.2484023-8-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't use a static port number. It might already be in use, resulting in a test failure. Use an ephemeral port to make this test reliable. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/socket.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/socket.c b/test/socket.c index 6a3ea09..94c8e9f 100644 --- a/test/socket.c +++ b/test/socket.c @@ -1,65 +1,65 @@ /* SPDX-License-Identifier: MIT */ /* * Simple test case using the socket op */ #include #include #include #include #include #include #include #include #include +#include =20 #include "liburing.h" #include "helpers.h" =20 static char str[] =3D "This is a test of send and recv over io_uring!"; =20 #define MAX_MSG 128 =20 -#define PORT 10202 #define HOST "127.0.0.1" =20 static int no_socket; +static __be32 g_port; =20 static int recv_prep(struct io_uring *ring, struct iovec *iov, int *sock, int registerfiles) { struct sockaddr_in saddr; struct io_uring_sqe *sqe; int sockfd, ret, val, use_fd; =20 memset(&saddr, 0, sizeof(saddr)); saddr.sin_family =3D AF_INET; saddr.sin_addr.s_addr =3D htonl(INADDR_ANY); - saddr.sin_port =3D htons(PORT); =20 sockfd =3D socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket"); return 1; } =20 val =3D 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); =20 - ret =3D bind(sockfd, (struct sockaddr *)&saddr, sizeof(saddr)); - if (ret < 0) { + if (t_bind_ephemeral_port(sockfd, &saddr)) { perror("bind"); goto err; } + g_port =3D saddr.sin_port; =20 if (registerfiles) { ret =3D io_uring_register_files(ring, &sockfd, 1); if (ret) { fprintf(stderr, "file reg failed\n"); goto err; } use_fd =3D 0; } else { use_fd =3D sockfd; } =20 sqe =3D io_uring_get_sqe(ring); @@ -234,29 +234,30 @@ static int do_send(int socket_direct, int alloc) if (ret) { fprintf(stderr, "queue init failed: %d\n", ret); return 1; } =20 if (socket_direct) { ret =3D io_uring_register_files(&ring, &fd, 1); if (ret) { fprintf(stderr, "file register %d\n", ret); return 1; } } =20 + assert(g_port !=3D 0); memset(&saddr, 0, sizeof(saddr)); saddr.sin_family =3D AF_INET; - saddr.sin_port =3D htons(PORT); + saddr.sin_port =3D g_port; inet_pton(AF_INET, HOST, &saddr.sin_addr); =20 sqe =3D io_uring_get_sqe(&ring); if (socket_direct) { unsigned file_index =3D 0; if (alloc) file_index =3D IORING_FILE_INDEX_ALLOC - 1; io_uring_prep_socket_direct(sqe, AF_INET, SOCK_DGRAM, 0, file_index, 0); } else { io_uring_prep_socket(sqe, AF_INET, SOCK_DGRAM, 0, 0); } ret =3D io_uring_submit(&ring); --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63067ECAAD3 for ; Fri, 2 Sep 2022 01:01:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235157AbiIBBBa (ORCPT ); Thu, 1 Sep 2022 21:01:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58462 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235145AbiIBBBF (ORCPT ); Thu, 1 Sep 2022 21:01:05 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2AC04A50ED for ; Thu, 1 Sep 2022 18:00:53 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id 950B180C12; Fri, 2 Sep 2022 01:00:48 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080452; bh=9mn+NsOQ1zaPJ1WbjFHcvyNU4C6nPGPxtaZbqetpeAc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I7fFVRdMdz1lfJVbKj0RbWr/+JfX5pdiOFDMt/H/z02R1rIbqOhT7cdA/uvDleWwW fsQiRQijO6dK0PTkHdD9KRCkuilkN5EnLon7028gKCTQN2BaLABSYwcWRI1eOEPw0B 1nYOGX4jWUq83wXK2qthJzIMlddhTeSF5jeJIwpwX1t3k6HEnDwv5IGn3QKnAkdx+Y 0RAAwlT5CKEKV/mPnoURRe218PD56EJogbMsikAswqz5H8ve2NeByhjaY+avxLl4gZ o/w6EnsIBHOhYBg3Ki7vqZXXtNwl4OWhcTNwCV1/ZNgkzuG/XmTAmDeEE1lKd4xDZJ SwF8U7IeLVPIw== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 08/12] t/connect: Don't use a static port number Date: Fri, 2 Sep 2022 07:59:42 +0700 Message-Id: <20220902005825.2484023-9-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't use a static port number. It might already be in use, resulting in a test failure. Use an ephemeral port to make this test reliable. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/accept.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/accept.c b/test/accept.c index b35ded4..1821faa 100644 --- a/test/accept.c +++ b/test/accept.c @@ -184,31 +184,28 @@ static int start_accept_listen(struct sockaddr_in *ad= dr, int port_off, =20 int32_t val =3D 1; ret =3D setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(ret !=3D -1); ret =3D setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(ret !=3D -1); =20 struct sockaddr_in laddr; =20 if (!addr) addr =3D &laddr; =20 addr->sin_family =3D AF_INET; - addr->sin_port =3D htons(0x1235 + port_off); addr->sin_addr.s_addr =3D inet_addr("127.0.0.1"); - - ret =3D bind(fd, (struct sockaddr*)addr, sizeof(*addr)); - assert(ret !=3D -1); + assert(!t_bind_ephemeral_port(fd, addr)); ret =3D listen(fd, 128); assert(ret !=3D -1); =20 return fd; } =20 static int set_client_fd(struct sockaddr_in *addr) { int32_t val; int fd, ret; =20 fd =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47AA8ECAAD3 for ; Fri, 2 Sep 2022 01:01:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235255AbiIBBBd (ORCPT ); Thu, 1 Sep 2022 21:01:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235162AbiIBBBH (ORCPT ); Thu, 1 Sep 2022 21:01:07 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A659A59A6 for ; Thu, 1 Sep 2022 18:00:57 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id F2D9380C13; Fri, 2 Sep 2022 01:00:52 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080456; bh=641ABaukanUnlF8DlBpXWu8Xyzx65zYRCewGXBQKAhY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OJjQeTU1OfSw5E2rOHyia4KRVuSpEcYWzt1JG+Yu8b1zwKncDsqE7nQy7hEgGjwhq FoHPAFYrYVBz4t7ngwnmUx6tZ5yQVUKrg/da6Wo9ZN7n6NWhW7p7ctPk5CriCD5/nw aJYbVDNvKdnTEUtv8x49PnqrVTnFxhv4BFXInz35869nQ00aC+X4LP96DSC7BhzqM6 X6bEUIDtP0rkjzBn3H8mAZrrpeS9xCVPUA0c3OlpBOMDRRW5iQz0/UULD9oemZbDc0 8nGqjXTZZWLB4HLiqcBmX0EirHm8xWQf7l67/JoG6rQi2cWjmtSpZQPiVWEGc29f2M E941hFXmVDjsQ== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 09/12] t/shutdown: Don't use a static port number Date: Fri, 2 Sep 2022 07:59:43 +0700 Message-Id: <20220902005825.2484023-10-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't use a static port number. It might already be in use, resulting in a test failure. Use an ephemeral port to make this test reliable. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/shutdown.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/shutdown.c b/test/shutdown.c index 14c7407..064ee36 100644 --- a/test/shutdown.c +++ b/test/shutdown.c @@ -9,56 +9,55 @@ #include #include =20 #include #include #include #include #include #include #include #include =20 #include "liburing.h" +#include "helpers.h" =20 static void sig_pipe(int sig) { } =20 int main(int argc, char *argv[]) { int p_fd[2], ret; int32_t recv_s0; int32_t val =3D 1; - struct sockaddr_in addr; + struct sockaddr_in addr =3D { }; =20 if (argc > 1) return 0; =20 srand(getpid()); =20 recv_s0 =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(ret !=3D -1); ret =3D setsockopt(recv_s0, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(ret !=3D -1); =20 addr.sin_family =3D AF_INET; - addr.sin_port =3D htons((rand() % 61440) + 4096); addr.sin_addr.s_addr =3D inet_addr("127.0.0.1"); =20 - ret =3D bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr)); - assert(ret !=3D -1); + assert(!t_bind_ephemeral_port(recv_s0, &addr)); ret =3D listen(recv_s0, 128); assert(ret !=3D -1); =20 p_fd[1] =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); =20 val =3D 1; ret =3D setsockopt(p_fd[1], IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); assert(ret !=3D -1); =20 int32_t flags =3D fcntl(p_fd[1], F_GETFL, 0); assert(flags !=3D -1); =20 flags |=3D O_NONBLOCK; --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16D40ECAAD3 for ; Fri, 2 Sep 2022 01:01:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235094AbiIBBBr (ORCPT ); Thu, 1 Sep 2022 21:01:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235181AbiIBBBI (ORCPT ); Thu, 1 Sep 2022 21:01:08 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AF1BA61EE for ; Thu, 1 Sep 2022 18:01:01 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id 5405880C14; Fri, 2 Sep 2022 01:00:57 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080461; bh=TNBQyUndOwcKgHkPQpPb2W5jDyTNkUXpBwq2t+iephY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QkimsktItTYLJPUPpfZI3v4cKtooxKWxJsVWk1YNrTRdA8tDT9V7gZ0kII3y7FwBP t8Sm2cl6/pdVDZGOJSNah2yH+eF7XPh/YTBXHWZus21kp8W/DMFbu6lgbJcG0QxMT2 Sk/ZTB94Cr9aGYWSaikJ2m8fEQMTs9euhZqf4/iV0tcacx2xU1gHajauyuzLl6aal0 kCoBDi4Arv3TZXh87K9lSQaoj+uWuN9qzOY7Egwm2MjOopvf0VuCe8GnUP9r8wf7K/ qPai9HDiue1wCBekbHNqR2F3SOU3+ZX2Vv3yHeo3P+HK03/bERMK5FwUOoLrZUwCNK gv9y8qsyb/T8A== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 10/12] t/recv-msgall: Don't use a static port number Date: Fri, 2 Sep 2022 07:59:44 +0700 Message-Id: <20220902005825.2484023-11-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't use a static port number. It might already be in use, resulting in a test failure. Use an ephemeral port to make this test reliable. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/recv-msgall.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/test/recv-msgall.c b/test/recv-msgall.c index a6f7cfc..ae123e4 100644 --- a/test/recv-msgall.c +++ b/test/recv-msgall.c @@ -6,57 +6,55 @@ #include #include #include #include #include #include #include #include =20 #include "liburing.h" #include "helpers.h" =20 #define MAX_MSG 128 - -#define PORT 10201 #define HOST "127.0.0.1" +static __be16 bind_port; =20 static int recv_prep(struct io_uring *ring, struct iovec *iov, int *sock, int use_recvmsg) { struct sockaddr_in saddr; struct io_uring_sqe *sqe; int sockfd, ret, val; struct msghdr msg =3D { }; =20 memset(&saddr, 0, sizeof(saddr)); saddr.sin_family =3D AF_INET; saddr.sin_addr.s_addr =3D htonl(INADDR_ANY); - saddr.sin_port =3D htons(PORT); =20 sockfd =3D socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket"); return 1; } =20 val =3D 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); =20 - ret =3D bind(sockfd, (struct sockaddr *)&saddr, sizeof(saddr)); - if (ret < 0) { + if (t_bind_ephemeral_port(sockfd, &saddr)) { perror("bind"); goto err; } + bind_port =3D saddr.sin_port; =20 sqe =3D io_uring_get_sqe(ring); if (!use_recvmsg) { io_uring_prep_recv(sqe, sockfd, iov->iov_base, iov->iov_len, MSG_WAITALL); } else { msg.msg_namelen =3D sizeof(struct sockaddr_in); msg.msg_iov =3D iov; msg.msg_iovlen =3D 1; io_uring_prep_recvmsg(sqe, sockfd, &msg, MSG_WAITALL); } =20 sqe->user_data =3D 2; @@ -155,27 +153,27 @@ static int do_send(void) =20 ret =3D io_uring_queue_init(2, &ring, 0); if (ret) { fprintf(stderr, "queue init failed: %d\n", ret); return 1; } =20 buf =3D malloc(MAX_MSG * sizeof(int)); for (i =3D 0; i < MAX_MSG; i++) buf[i] =3D i; =20 memset(&saddr, 0, sizeof(saddr)); saddr.sin_family =3D AF_INET; - saddr.sin_port =3D htons(PORT); + saddr.sin_port =3D bind_port; inet_pton(AF_INET, HOST, &saddr.sin_addr); =20 sockfd =3D socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket"); return 1; } =20 ret =3D connect(sockfd, (struct sockaddr *)&saddr, sizeof(saddr)); if (ret < 0) { perror("connect"); return 1; } --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 020F9ECAAD2 for ; Fri, 2 Sep 2022 01:01:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234982AbiIBBBz (ORCPT ); Thu, 1 Sep 2022 21:01:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235034AbiIBBBQ (ORCPT ); Thu, 1 Sep 2022 21:01:16 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A3B4C550B3 for ; Thu, 1 Sep 2022 18:01:05 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id B3CD380C15; Fri, 2 Sep 2022 01:01:01 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080465; bh=vShv+hxcQ7QcSMBl3vGKbL5wp9p4RgG0QrNvZWcvci8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PnO9tAhWPSTQ3dilR+VckCrmrIrKBALDGVSOGeSJe+0US5Z4ceO+s09TZhluZsLVU OWV0pCIZgNXWORmaZHJBS7ltxPnq4xGYHhiRmxKwlE7oOtCzJwySnlBiXpB7CmgFRH lelxTHvx7SqC6TOtm+Ch7dUPxvhr8+Zy4z4j9MMFzVAmVwtmvM/ohQ1w4zvgn32kxd pBZufE9p64YaF8r2d4KWeRGdogQkm5h0rDSuKAcplCMM6g8clGey0MdHDkxwPPBW5c GCC7S2ktXaMlY0DNO0WjeN5jOtcBUsZYiCTq1MkvixKdaNuhoWLVt/bdrk0OIJppRj VHQFnnfqxKYxg== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 11/12] t/232c93d07b74: Don't use a static port number Date: Fri, 2 Sep 2022 07:59:45 +0700 Message-Id: <20220902005825.2484023-12-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't use a static port number. It might already be in use, resulting in a test failure. Use an ephemeral port to make this test reliable. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/232c93d07b74.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/test/232c93d07b74.c b/test/232c93d07b74.c index c99491f..74cc063 100644 --- a/test/232c93d07b74.c +++ b/test/232c93d07b74.c @@ -17,31 +17,30 @@ #include #include #include #include #include #include =20 #include "helpers.h" #include "liburing.h" =20 #define RECV_BUFF_SIZE 2 #define SEND_BUFF_SIZE 3 =20 -#define PORT 0x1234 - struct params { int tcp; int non_blocking; + __be16 bind_port; }; =20 pthread_mutex_t mutex =3D PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond =3D PTHREAD_COND_INITIALIZER; int rcv_ready =3D 0; =20 static void set_rcv_ready(void) { pthread_mutex_lock(&mutex); =20 rcv_ready =3D 1; pthread_cond_signal(&cond); =20 @@ -67,30 +66,29 @@ static void *rcv(void *arg) if (p->tcp) { int val =3D 1; =20 =20 s0 =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); res =3D setsockopt(s0, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); assert(res !=3D -1); res =3D setsockopt(s0, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); assert(res !=3D -1); =20 struct sockaddr_in addr; =20 addr.sin_family =3D AF_INET; - addr.sin_port =3D htons(PORT); addr.sin_addr.s_addr =3D inet_addr("127.0.0.1"); - res =3D bind(s0, (struct sockaddr *) &addr, sizeof(addr)); - assert(res !=3D -1); + assert(t_bind_ephemeral_port(s0, &addr) =3D=3D 0); + p->bind_port =3D addr.sin_port; } else { s0 =3D socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); assert(s0 !=3D -1); =20 struct sockaddr_un addr; memset(&addr, 0, sizeof(addr)); =20 addr.sun_family =3D AF_UNIX; memcpy(addr.sun_path, "\0sock", 6); res =3D bind(s0, (struct sockaddr *) &addr, sizeof(addr)); assert(res !=3D -1); } res =3D listen(s0, 128); @@ -182,27 +180,27 @@ static void *snd(void *arg) =20 wait_for_rcv_ready(); =20 if (p->tcp) { int val =3D 1; =20 s0 =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); ret =3D setsockopt(s0, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); assert(ret !=3D -1); =20 struct sockaddr_in addr; =20 addr.sin_family =3D AF_INET; - addr.sin_port =3D htons(PORT); + addr.sin_port =3D p->bind_port; addr.sin_addr.s_addr =3D inet_addr("127.0.0.1"); ret =3D connect(s0, (struct sockaddr*) &addr, sizeof(addr)); assert(ret !=3D -1); } else { s0 =3D socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); assert(s0 !=3D -1); =20 struct sockaddr_un addr; memset(&addr, 0, sizeof(addr)); =20 addr.sun_family =3D AF_UNIX; memcpy(addr.sun_path, "\0sock", 6); ret =3D connect(s0, (struct sockaddr*) &addr, sizeof(addr)); --=20 Ammar Faizi From nobody Mon Apr 6 21:32:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF4CDECAAD2 for ; Fri, 2 Sep 2022 01:02:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235290AbiIBBCK (ORCPT ); Thu, 1 Sep 2022 21:02:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235112AbiIBBBT (ORCPT ); Thu, 1 Sep 2022 21:01:19 -0400 Received: from gnuweeb.org (gnuweeb.org [51.81.211.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10DFF5C96C for ; Thu, 1 Sep 2022 18:01:10 -0700 (PDT) Received: from localhost.localdomain (unknown [182.2.38.99]) by gnuweeb.org (Postfix) with ESMTPSA id F1B2380C16; Fri, 2 Sep 2022 01:01:05 +0000 (UTC) X-GW-Data: lPqxHiMPbJw1wb7CM9QUryAGzr0yq5atzVDdxTR0iA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1662080469; bh=RiGcPlW7X5CDPS5LPqUVDno+6lkfchw25Ov8zg/eK2w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FoUql9LkgYcAm+0y+mjw3rUXNVwusfgQAofhZsEAFT0cnn92Sq1oUZdQh1qmNA0PH c0qro7M4kavlspo7qNstNK3J9sJlnrx6MJlSEx9qHHZykAAIbo8TPVq5ApaaVOHmMm kfmiGYF0q9QiNUX4Uonoq0YRIvsQf/CJhsGwd0IInyX6EWfMg0hiz2IzhSke8nF2LP nsXRHECK/G4CCQG76F6L8TlSQKaXVCikPRUqTVayrefXufRqjUtMmHAIcY3cAU8wGH LYLvgNklTveQgWKM+aXsfr83aZCtG09zSxZAdU7/AgWDNalrJ0aNUZukTQdQtIZgsa dxfGSa11nEAqA== From: Ammar Faizi To: Jens Axboe Cc: Ammar Faizi , Dylan Yudaken , Facebook Kernel Team , Pavel Begunkov , Kanna Scarlet , Muhammad Rizki , GNU/Weeb Mailing List , io-uring Mailing List , Linux Kernel Mailing List Subject: [PATCH liburing v1 12/12] t/recv-msgall-stream: Don't use a static port number Date: Fri, 2 Sep 2022 07:59:46 +0700 Message-Id: <20220902005825.2484023-13-ammar.faizi@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220902005825.2484023-1-ammar.faizi@intel.com> References: <20220902005825.2484023-1-ammar.faizi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ammar Faizi Don't use a static port number. It might already be in use, resulting in a test failure. Use an ephemeral port to make this test reliable. Cc: Dylan Yudaken Cc: Facebook Kernel Team Cc: Pavel Begunkov Signed-off-by: Ammar Faizi --- test/recv-msgall-stream.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/test/recv-msgall-stream.c b/test/recv-msgall-stream.c index a188cc1..65b4d22 100644 --- a/test/recv-msgall-stream.c +++ b/test/recv-msgall-stream.c @@ -1,68 +1,66 @@ /* SPDX-License-Identifier: MIT */ /* * Test MSG_WAITALL for recv/recvmsg and include normal sync versions just * for comparison. */ +#include #include #include #include #include #include #include #include #include #include #include =20 #include "liburing.h" #include "helpers.h" =20 #define MAX_MSG 128 =20 -static int port =3D 31200; - struct recv_data { pthread_mutex_t mutex; int use_recvmsg; int use_sync; - int port; + __be16 port; }; =20 static int get_conn_sock(struct recv_data *rd, int *sockout) { struct sockaddr_in saddr; int sockfd, ret, val; =20 memset(&saddr, 0, sizeof(saddr)); saddr.sin_family =3D AF_INET; saddr.sin_addr.s_addr =3D htonl(INADDR_ANY); - saddr.sin_port =3D htons(rd->port); =20 sockfd =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); if (sockfd < 0) { perror("socket"); goto err; } =20 val =3D 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)); =20 - ret =3D bind(sockfd, (struct sockaddr *)&saddr, sizeof(saddr)); - if (ret < 0) { + if (t_bind_ephemeral_port(sockfd, &saddr)) { perror("bind"); goto err; } + rd->port =3D saddr.sin_port; =20 ret =3D listen(sockfd, 16); if (ret < 0) { perror("listen"); goto err; } =20 pthread_mutex_unlock(&rd->mutex); =20 ret =3D accept(sockfd, NULL, NULL); if (ret < 0) { perror("accept"); return -1; @@ -269,38 +267,38 @@ static int do_send(struct recv_data *rd) struct iovec iov; int *buf; =20 ret =3D io_uring_queue_init(2, &ring, 0); if (ret) { fprintf(stderr, "queue init failed: %d\n", ret); return 1; } =20 buf =3D malloc(MAX_MSG * sizeof(int)); for (i =3D 0; i < MAX_MSG; i++) buf[i] =3D i; =20 - memset(&saddr, 0, sizeof(saddr)); - saddr.sin_family =3D AF_INET; - saddr.sin_port =3D htons(rd->port); - inet_pton(AF_INET, "127.0.0.1", &saddr.sin_addr); - sockfd =3D socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP); if (sockfd < 0) { perror("socket"); return 1; } =20 pthread_mutex_lock(&rd->mutex); + assert(rd->port !=3D 0); + memset(&saddr, 0, sizeof(saddr)); + saddr.sin_family =3D AF_INET; + saddr.sin_port =3D rd->port; + inet_pton(AF_INET, "127.0.0.1", &saddr.sin_addr); =20 ret =3D connect(sockfd, (struct sockaddr *)&saddr, sizeof(saddr)); if (ret < 0) { perror("connect"); return 1; } =20 iov.iov_base =3D buf; iov.iov_len =3D MAX_MSG * sizeof(int) / 2; for (i =3D 0; i < 2; i++) { sqe =3D io_uring_get_sqe(&ring); io_uring_prep_send(sqe, sockfd, iov.iov_base, iov.iov_len, 0); sqe->user_data =3D 1; @@ -341,27 +339,27 @@ static int test(int use_recvmsg, int use_sync) { pthread_mutexattr_t attr; pthread_t recv_thread; struct recv_data rd; int ret; void *retval; =20 pthread_mutexattr_init(&attr); pthread_mutexattr_setpshared(&attr, 1); pthread_mutex_init(&rd.mutex, &attr); pthread_mutex_lock(&rd.mutex); rd.use_recvmsg =3D use_recvmsg; rd.use_sync =3D use_sync; - rd.port =3D port++; + rd.port =3D 0; =20 ret =3D pthread_create(&recv_thread, NULL, recv_fn, &rd); if (ret) { fprintf(stderr, "Thread create failed: %d\n", ret); pthread_mutex_unlock(&rd.mutex); return 1; } =20 do_send(&rd); pthread_join(recv_thread, &retval); return (intptr_t)retval; } =20 --=20 Ammar Faizi