- switch URLs to the current location on github

- Update to 2.8
  * Add support for incrementally/partially consumed provided buffers,
    usable with the provided buffer ring support.
  * Add support for foo_and_wait_min_timeout(), where it's possible to
    define a minimum timeout for waiting to get batches of completions,
    but if that fails, extend for a longer timeout without having any
    extra context switches.
  * Add support for using different clock sources for completion waiting.
  * Great increase coverage of test cases, test case improvements and
    fixes.
  * Don't leak _GNU_SOURCE via pkb-config --cflags
  * Support for address sanitizer
  * Add examples/kdigest sample program
  * Add discard helper, test, and man page
  * Man page updates
  * Sync with kernel 6.10
          * send/recv bundle support
          * accept nowait and CQE_F_MORE
  * Add and update test cases
  * Fix io_uring_queue_init_mem() returning a value that was too small,
    potentially causing memory corruption in userspace by overwriting
    64 bytes beyond the returned value. Also add test case for that.
  * Add 64-bit length variants of io_uring_prep_{m,f}advise()
  * Add BIND/LISTEN support and helpers / man pages
  * Add io_uring_enable_rings.3 man page
  * Fix bug in io_uring_prep_read_multishot()
  * Fixup bundle test cases
  * Add fixed-hugepage test case
  * Fix io_uring_prep_fixed_fd_install.3 man page

OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/liburing?expand=0&rev=50
This commit is contained in:
David Disseldorp 2024-12-05 23:32:43 +00:00 committed by Git OBS Bridge
commit 7f72b46110
13 changed files with 905 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,35 @@
From: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Date: Wed, 4 Dec 2024 13:05:15 +0100
Subject: test/init-mem: zero the ringbuf memory
References: fix-test-crash
Patch-mainline: Submitted, #1293
This is a similar fix to commit 8100d7b5f862 (test/buf-ring-nommap: zero
the ringbuf memory). The same is needed for test/init-mem as it crashes
with MALLOC_PERTURB_=69 too.
So zero the ringbuf memory after posix_memalign() too.
Fixes #1291.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
---
test/init-mem.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/init-mem.c b/test/init-mem.c
index 59973c8b7521..8b139fedd83b 100644
--- a/test/init-mem.c
+++ b/test/init-mem.c
@@ -41,6 +41,8 @@ static int setup_ctx(struct ctx *ctx, struct q_entries *q)
if (posix_memalign(&ctx->mem, 4096, 2*1024*1024))
return T_EXIT_FAIL;
+ memset(ctx->mem, 0, 2*1024*1024);
+
ctx->pre = ctx->mem + 4096 - sizeof(unsigned long long);
*ctx->pre = PRE_RED;
--
2.47.1

View File

