Accepting request 1092686 from home:dmdiss:liburing_2.4

- Update to 2.4:
  * Add io_uring_{major,minor,check}_version() functions.
  * Add IO_URING_{MAJOR,MINOR,CHECK}_VERSION() macros.
  * FFI support (for non-C/C++ languages integration).
  * Add io_uring_prep_msg_ring_cqe_flags() function.
  * Deprecate --nolibc configure option.
  * CONFIG_NOLIBC is always enabled on x86-64, x86, and aarch64.
  * Add support for IORING_REGISTER_USE_REGISTERED_RING and use if available.
  * Add io_uring_close_ring_fd() function.
  * Add io_uring_prep_msg_ring_fd_alloc function.
  * Add io_uring_free_buf_ring() and io_uring_setup_buf_ring() functions.
  * Ensure that io_uring_prep_accept_direct(), io_uring_prep_openat_direct(),
    io_uring_prep_openat2_direct(), io_uring_prep_msg_ring_fd(), and
    io_uring_prep_socket_direct() factor in being called with
    IORING_FILE_INDEX_ALLOC for allocating a direct descriptor.
  * Add io_uring_prep_sendto() function.
- Add liburing-ffi2 package for corresponding FFI library, given that
  dependents will normally require either that or the base library (not both).
- Drop upstream patches:
  * 0001-Do-not-always-expect-multishot-recv-to-stop-posting-.patch
  * 0001-test-file-verify.t-Don-t-run-over-mlock-limit-when-r.patch
  * 0001-test-helpers-fix-socket-length-type.patch

OBS-URL: https://build.opensuse.org/request/show/1092686
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/liburing?expand=0&rev=32
This commit is contained in:
Dirk Mueller 2023-06-13 05:51:40 +00:00 committed by Git OBS Bridge
parent 72b4cf4dda
commit 7afdc4af6e
7 changed files with 46 additions and 143 deletions

View File

@ -1,47 +0,0 @@
From: Dylan Yudaken <dylany@meta.com>
Date: Mon, 7 Nov 2022 05:04:04 -0800
Subject: Do not always expect multishot recv to stop posting events
Patch-mainline: yes
Git-commit: 0d4fdb416718a70a4a90c5c4722b38cf44849195
References: kernel 6.2
Later kernels can have a fix that does not stop multishot from posting
events, and would just continue in overflow mode.
Signed-off-by: Dylan Yudaken <dylany@meta.com>
Link: https://lore.kernel.org/r/20221107130404.360691-1-dylany@meta.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
test/recv-multishot.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/test/recv-multishot.c b/test/recv-multishot.c
index 2cfe6898..ed26a5f7 100644
--- a/test/recv-multishot.c
+++ b/test/recv-multishot.c
@@ -264,11 +264,19 @@ static int test(struct args *args)
bool const is_last = i == recv_cqes - 1;
+ /*
+ * Older kernels could terminate multishot early due to overflow,
+ * but later ones will not. So discriminate based on the MORE flag.
+ */
+ bool const early_last = args->early_error == ERROR_EARLY_OVERFLOW &&
+ !args->wait_each &&
+ i == N_CQE_OVERFLOW &&
+ !(cqe->flags & IORING_CQE_F_MORE);
+
bool const should_be_last =
(cqe->res <= 0) ||
(args->stream && is_last) ||
- (args->early_error == ERROR_EARLY_OVERFLOW &&
- !args->wait_each && i == N_CQE_OVERFLOW);
+ early_last;
int *this_recv;
int orig_payload_size = cqe->res;
--
2.35.3

View File

