Releases: axboe/liburing
liburing 2.15-rc1
liburing 2.15-rc1
This is the first release candidate for the 2.15 release. It covers 180 commits
since 2.14.
Highlights
- Classic BPF (cBPF) filter support. New
io_uring_register_bpf_filter()
support lets applications attach cBPF programs to restrict which opcodes a
ring may issue, including ring-level filters,pdu_sizevalidation, and
filtering ofIORING_OP_OPENAT/IORING_OP_OPENAT2. Includes a new
io_uring_register_bpf_filter.3man page and extensive tests. - New register helpers:
io_uring_register_query()and
io_uring_register_zcrx_ctrl(), each with accompanying man pages
(io_uring_register_query.3,io_uring_register_zcrx_ctrl.3) and updated
uapi headers carrying theZCRX_CTRLopcode. - Out-of-source build support.
configurenow supports building outside
the source tree, documented in the README and covered by a new CI job.
Library changes and fixes
io_uring_peek_cqe(): avoid an out-of-line round trip on an empty CQ, and
drop the unnecessary acquire ordering on the CQ head load in
__io_uring_peek_cqe().io_uring_peek_batch_cqe(): correctly handle mixed (16/32-byte) CQE rings.- Don't return a stale CQE pointer when a timeout error occurs.
io_uring_wait_cqes_min_timeout()now returns-EINVALwhen unsupported.- Fix a NULL deref in
_io_uring_get_cqe()on theEXT_ARG_REGpath. io_uring_resize_rings(): fix an mmap leak, and preserve / clean up old ring
state on a failed mmap remap.- setup: account the SQ array in
rings_size()and inio_uring_alloc_huge(),
explicitly request 2MB huge pages, and restore ring fd/flags init in
io_uring_queue_mmap(). - arch: use
prlimit64for the rlimit syscall wrappers, and usesysconf()
for page size on aarch64/riscv64 libc builds. - sanitize: check secondary user pointers as well, and initialize the handler
table at compile time. - Reject a negative op in
io_uring_opcode_supported(). - Fix integer overflow in
recvmsg_validate()/ payload length wraparound. - nolibc: fix integer overflow in
__uring_malloc. - Ensure
__io_uring_peek_cqe()is exported for FFI, make the iter helpers
IOURINGINLINE, and add the missing iter helpers to the FFI map. io_uring_cqe_nr: assign the shift value to an unsigned int upfront.
Man pages
- Add
io_uring_register_bpf_filter.3,io_uring_register_query.3, and
io_uring_register_zcrx_ctrl.3. - Document the
IORING_TIMEOUT_IMMEDIATE_ARGflag and that immediate absolute
timeouts are allowed; fix timeout update flags to match the kernel. - Explain transfer size limits across all read/write/send/recv functions and
misc helpers; clarify unsigned input vs.__s32output in
io_uring_prep_read.3. - Explain the
-ENOMEMreturn fromio_uring_queue_init(). - Update
io_uring_buf_regdocumentation, document missing opcodes in
io_uring_prep_cmd_sock.3, mention thelengthcap in
io_uring_prep_recv.3, and fix IOPOLL-related notes.
Build, CI and configure
- Upgrade CI clang to version 22 and fix the resulting over-eager warnings.
- Fix missing
bpf_filter.hinstallation and add it as an installed header. - Various
configurefixes: Alpinemktemphandling, BPF/clang detection,
ensurebpftoolis found when not in PATH, and silence assorted unused
variable/parameter warnings.
Tests and examples
- New tests for cBPF filters (including
IORING_OP_CONNECT), mixed-CQE peek
batching, ring resize with pending large CQEs/SQEs and failed mmap remap,
buffer-ring upgrade/drain-refill, multishot accept/recv stress, per-task
restrictions, cancel-vs-completion races, fixed file table regressions,
immediate/absolute timeouts, and timens regressions. - Many fixes to make tests skip cleanly on older kernels and run correctly as
root, plus zcrx test improvements. - examples: add a minimal multishot echo server; assorted fixes to
io_uring-udp,link-cp,proxy,ucontext-cp,send-zerocopy, and
zcrx.
Contributors
Thanks to everyone who contributed to this release:
Ahmed Abdelmoemen, Ammar Faizi, Andrew Sayers, Caleb Sander Mateos,
Christian A. Ehrhardt, Guillem Jover, Haiyue Wang, Jens Axboe, KaFai Wan,
Maoyi Xie, Pavel Begunkov, Prateek, Sebastian Chlad, Shouvik Kar, Tom Ryan,
Travis Downs, XananasX, Yang Xiuwei, Yitang Yang, YooLCD, Zile Xiong,
mag1c1an1, rootvector2, uwezkhan06.
liburing 2.14
What's Changed
- Lots of test updates
- Lots of man page updates, including a selection of section 7 man pages describing various io_uring specific concepts. The entire liburing API is now documented.
- Various bug fixes
- test/epwait: change the epwait.t:test/epwait to count SQEs/CQEs and check for sqe->user_data/cqe->user_data by @schlad in #1507
- [GIT PULL] src/setup: fix incorrect ring_mem calculation in io_uring_alloc_huge by @wokron in #1510
- test: min-timeout: fail on unexpected CQE count by @schlad in #1513
- [GIT PULL] Unify date formats in manual files by @betelgeuse in #1519
- [GIT PULL] Fix io_uring_prep_cmd_sock man page file name by @betelgeuse in #1520
- remove const from io_uring_prep_files_update by @cmazakas in #1521
- man/io_uring_prep_send.3: fix broken links by @espoal in #1522
- Net zerocopy benchmarks update by @isilence in #1525
- man: document IORING_SETUP_TASKRUN_FLAG + IORING_SETUP_DEFER_TASKRUN by @calebsander in #1517
- [GIT PULL] man: remove man pages for io_uring_*_reg_wait() by @wokron in #1523
- test/io-wq: verify unused workers exit by @FirstLoveLife in #1529
New Contributors
- @wokron made their first contribution in #1510
- @betelgeuse made their first contribution in #1519
- @espoal made their first contribution in #1522
- @isilence made their first contribution in #1525
- @FirstLoveLife made their first contribution in #1529
Full Changelog: liburing-2.13...liburing-2.14
liburing 2.13
What's Changed
- test/recvsend_bundle: enlarge recv buf-ring to 2 MiB to avoid ENOBUFS… by @schlad in #1453
- fixing missing dependencies in Makefile by @Meiye-lj in #1455
- [GIT PULL] test/futex: Fix alternation of async cancel requests by @zeehha in #1460
- [GIT PULL] liburing.h: Add const-qualifier for some preps by @silvanshade in #1468
- [GIT PULL] add missing noexcept, local inline, const quals by @cmazakas in #1469
- [GIT PULL] Added query.h to install by @rpereira-dev in #1471
- test: poll-race-mshot: Fix incorrect posix_memalign by @schlad in #1479
- [GIT PULL] test: Minor improvements to testing by @zeehha in #1486
- [GIT PULL] add tsan-enabled builds by @cmazakas in #1484
- [GIT PULL] man: Fix version reference for io_uring_prep_{read,write}v2 by @sprt in #1489
- [GIT PULL] Lsan fixes by @cmazakas in #1490
- [GIT PULL] Extend documentation of SQE pointer lifetimes by @ChillFish8 in #1491
- [GIT PULL] setup: fix 1-byte munmap in NO_MMAP error paths by @MegaManSec in #1493
- [GIT PULL] hppa: unregister buf ring if mmap fails in br_setup() by @MegaManSec in #1494
- [GIT PULL] setup: fully unmap single NO_MMAP region when SQE and rings share one mapping by @MegaManSec in #1495
- Fix compiling of example in io_uring.7 due to missing "errno" variable. by @huberteff in #1502
- [GIT PULL] build: Pass env CFLAGS through to make by @phlax in #1505
New Contributors
- @Meiye-lj made their first contribution in #1455
- @zeehha made their first contribution in #1460
- @silvanshade made their first contribution in #1468
- @rpereira-dev made their first contribution in #1471
- @sprt made their first contribution in #1489
- @ChillFish8 made their first contribution in #1491
- @MegaManSec made their first contribution in #1493
- @huberteff made their first contribution in #1502
- @phlax made their first contribution in #1505
Full Changelog: liburing-2.12...liburing-2.13
liburing-2.13-rc2
What's Changed
- test/recvsend_bundle: enlarge recv buf-ring to 2 MiB to avoid ENOBUFS… by @schlad in #1453
- fixing missing dependencies in Makefile by @Meiye-lj in #1455
- [GIT PULL] test/futex: Fix alternation of async cancel requests by @zeehha in #1460
- [GIT PULL] liburing.h: Add const-qualifier for some preps by @silvanshade in #1468
- [GIT PULL] add missing noexcept, local inline, const quals by @cmazakas in #1469
- [GIT PULL] Added query.h to install by @rpereira-dev in #1471
- test: poll-race-mshot: Fix incorrect posix_memalign by @schlad in #1479
- [GIT PULL] test: Minor improvements to testing by @zeehha in #1486
- [GIT PULL] add tsan-enabled builds by @cmazakas in #1484
- [GIT PULL] man: Fix version reference for io_uring_prep_{read,write}v2 by @sprt in #1489
- [GIT PULL] Lsan fixes by @cmazakas in #1490
- [GIT PULL] Extend documentation of SQE pointer lifetimes by @ChillFish8 in #1491
- [GIT PULL] setup: fix 1-byte munmap in NO_MMAP error paths by @MegaManSec in #1493
- [GIT PULL] hppa: unregister buf ring if mmap fails in br_setup() by @MegaManSec in #1494
- [GIT PULL] setup: fully unmap single NO_MMAP region when SQE and rings share one mapping by @MegaManSec in #1495
- Fix compiling of example in io_uring.7 due to missing "errno" variable. by @huberteff in #1502
New Contributors
- @Meiye-lj made their first contribution in #1455
- @zeehha made their first contribution in #1460
- @silvanshade made their first contribution in #1468
- @rpereira-dev made their first contribution in #1471
- @sprt made their first contribution in #1489
- @ChillFish8 made their first contribution in #1491
- @MegaManSec made their first contribution in #1493
- @huberteff made their first contribution in #1502
Full Changelog: liburing-2.12...liburing-2.13-rc2
liburing 2.13-rc1
What's Changed
- test/recvsend_bundle: enlarge recv buf-ring to 2 MiB to avoid ENOBUFS… by @schlad in #1453
- fixing missing dependencies in Makefile by @Meiye-lj in #1455
- [GIT PULL] test/futex: Fix alternation of async cancel requests by @zeehha in #1460
- [GIT PULL] liburing.h: Add const-qualifier for some preps by @silvanshade in #1468
- [GIT PULL] add missing noexcept, local inline, const quals by @cmazakas in #1469
- [GIT PULL] Added query.h to install by @rpereira-dev in #1471
- test: poll-race-mshot: Fix incorrect posix_memalign by @schlad in #1479
- [GIT PULL] test: Minor improvements to testing by @zeehha in #1486
- [GIT PULL] add tsan-enabled builds by @cmazakas in #1484
- [GIT PULL] man: Fix version reference for io_uring_prep_{read,write}v2 by @sprt in #1489
- [GIT PULL] Lsan fixes by @cmazakas in #1490
- [GIT PULL] Extend documentation of SQE pointer lifetimes by @ChillFish8 in #1491
- [GIT PULL] setup: fix 1-byte munmap in NO_MMAP error paths by @MegaManSec in #1493
- [GIT PULL] hppa: unregister buf ring if mmap fails in br_setup() by @MegaManSec in #1494
- [GIT PULL] setup: fully unmap single NO_MMAP region when SQE and rings share one mapping by @MegaManSec in #1495
New Contributors
- @Meiye-lj made their first contribution in #1455
- @zeehha made their first contribution in #1460
- @silvanshade made their first contribution in #1468
- @rpereira-dev made their first contribution in #1471
- @sprt made their first contribution in #1489
- @ChillFish8 made their first contribution in #1491
- @MegaManSec made their first contribution in #1493
Full Changelog: liburing-2.12...liburing-2.13-rc1
liburing 2.12
What's Changed
- [GIT PULL] src/sanitize.c: Add compile assertion if IORING_OP_LAST increments by @grooverdan in #1424
- [GIT PULL] general clang undefined behaviour safe code with --sanitizer by @grooverdan in #1425
- [GIT PULL] configure: fix compile error of __kernel_timespec by @kexianda in #1429
- [GIT PULL] smp_load_acquire(ring->cq.khead) in __io_uring_peek_cqe() for consistent dereferencing by @sohambagchi in #1437
- man: Fix grammar errors by @vpx in #1438
- liburing.h: Add noexcept specifiers for C++ by @rohanlean in #1439
- test: Add CPUs count check in wq-aff by @schlad in #1440
- [GIT PULL] man/wait_cqe*: Describe -ETIME return value by @mbr0wn in #1443
- Add support for pipe operations, as supported by newer kernels
- Various man page updates
- Various test case additions and existing test improvements
New Contributors
- @grooverdan made their first contribution in #1424
- @kexianda made their first contribution in #1429
- @sohambagchi made their first contribution in #1437
- @vpx made their first contribution in #1438
- @rohanlean made their first contribution in #1439
- @schlad made their first contribution in #1440
- @mbr0wn made their first contribution in #1443
Full Changelog: liburing-2.11...liburing-2.12
liburing-2.11
What's Changed
- Fix potential compilation error due to io_uring_for_each_cqe macro by @Flowdalic in #1414
- Fixes for musl
- Fixes for io_uring_queue_init_mem()
- Add helpers for ring sizes required
- Fix futex test case compilation on old system headers
- Rename internal aligned_alloc() helper to t_aligned_alloc()
New Contributors
- @Flowdalic made their first contribution in #1414
Full Changelog: liburing-2.10...liburing-2.11
liburing 2.11-rc1
What's Changed
- Fix potential compilation error due to io_uring_for_each_cqe macro by @Flowdalic in #1414
- Add helpers for returning memory requirements for io_uring_queue_init_mem
New Contributors
- @Flowdalic made their first contribution in #1414
Full Changelog: liburing-2.10...liburing-2.11-rc1
liburing-2.10
Full Changelog: liburing-2.9...liburing-2.10
What's Changed
- test: Including missing string.h for memcpy by @kraj in #1351
- [GIT PULL] examples/proxy: Fix for BIDI by @SidongYang in #1350
- [GIT PULL] workflows/build.yml: fix sanitizer typo by @cmazakas in #1344
- [GIT PULL] workflows/build.yml: install default ubuntu-24.04 clang by @cmazakas in #1343
- [GIT PULL] github: Build all newly pushed commits by @ammarfaizi2 in #1352
- [GIT PULL] Test fixes and compatibility with older kernels by @calebsander in #1354
- [GIT PULL] SQ and CQ code cleanup by @calebsander in #1355
- man: fix io_uring_setup() parameter name mismatch by @crimilo in #1369
- [GIT PULL] Add notes about parallel send/receive to the manual. by @fbrosseau in #1373
- man/io_uring.7: Fix a typo in the comment of the example by @Sberm in #1394
- [GIT PULL] register: use io_uring_rsrc_update instead of io_uring_files_update by @calebsander in #1400
- [GIT PULL] syscall: update io_uring_enter2() signature by @calebsander in #1401
- [GIT PULL] src/sanitize: add missing op entries by @cmazakas in #1403
- [GIT PULL] test/sendmsg_iov_clean: fix stack use-after-free by @cmazakas in #1410
New Contributors
- @SidongYang made their first contribution in #1350
- @crimilo made their first contribution in #1369
- @fbrosseau made their first contribution in #1373
- @Sberm made their first contribution in #1394
Full Changelog: liburing-2.9...liburing-2.10
liburing 2.9
- Add support for ring resizing
- Add support for registered waits
- Test additions and improvements
- Fix bug with certain ring setups with SQE128 set not fully closing
the ring after io_uring_queue_exit(3) had been called. - Various man page fixes and updates