@ -0,0 +1,39 @@
From: Jens Axboe <axboe@kernel.dk>
Date: Sun, 27 Oct 2024 18:48:55 -0600
Subject: test/rsrc_tags: use correct buffer index for test
References: fix-kernel-6.13
Git-repo: https://github.com/axboe/liburing
Git-commit: 91eecf3a88aa7f72898c17b530d3873331cc1661
Patch-mainline: 2.9
The test is reading from buffer 0, but updating buffer 1. It's expecting
buffer 1 not to be put until the per-ring state allows it, but with
per-node refs, this is no longer true. However what is true, is that if
we use the right buffer, then the ordering will be observed.
Hence use buffer offset 1 for both the read and the update test, then
the test is actually testing what it should be testing. And it'll pass
without full buffer table pinning.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
---
test/rsrc_tags.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/rsrc_tags.c b/test/rsrc_tags.c
index 95f65e930ee5..e78cfe403bfb 100644
--- a/test/rsrc_tags.c
+++ b/test/rsrc_tags.c
@@ -184,7 +184,7 @@ static int test_buffers_update(void)
/* test that CQE is not emitted before we're done with a buffer */
sqe = io_uring_get_sqe(&ring);
- io_uring_prep_read_fixed(sqe, pipes[0], tmp_buf, 10, 0, 0);
+ io_uring_prep_read_fixed(sqe, pipes[0], tmp_buf, 10, 0, 1);
sqe->user_data = 100;
ret = io_uring_submit(&ring);
if (ret != 1) {
--
2.47.1

3
liburing-2.5.tar.bz2 Normal file
View File

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

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

Binary file not shown.

3
liburing-2.8.tar.gz Normal file
View File

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

516
liburing.changes Normal file
View File

@ -0,0 +1,516 @@
-------------------------------------------------------------------
Wed Dec 4 11:38:54 UTC 2024 - Jiri Slaby <jslaby@suse.cz>
- switch URLs to the current location on github
- Update to 2.8
* Add support for incrementally/partially consumed provided buffers,
usable with the provided buffer ring support.
* Add support for foo_and_wait_min_timeout(), where it's possible to
define a minimum timeout for waiting to get batches of completions,
but if that fails, extend for a longer timeout without having any
extra context switches.
* Add support for using different clock sources for completion waiting.
* Great increase coverage of test cases, test case improvements and
fixes.
* Don't leak _GNU_SOURCE via pkb-config --cflags
* Support for address sanitizer
* Add examples/kdigest sample program
* Add discard helper, test, and man page
* Man page updates
* Sync with kernel 6.10
* send/recv bundle support
* accept nowait and CQE_F_MORE
* Add and update test cases
* Fix io_uring_queue_init_mem() returning a value that was too small,
potentially causing memory corruption in userspace by overwriting
64 bytes beyond the returned value. Also add test case for that.
* Add 64-bit length variants of io_uring_prep_{m,f}advise()
* Add BIND/LISTEN support and helpers / man pages
* Add io_uring_enable_rings.3 man page
* Fix bug in io_uring_prep_read_multishot()
* Fixup bundle test cases
* Add fixed-hugepage test case
* Fix io_uring_prep_fixed_fd_install.3 man page
* Note 'len' == 0 requirement in io_uring_prep_send.3 man page
* Fix some test cases for skipping on older kernels
- drop (they are upstream)
* test-buf-ring-nommap-skip-the-test-on-queue-init-ENO.patch
* test-buf-ring-nommap-zero-the-ringbuf-memory.patch
- add
* 0001-test-init-mem-zero-the-ringbuf-memory.patch
* 0001-test-rsrc_tags-use-correct-buffer-index-for-test.patch
- cleanup spec file
-------------------------------------------------------------------
Thu Aug 8 10:21:50 UTC 2024 - Valentin Lefebvre <valentin.lefebvre@suse.com>
- Skip test buf-ring-nommap.t if ENOMEM appears (happens in ppc64le arch).
* test-buf-ring-nommap-skip-the-test-on-queue-init-ENO.patch
-------------------------------------------------------------------
Fri Jul 12 16:49:22 UTC 2024 - David Disseldorp <ddiss@suse.com>
- Fix buf-ring-nommap.t test failure
* test-buf-ring-nommap-zero-the-ringbuf-memory.patch
-------------------------------------------------------------------
Fri Jun 28 08:29:55 UTC 2024 - Jiri Slaby <jslaby@suse.cz>
- Update to 2.6:
* Add getsockopt and setsockopt socket commands
* Add test cases to test/hardlink
* Man page fixes
* Add futex support, and test cases
* Add waitid support, and test cases
* Add read multishot, and test cases
* Add support for IORING_SETUP_NO_SQARRAY
* Use IORING_SETUP_NO_SQARRAY as the default
* Add support for IORING_OP_FIXED_FD_INSTALL
* Add io_uring_prep_fixed_fd_install() helper
* Support for napi busy polling
* Improve/add test cases
* Man page fixes
* Add sample 'proxy' example
- Remove (they are upstream)
* test-no-mmap-inval-0-return-is-fine-too.patch
* test-recv-multishot-wait-for-the-right-amount-of-CQE.patch
- exclude buf-ring-nommap.t test (crashes)
-------------------------------------------------------------------
Wed Apr 3 08:40:14 UTC 2024 - Jiri Slaby <jslaby@suse.cz>
- Update to 2.5:
* Add support for io_uring_prep_cmd_sock()
* Add support for application allocated ring memory, for placing rings
in huge mem. Available through io_uring_queue_init_mem().
* Add support for registered ring fds
* Various documentation updates
* Various fixes
- Remove (they are upstream)
* test-io_uring_register-fix-errno-confusion-and-new-e.patch
* tests-don-t-expect-multishot-recv-overflow-backloggi.patch
- Add
* test-recv-multishot-wait-for-the-right-amount-of-CQE.patch (to fix test
errors on the 6.8.2 kernel)
* test-no-mmap-inval-0-return-is-fine-too.patch (fix the test)
-------------------------------------------------------------------
Mon Dec 4 16:39:29 UTC 2023 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Fix build on 32-bit x86
-------------------------------------------------------------------
Thu Nov 30 15:26:15 UTC 2023 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Make use of openSUSE build flags
-------------------------------------------------------------------
Fri Sep 15 05:28:44 UTC 2023 - Jiri Slaby <jslaby@suse.cz>
- tests-don-t-expect-multishot-recv-overflow-backloggi.patch (bsc#1215332)
-------------------------------------------------------------------
Thu Sep 14 08:37:29 UTC 2023 - Jiri Slaby <jslaby@suse.cz>
- build tests in parallel (using %{?_smp_mflags})
-------------------------------------------------------------------
Thu Aug 31 06:57:37 UTC 2023 - Jiri Slaby <jslaby@suse.cz>
- add test-io_uring_register-fix-errno-confusion-and-new-e.patch
to fix test errors on the 6.5 kernel
-------------------------------------------------------------------
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>
- Add 0001-test-file-verify.t-Don-t-run-over-mlock-limit-when-r.patch
fixes test with kernel <= 5.16 (bsc#1209723)
-------------------------------------------------------------------
Tue Feb 21 13:10:33 UTC 2023 - Jiri Slaby <jslaby@suse.cz>
- add 0001-Do-not-always-expect-multishot-recv-to-stop-posting-.patch
fixes tests with kernel 6.2
-------------------------------------------------------------------
Sat Jan 21 09:19:57 UTC 2023 - Dirk Müller <dmueller@suse.com>
- add 0001-test-helpers-fix-socket-length-type.patch
fixes tests on big endian
-------------------------------------------------------------------
Fri Nov 18 21:26:17 UTC 2022 - Dirk Müller <dmueller@suse.com>
- update to 2.3:
* Support non-libc build for aarch64.
* Add io_uring_{enter,enter2,register,setup} syscall functions.
* Add sync cancel interface, io_uring_register_sync_cancel().
* Fix return value of io_uring_submit_and_wait_timeout() to match the
man page.
* Improvements to the regression tests
* Add support and test case for passthrough IO
* Add recv and recvmsg multishot helpers and support
* Add documentation and support for IORING_SETUP_DEFER_TASKRUN
* Fix potential missing kernel entry with IORING_SETUP_IOPOLL
* Add support and documentation for zero-copy network transmit
* Various optimizations
* Many cleanups
* Many man page additions and updates
- drop handle-eintr.patch, test-xattr-don-t-rely-on-NUL-termination.patch: upstream
-------------------------------------------------------------------
Sun Sep 25 14:34:41 UTC 2022 - Dirk Müller <dmueller@suse.com>
- skip checks on qemu_linux_user builds
-------------------------------------------------------------------
Tue Aug 16 10:53:40 UTC 2022 - Jiri Slaby <jslaby@suse.cz>
- add test-xattr-don-t-rely-on-NUL-termination.patch (bsc#1202413)
-------------------------------------------------------------------
Fri Jul 8 12:40:13 UTC 2022 - Dirk Müller <dmueller@suse.com>
- add handle-eintr.patch, enable tests everywhere
-------------------------------------------------------------------
Wed Jun 29 11:28:10 UTC 2022 - Dirk Müller <dmueller@suse.com>
- enable tests for != ppc64le
-------------------------------------------------------------------
Tue Jun 28 13:40:10 UTC 2022 - Dirk Müller <dmueller@suse.com>
- update to 2.2:
* Support non-libc builds.
* Optimized syscall handling for x86-64/x86/aarch64.
* Enable non-lib function calls for fast path functions.
* Add support for multishot accept.
* io_uring_register_files() will set RLIMIT_NOFILE if necessary.
* Add support for registered ring fds, io_uring_register_ring_fd(),
reducingthe overhead of an io_uring_enter() system call.
* Add support for the message ring opcode.
* Add support for newer request cancelation features.
* Add support for IORING_SETUP_COOP_TASKRUN, which can help reduce the
overhead of io_uring in general. Most applications should set this flag,
see the io_uring_setup.2 man page for details.
* Add support for registering a sparse buffer and file set.
* Add support for a new buffer provide scheme, see
io_uring_register_buf_ring.3 for details.
* Add io_uring_submit_and_wait_timeout() for submitting IO and waiting
for completions with a timeout.
* Add io_uring_prep_{read,write}v2 prep helpers.
* Add io_uring_prep_close_direct() helper.
* Add support for SQE128 and CQE32, which are doubly sized SQE and CQE
rings. This is needed for some cases of the new IORING_OP_URING_CMD,
notably for NVMe passthrough.
* ~5500 lines of man page additions, including adding ~90 new man pages.
* Synced with the 5.19 kernel release, supporting all the features of
5.19 and earlier.
* 24 new regression test cases, and ~7000 lines of new tests in general.
* General optimizations and fixes.
-------------------------------------------------------------------
Fri Apr 29 06:53:08 UTC 2022 - Dirk Müller <dmueller@suse.com>
- avoid requiring kernel-default (bsc#1193522)
-------------------------------------------------------------------
Thu Feb 10 13:32:35 UTC 2022 - David Disseldorp <ddiss@suse.com>
- add explicit liburing2-devel alias to reflect SLE/LEAP 15.4+ naming
(bsc#1193522)
-------------------------------------------------------------------
Wed Oct 13 10:31:43 UTC 2021 - David Disseldorp <ddiss@suse.com>
- update to 2.1 (bsc#1193522):
* Ignore spurious fadvise/madvise failures
* build: add -D_GNU_SOURCE to all CPPFLAGS/CFLAGS.
* man: clean up spelling
* man/io_uring_enter.2: add notes about direct open/accept
* io_uring.h: sync with 5.15 kernel
* Fix IORING_REGISTER_IOWQ_MAX_WORKERS name
* man: document new register/update API
* liburing: add helpers for direct open/accept
* liburing.h: correct max_worker name
* Change IORING_REGISTER_IOWQ_MAX_UNBOUND_WORKERS
* src/syscall.h: get rid of useless externs
* man/io_uring_enter.2: document IORING_ENTER_EXT_ARG
* Add io_uring_register_iowq_max_unbound() helper
* Get rid of useless 'extern' on function declarations in liburing.h
* Add (UN)REGISTER_IOWQ_AFF helpers
* man/io_uring_register.2: note when MAX_UNBOUND became available
* man/io_uring_register.2: add missing punctuation
* man/io_uring_register.2: document IORING_REGISTER_IOWQ_MAX_UNBOUND
* man/io_uring_enter.2: add IORING_OP_TIMEOUT clock sources
* man/io_uring_enter.2: improve timeout entry
* man/io_uring_enter.2: update SQE
* man/io_uring_enter.2: note that not all requests support fixed files
* man/io_uring_enter.2: add new 5.15 opcodes
* man/io_uring_enter.2: note that cqe->flags is indeed used
* man/io_uring_enter.2: add poll update and multishot mode
* man/io_uring_register.2: add IORING_(UN)REGISTER_IOWQ
* man: update notes on register quiesce
* man: fix io_uring_sqe alignment
* register: add tagging and buf update helpers
* liburing.h: make header clean for implicit sign and size conversions
* configure: document --cc and --cxx options
* io_uring: update buffer update feature testing
* liburing.h: dedup poll mask conversion
* liburing.h: add a multipoll helper
* Update io_uring.h
* examples: disable ucontext-cp for elbrus (e2k) architecture
* Update io_uring_setup.2
* man/io_uring_setup.2: document the two most recent FEAT flags
* man/io_uring_setup.2: make sure FEAT flags are kernel versioned
* correct syscall NR in mips
* Fix 32-bit compile warnings
* liburing.h: make all file/IO offset __u64
* src/queue: don't flush SQ ring for new wait interface
* man/io_uring_enter.2: further clarify what cqe->res holds
* Clarify information about error results
* Refer to the accept_flags in io_uring_enter manual
* Fix a bug due to the unreleased lock before function returns
* debian/rules: add missing slash for relativelibdir
* man/io_uring_enter.2: clarify io_uring_enter(2) SQPOLL return value
* liburing.h: add linkat prep helper
* io_uring.h: add linkat opcode
* liburing.h: add symlinkat prep helper
* io_uring.h: add symlinkat opcode
* liburing.h: add mkdirat prep helper
* update rsrc register/update ABI and tests
* queue: clean up SQ flushing
* io_uring_enter(2): Clarify how to read from and write to non-seekable files
* clarify an edge case of IORING_SETUP_SQ_AFF
* io_uring_enter(2): clarify OP_READ and OP_WRITE
* sync io_uring.h API file with Linux 5.13
* man: Fix typo in man io_uring_queue_exit
* examples/link-cp: fix a couple of strerror negations
* src/setup: don't treat dummy ring init as failure
* src/setup: add some documentation to the memlock helpers
* examples/ucontext-cp.c: cope with variable SIGSTKSZ
* setup: provide helpers to inquire about necessary mlock sizes
* examples/io_uring-cp: wait for pending writes before exit copy loop
* spec: add explicit build dependency on make
* spec: bump version to 2.0
* man/io_uring_enter.2: note that -EBUSY can also happen for getevents
-------------------------------------------------------------------
Sat Mar 13 21:33:04 UTC 2021 - Dirk Müller <dmueller@suse.com>
- skip building the tests that are neither installed nor run
as they fail to build on 32bit platforms (like e.g. armv7l) (bsc#1181571)
-------------------------------------------------------------------
Sat Mar 13 20:18:54 UTC 2021 - Dirk Müller <dmueller@suse.com>
- update to 2.0:
* Sync io_uring.h API file with Linux 5.12
* helpers: prefix any helper with t_ instead of io_uring_
* helpers: add io_uring_create_buffers() helper
* helpers: add io_uring_create_file() helper
* helpers: add io_uring_calloc helper
* helpers: add io_uring_posix_memalign helper
* setup: cleanup probe code
* setup: check whether malloc succ before using it
* io_uring_prep_sync_file_range: cleanups
* .gitignore: add sendmsg_fs_cve
* Added prep function for sync_file_range op
* Install man7 pages
* src/queue: never clear data->wait_nr
* src/queue: control kernel enter with a var
* src/queue: don't re-wait for CQEs
* src/queue: don't loop when don't enter
* src/queue: clean _io_uring_get_cqe() err handling
* src/queue: don't wait for less than expected
* Add inline doc in the comments for io_uring_prep_splice
* Fix sigset_t not found in liburing.h
* src/queue: update comment on io_uring_wait_cqes() with timeouts
* io_uring.h: 5.12 pending kernel sync
* man/io_uring_register.2: fix spelling error
* man/io_uring_register.2: Add documentation on IORING_REGISTER_FILES_SKIP
* Add two ring deadlock case
* Fix IORING_OP_FALLOCATE args in io_uring_enter(2) man page
* src/queue: Fix a typo in `__io_uring_flush_sq()`
* src/queue: fix `sq_ring_needs_enter()` indentation
* src/queue: refactor io_uring_get_sqe()
* man/io_uring_setup.2: correct 5.10 -> 5.11 for non-fixed files and SQPOLL
* man/io_uring_enter.2: document new opcodes
* man/io_uring_enter.2: ensure all IORING_ENTER_* flags are documented
* src/queue: add comment on why reading SQ->head for flush isn't atomic
* liburing.h: fix 32-bit compile warning
* man/io_uring.7: Fix typo
* man/io_uring_enter.2: describe timeout updates
* Don't enter the kernel to wait on cqes if they are already available.
* Add timeout update
* remove zero-size array in io_uring.h
* Rename SIG_IS_DATA -> EXT_ARG
* Update SIG_IS_DATA to modified kernel API
* Use IORING_ENTER_GETEVENTS_TIMEOUT if available
* Add wrapper for __io_uring_get_cqe()
* Add __sys_io_uring_enter2()
* Include 'features' in struct io_uring
* io_uring.h: update with 5.11-pending copy
* Fix compilation with iso C standard (c89, c99 and c11)
* examples: disable ucontext-cp if ucontext.h is not available
* Moves function calls out of assert().
* liburing.h: add renameat/unlinkat prep helpers
* io_uring.h: add renameat and unlinkat opcodes
* configure: Fix unsafe temporary file creation
* Add const modifier to functions that do not change the state of the ring
* man/io_uring_enter.2: clarify POLL_ADD return value
* Add get_sqe manpage to debian package
* Add man page for io_uring_get_sqe
* man/io_uring_enter.2: add EACCES and EBADFD errors
* man/io_uring_register.2: add description of restrictions
* man/io_uring_setup.2: add IORING_SETUP_R_DISABLED description
* Makefile: add .PHONY dependency
* man/io_uring_enter.2: split ERRORS section in two sections
* liburing.h: add `io_uring_prep_tee`
* Fix build flag settings
* .gitignore: Add sq-poll-dup
* man/io_uring_enter.2: clarify PROVIDE_BUFFERS requirements
* Update packaging/installation for new man pages
* man/io_uring.7: clarify submission/completion ordering
* man/io_uring.7: style and barrier updates
* Add man page for io_uring_queue_exit
* Add man page for io_uring_queue_init
* Adding section 7 man page for io_uring
* probes: provide our own free function
* .gitignore: add pipe-reuse
* Fold versioned symbols into LIBURING_2.0 version node
* Remove versioned symbols not provided by the shared library anymore
* man/io_uring_setup.2: improve SQPOLL wakeup example
* Fix io_uring_sq_ready() to use load acquire to read khead.
* io_uring.h: fix missing tab
* Bump major version to 2
* Add IORING_OP_SHUTDOWN and prep helper
* Add a few function comments in liburing.h
* Add io_uring_sqring_wait()
* io_uring.h: add new definitions from 5.10
* man/io_uring_setup.2: document missing IORING_FEAT_* feature flags
* man/io_uring_enter.2: add description of buffer selections
* build: Output CXX on quiet output when using a C++ compiler
* Fix missing 'c' in sigfd-deadlock addition
* Add helper to enable rings
* Add helper to register restrictions
* io_uring.h: add register restrictions and enable ring defines
* io_uring.h: use an enumeration for io_uring_register(2) opcodes
* io_uring_prep_splice(): fix type (again)
* Use the right type for io_uring_prep_splice()
* syscall: make syscall.h independently includeable
* sq_ring_needs_enter: revert change to only enter if submit != 0
* man/io_uring_setup.2: document IORING_SETUP_ATTACH_WQ
* update debian/changelog
* update debian/liburing1.symbols
* debian/rules: pass down relativelibdir in order to get an absolute path
* man/io_uring_setup.2: document IORING_SETUP_CLAMP
* man/io_uring_enter: fix openat sqe doc
-------------------------------------------------------------------
Sat Mar 13 20:15:42 UTC 2021 - Dirk Müller <dmueller@suse.com>
- update to 0.7:
* io_uring.h: sync with kernel
* io_uring_peek_batch_cqe should also check cq ring overflow
* Check cq ring overflow status
* configure: fix typos in help/error messages
* src/setup: clarify that we always return -errno on error
* man/io_uring_enter.2: updated io_uring_sqe and fixed incorrect flag references.
* Removed misplaced periods from io_uring_enter(2).
* Merge branch 'readme' of https://github.com/jobs-git/liburing
* Make readme sensible
* man/io_uring_enter: update connect to note use of const
* Merge branch 'master' of https://github.com/KayEss/liburing
* Take `sockaddr` immutably in io_uring_prep_connect
* Merge branch 'dev' of https://github.com/CarterLi/liburing
* Merge branch 'fix-splice-docs' of https://github.com/gerow/liburing
* man: fix description of splice offsets
* .travis.yml: Change the language from C to C++
* configure: Use $CC and $CXX as default compilers if set
* Make the liburing header files again compatible with C++
* src/include/liburing/barrier.h: Restore clang compatibility
* src/Makefile: Only specify -shared at link time
* Merge branch 'openat_o_path' of https://github.com/MaxKellermann/liburing
* Convert __io_uring_get_sqe() from a macro into an inline function
* src/include/liburing/barrier.h: Use C11 atomics
* Makefiles: Enable -Wextra
* Bump version to 1.0.7
* change poll_events to 32 bits to cover EPOLLEXCLUSIVE
* examples/ucontext-cp.c: use IORING_OP_TIMEOUT
* man/io_uring_enter: correct the description of
* man/io_uring_register.2: add IORING_CQ_EVENTFD_DISABLED description
* Add helpers to set and get eventfd notification status
* man/io_uring_setup.2: add 'flags' field in the struct io_cqring_offsets
* Add CQ ring 'flags' field
* remove duplicate call to __io_uring_peek_cqe()
* update wait_nr to account for completed event
* preseve wait_nr if SETUP_IOPOLL is set
* man/io_uring_enter.2: add IORING_OP_TEE entry
* update io_uring.h with tee()
* Merge branch 'master' of https://github.com/shuveb/liburing
* Adding section to describe IORING_OP_EPOLL_CTL
* fix missing '#include <sys/stat.h>' in 'src/include/liburing.h
* fix build on musl libc
* Use uint64_t for splice offsets
* Use __off64_t for offsets
* Merge branch 'master' of https://github.com/shuveb/liburing
* Adding description for the IORING_OP_SPLICE operation
* Merge branch 'master' of https://github.com/shuveb/liburing
* Adding section describing IORING_OP_OPENAT2
* Fix 32-bit warnings on compile
* __io_uring_get_cqe: silence signed vs unsigned comparison warning
* io_uring_get_sqe: always use khead
-------------------------------------------------------------------
Fri Oct 30 21:42:16 UTC 2020 - Milan Savić <milsav92@outlook.com>
!!IMPORTANT!!
Version 0.7 BREAKS ABI COMPATIBILITY WITHOUT CHANGING THE SONAME!!!
https://github.com/axboe/liburing/issues/228
SONAME is bumped to 2 in commit 25bbcbef3e0a8bfba8044be55d08d5116c51dccd
im master branch.
!!!IMPORTANT!!!
- Update to version 0.6
- removed barrier.h-add-generic-smp_mb-implementation.patch since
it was merged in commit ba97eaf8f9ef2030d581be10df9d875dbfadc91d
- License changed to match upstream
-------------------------------------------------------------------
Thu Dec 12 09:20:32 UTC 2019 - Johannes Thumshirn <jthumshirn@suse.com>
- Fix builds on ppc64le and s390x (bsc#1159055)
+ barrier.h-add-generic-smp_mb-implementation.patch
-------------------------------------------------------------------
Wed Nov 27 08:18:20 UTC 2019 - Johannes Thumshirn <jthumshirn@suse.com>
- Initial packaging for openSUSE (jsc#SLE-7494)

125
liburing.spec Normal file
View File

@ -0,0 +1,125 @@
#
# spec file for package liburing
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define lname liburing2
Name: liburing
Version: 2.8
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://github.com/axboe/liburing
Source: https://github.com/axboe/liburing/archive/refs/tags/%{name}-%{version}.tar.gz
Patch0: 0001-test-init-mem-zero-the-ringbuf-memory.patch
Patch1: 0001-test-rsrc_tags-use-correct-buffer-index-for-test.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: procps
# Kernel part has landed in 5.1
Conflicts: kernel < 5.1
%description
Provides native async IO for the Linux kernel, in a fast and efficient
manner, for both buffered and O_DIRECT.
%package -n %{lname}
Summary: Linux-native io_uring I/O access library
Group: Development/Libraries/C and C++
%description -n %{lname}
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++
# SLE/Leap 15.4+ retain liburing-devel for the inherited 0.6 API. The v2 API is:
Provides: %{lname}-devel = %{version}
Requires: %{lname} = %{version}
Requires: pkgconfig
%description devel
This package provides header files to include and libraries to link with
for the Linux-native io_uring.
%prep
%autosetup -p1 -n liburing-liburing-%{version}
%build
# not autotools, so configure macro doesn't work
%set_build_flags
%ifarch %{ix86}
# Otherwise 32-bit x86 fails with: undefined reference to `__stack_chk_fail_local'
export CFLAGS="%{optflags} -fno-stack-protector"
export CPPFLAGS="%{optflags} -fno-stack-protector"
%endif
./configure --prefix=%{_prefix} \
--includedir=%{_includedir} \
--libdir=%{_libdir} \
--libdevdir=%{_libdir} \
--mandir=%{_mandir} \
--datadir=%{_datadir}
%make_build -C src
%check
# io_uring syscalls not supported as of qemu 7.0.0 and would test the host
# kernel anyway not the target kernel..
%if !0%{?qemu_user_space_build}
%make_build runtests
%endif
%install
%make_install
rm -v %{buildroot}%{_libdir}/%{name}*.a
%fdupes %{buildroot}/%{_mandir}/
%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/*
%{_mandir}/man7/*
%changelog

View File

@ -0,0 +1,28 @@
From f11c1ab393185aecedc3f1445b0dff5b187f58c1 Mon Sep 17 00:00:00 2001
From: Jens Axboe <axboe@kernel.dk>
Date: Thu, 8 Aug 2024 07:34:46 -0600
Subject: [PATCH] test/buf-ring-nommap: skip the test on queue init ENOMEM
failure
Fixes: https://github.com/axboe/liburing/issues/1200
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
test/buf-ring-nommap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/buf-ring-nommap.c b/test/buf-ring-nommap.c
index 17c1495..32a372c 100644
--- a/test/buf-ring-nommap.c
+++ b/test/buf-ring-nommap.c
@@ -46,7 +46,7 @@ int main(int argc, char *argv[])
p.flags = IORING_SETUP_NO_MMAP;
ret = io_uring_queue_init_mem(1, &ring, &p, ring_mem, 16384);
if (ret < 0) {
- if (ret == -EINVAL)
+ if (ret == -EINVAL || ret == -ENOMEM)
return T_EXIT_SKIP;
fprintf(stderr, "queue init failed %d\n", ret);
return T_EXIT_FAIL;
--
2.45.2

View File

@ -0,0 +1,49 @@
From 8100d7b5f862fa514d821e8bd8f99d0de79af571 Mon Sep 17 00:00:00 2001
From: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Date: Fri, 12 Jul 2024 13:17:03 +0200
Subject: [PATCH] test/buf-ring-nommap: zero the ringbuf memory
The test crashes when run under the openSUSE build system. It sets
MALLOC_PERTURB_=69 in the environment, so the allocated memory is
initialized to 0xba.
Later in io_uring_get_sqe() -> _io_uring_get_sqe():
1424 if (next - head <= sq->ring_entries) {
(gdb) p *sq
$2 = {khead = 0x55555555d000, ktail = 0x55555555d004,
kring_mask = 0x55555555d010, kring_entries = 0x55555555d018,
kflags = 0x55555555d024, kdropped = 0x55555555d020, array = 0x0,
sqes = 0x55555555c000, sqe_head = 0, sqe_tail = 0, ring_sz = 0,
ring_ptr = 0x55555555d000, ring_mask = 0, ring_entries = 1, pad = {0, 0}}
(gdb) p sq->ring_entries
$3 = 1
(gdb) p next
$4 = 1
(gdb) p/x head
$6 = 0xbabababa
And that causes a crash, of course.
Fix that by zeroing the memory after posix_memalign().
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
---
test/buf-ring-nommap.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/buf-ring-nommap.c b/test/buf-ring-nommap.c
index 1e47f28..17c1495 100644
--- a/test/buf-ring-nommap.c
+++ b/test/buf-ring-nommap.c
@@ -41,6 +41,8 @@ int main(int argc, char *argv[])
if (posix_memalign(&ring_mem, 16384, 16384))
return T_EXIT_FAIL;
+ memset(ring_mem, 0, 16384);
+
p.flags = IORING_SETUP_NO_MMAP;
ret = io_uring_queue_init_mem(1, &ring, &p, ring_mem, 16384);
if (ret < 0) {
--
2.35.3

View File

@ -0,0 +1,30 @@
From: Jens Axboe <axboe@kernel.dk>
Date: Tue, 7 Nov 2023 08:05:52 -0700
Subject: test/no-mmap-inval: 0 return is fine too
Git-repo: git://git.kernel.dk/liburing.git
Git-commit: 9dc95a03e4a764e42b9e62990bb00feb9307ba63
Patch-mainline: 2.6
References: test_fix
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
test/no-mmap-inval.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/no-mmap-inval.c b/test/no-mmap-inval.c
index e851078d..9571fee0 100644
--- a/test/no-mmap-inval.c
+++ b/test/no-mmap-inval.c
@@ -31,7 +31,7 @@ int main(int argc, char *argv[])
if (ret == -EINVAL) {
/* kernel doesn't support SETUP_NO_MMAP */
return T_EXIT_SKIP;
- } else if (ret != -EFAULT) {
+ } else if (ret && ret != -EFAULT) {
fprintf(stderr, "Got %d, wanted -EFAULT\n", ret);
return T_EXIT_FAIL;
}
--
2.44.0

View File

@ -0,0 +1,50 @@
From: Jens Axboe <axboe@kernel.dk>
Date: Tue, 6 Feb 2024 13:17:14 -0700
Subject: test/recv-multishot: wait for the right amount of CQEs
Git-repo: git://git.kernel.dk/liburing.git
Git-commit: a1d5e4b863a60af93d0cab9d4bbf578733337a90
Patch-mainline: 2.6
References: kernel 6.9
This test assumes that all task_work is a) has already arrived, and
b) will always be fully run even though the app asked for less, which
can lead to premature checking of CQEs and hitting end-of-CQEs before
it should.
Fix it up to wait for what it needs.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
test/recv-multishot.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/test/recv-multishot.c b/test/recv-multishot.c
index f66f1319..39983e8d 100644
--- a/test/recv-multishot.c
+++ b/test/recv-multishot.c
@@ -57,7 +57,7 @@ static int test(struct args *args)
int const N = 8;
int const N_BUFFS = N * 64;
int const N_CQE_OVERFLOW = 4;
- int const min_cqes = 2;
+ int const min_cqes = args->early_error ? 2 : 8;
int const NAME_LEN = sizeof(struct sockaddr_storage);
int const CONTROL_LEN = CMSG_ALIGN(sizeof(struct sockaddr_storage))
+ sizeof(struct cmsghdr);
@@ -237,7 +237,11 @@ static int test(struct args *args)
usleep(1000);
if ((args->stream && !early_error) || recv_cqes < min_cqes) {
- ret = io_uring_wait_cqes(&ring, &cqe, 1, &timeout, NULL);
+ unsigned int to_wait = 1;
+
+ if (recv_cqes < min_cqes)
+ to_wait = min_cqes - recv_cqes;
+ ret = io_uring_wait_cqes(&ring, &cqe, to_wait, &timeout, NULL);
if (ret && ret != -ETIME) {
fprintf(stderr, "wait final failed: %d\n", ret);
ret = -1;
--
2.44.0