@ -1,46 +0,0 @@
From 87943e896268efbe85e15f7e59f45a042d2ba8f7 Mon Sep 17 00:00:00 2001
From: Gabriel Krisman Bertazi <krisman@suse.de>
Date: Thu, 20 Apr 2023 14:23:55 -0400
Subject: [PATCH] test/file-verify.t: Don't run over mlock limit when run as
non-root
test/file-verify tries to get 2MB of pinned memory at once, which is
higher than the default allowed for non-root users in older
kernels (64kb before v5.16, nowadays 8mb). Skip the test for non-root
users if the registration fails instead of failing the test.
Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
---
test/file-verify.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/test/file-verify.c b/test/file-verify.c
index f33b24a..89cbb02 100644
--- a/test/file-verify.c
+++ b/test/file-verify.c
@@ -381,9 +381,12 @@ static int test(struct io_uring *ring, const char *fname, int buffered,
v[i].iov_base = buf[i];
v[i].iov_len = CHUNK_SIZE;
}
- ret = io_uring_register_buffers(ring, v, READ_BATCH);
+ ret = t_register_buffers(ring, v, READ_BATCH);
if (ret) {
- fprintf(stderr, "Error buffer reg %d\n", ret);
+ if (ret == T_SETUP_SKIP) {
+ ret = 0;
+ goto free_bufs;
+ }
goto err;
}
}
@@ -477,6 +480,7 @@ static int test(struct io_uring *ring, const char *fname, int buffered,
done:
if (registered)
io_uring_unregister_buffers(ring);
+free_bufs:
if (vectored) {
for (j = 0; j < READ_BATCH; j++)
for (i = 0; i < nr_vecs; i++)
--
2.40.0

View File

@ -1,41 +0,0 @@
From b5caa618565c0c6d0053f7b1bae2423cd317660c Mon Sep 17 00:00:00 2001
From: Gabriel Krisman Bertazi <krisman@suse.de>
Date: Wed, 18 Jan 2023 11:48:06 -0300
Subject: [PATCH] test/helpers: fix socket length type
t_create_socket_pair uses size_t for paddrlen, which is uint64 on 64-bit
architecture, while the network syscalls expect uint32. The implicit
cast is always safe for little-endian here due to the structure format,
its small size and the fact it was previously zeroed - so the test
succeeds.
Still, on BE machines, our CI caught a few tests crashing on
connect(). For instance:
localhost:~/liburing/test # ./send_recv.t
connect failed
test_invalid failed
Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
Link: https://lore.kernel.org/r/20230118144806.18352-1-krisman@suse.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
test/helpers.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/helpers.c b/test/helpers.c
index 869e903..37ba67c 100644
--- a/test/helpers.c
+++ b/test/helpers.c
@@ -173,7 +173,7 @@ int t_create_socket_pair(int fd[2], bool stream)
int val;
struct sockaddr_in serv_addr;
struct sockaddr *paddr;
- size_t paddrlen;
+ socklen_t paddrlen;
type |= SOCK_CLOEXEC;
fd[0] = socket(AF_INET, type, 0);
--
2.39.0

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f242bd38777c79ee4e1169f817e08ce111b03e033ef9a1bde274d3196d4de36e
size 197929

BIN
liburing-2.4.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,29 @@
-------------------------------------------------------------------
Mon Jun 12 08:44:39 UTC 2023 - David Disseldorp <ddiss@suse.com>
- Update to 2.4:
* Add io_uring_{major,minor,check}_version() functions.
* Add IO_URING_{MAJOR,MINOR,CHECK}_VERSION() macros.
* FFI support (for non-C/C++ languages integration).
* Add io_uring_prep_msg_ring_cqe_flags() function.
* Deprecate --nolibc configure option.
* CONFIG_NOLIBC is always enabled on x86-64, x86, and aarch64.
* Add support for IORING_REGISTER_USE_REGISTERED_RING and use if available.
* Add io_uring_close_ring_fd() function.
* Add io_uring_prep_msg_ring_fd_alloc function.
* Add io_uring_free_buf_ring() and io_uring_setup_buf_ring() functions.
* Ensure that io_uring_prep_accept_direct(), io_uring_prep_openat_direct(),
io_uring_prep_openat2_direct(), io_uring_prep_msg_ring_fd(), and
io_uring_prep_socket_direct() factor in being called with
IORING_FILE_INDEX_ALLOC for allocating a direct descriptor.
* Add io_uring_prep_sendto() function.
- Add liburing-ffi2 package for corresponding FFI library, given that
dependents will normally require either that or the base library (not both).
- Drop upstream patches:
* 0001-Do-not-always-expect-multishot-recv-to-stop-posting-.patch
* 0001-test-file-verify.t-Don-t-run-over-mlock-limit-when-r.patch
* 0001-test-helpers-fix-socket-length-type.patch
-------------------------------------------------------------------
Thu Apr 20 20:26:32 UTC 2023 - Gabriel Krisman Bertazi <gabriel.bertazi@suse.com>

View File

@ -18,17 +18,13 @@
%define lname liburing2
Name: liburing
Version: 2.3
Version: 2.4
Release: 0
Summary: Linux-native io_uring I/O access library
License: (GPL-2.0-only AND LGPL-2.1-or-later) OR MIT
Group: Development/Libraries/C and C++
URL: https://git.kernel.dk/cgit/liburing
Source: https://git.kernel.dk/cgit/liburing/snapshot/%{name}-%{version}.tar.bz2
# PATCH-FIX-UPSTREAM: fix tests on big endian
Patch1: 0001-test-helpers-fix-socket-length-type.patch
Patch2: 0001-Do-not-always-expect-multishot-recv-to-stop-posting-.patch
Patch3: 0001-test-file-verify.t-Don-t-run-over-mlock-limit-when-r.patch
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: procps
@ -47,6 +43,14 @@ Group: Development/Libraries/C and C++
Provides native async IO for the Linux kernel, in a fast and efficient
manner, for both buffered and O_DIRECT.
%package -n liburing-ffi2
Summary: io_uring I/O access library for non-C/C++ languages
Group: Development/Libraries/C and C++
%description -n liburing-ffi2
Foreign function interface for liburing, offering non-C/C++ language
integration.
%package devel
Summary: Development files for Linux-native io_uring I/O access library
Group: Development/Libraries/C and C++
@ -81,20 +85,27 @@ sh ./configure --prefix=%{_prefix} \
%install
%make_install
rm -v %{buildroot}%{_libdir}/%{name}.a
rm -v %{buildroot}%{_libdir}/%{name}*.a
%post -n %{lname} -p /sbin/ldconfig
%postun -n %{lname} -p /sbin/ldconfig
%post -n liburing-ffi2 -p /sbin/ldconfig
%postun -n liburing-ffi2 -p /sbin/ldconfig
%files -n %{lname}
%{_libdir}/liburing.so.*
%license COPYING COPYING.GPL LICENSE
%files -n liburing-ffi2
%{_libdir}/liburing-ffi.so.*
%files devel
%doc README
%{_includedir}/liburing/
%{_includedir}/liburing.h
%{_libdir}/liburing.so
%{_libdir}/liburing-ffi.so
%{_libdir}/pkgconfig/*
%{_mandir}/man2/*
%{_mandir}/man3/*