Akinobu Mita (1): Fix __io_uring_get_cqe() for IORING_SETUP_IOPOLL Almog Khaikin (1): Fix memory ordering in sq_ring_needs_enter Alviro Iskandar Setiawan (9): arch/generic: Create arch generic syscall wrappers arch/x86, syscall: Refactor arch specific and generic syscall wrappers arch/x86: Create syscall __do_syscall{0..6} macros configure: Fix _GNU_SOURCE redefinition warning configure: Fix clang-12 warning `-Wdeprecated` src/Makefile: Remove `-fomit-frame-pointer` from default build src/Makefile: Add header files as dependency test/Makefile: Add liburing.a as a dependency examples/Makefile: Add liburing.a as a dependency Ammar Faizi (68): .github/workflows: add build_with_gcc.yml .github/workflows: add build_with_clang.yml build_with_clang.yml: fix clang build error -Wunused-command-line-argument test/io_uring_register: fix -Wimplicit-function-declaration of memfd_create .github/workflows: fix apt warning test/io_uring_setup: Don't use `__errno` as local variable name test/send_recv: Use proper cast for (struct sockaddr *) argument .gitignore: add `/test/output/` .gitignore: add `test/file-verify` test/file-verify: fix 32-bit build -Werror=shift-count-overflow .github/workflows/build.yml: add 32-bit build test: Fix endianess issue on `bind()` and `connect()` test/probe: Use `io_uring_free_probe()` instead of `free()` src/syscall: Wrap `errno` for `__sys_io_uring_{register,setup,enter{2,}}` src/{queue,register,setup}: Don't use `__sys_io_uring*` Wrap all syscalls in a kernel style return value src/syscall: Add `close` syscall wrapper Fix typo "timout" -> "timeout" test/{iopoll,read-write}: Use `io_uring_free_probe()` instead of `free()` test/cq-size: Don't use `errno` to check liburing's functions test/thread-exit: Fix use after free bug Add arch dependent directory and files Add nolibc build support configure: Add `CONFIG_NOLIBC` variable and macro .github/workflows/build.yml: Add nolibc build x86-64 for CI src/nolibc: Fix `malloc()` alignment test/timeout: Fix `-Werror=maybe-uninitialized` test/timeout-overflow: Fix `-Werror=maybe-uninitialized` .github: Create pull_request_template.md examples/Makefile: Fix missing clean up test/Makefile: Refactor the Makefile test/socket-rw-eagain: Fix UB, accessing dead object test/socket-rw: Fix UB, accessing dead object test/socket-rw-offset: Fix UB, accessing dead object nolibc: Don't use `malloc()` and `free()` as the function name lib.h: Split off lib header for arch specific and generic Change all syscall function name prefix to __sys .github/workflows: Add multiarch GitHub CI build support man/io_uring_get_probe.3: Trivial man cleanup arch/syscall-defs.h: Add missing SPDX-License-Identifier test: Add missing SPDX-License-Identifier queue, liburing.h: Avoid `io_uring_get_sqe()` code duplication .gitignore: Add `/test/fpos` to .gitignore src/Makefile: Don't use stack protector for all builds by default configure: Allow the configure script to fail with a non-zero exit code src/int_flags.h: Add missing SPDX-License-Identifier test: Rename `[0-9a-f]-test.c` to `[0-9a-f].c` test/Makefile: Append `-lpthread` to `LDFLAGS` for all tests test/Makefile: Append `.t` to the test binary test/rw_merge_test: Fix the wrong assertion condition and unlink testfile test/35fa71a030ca: Fix `-Wunused-but-set-variable` warning from clang-15 test/submit-reuse: Fix `-Wunused-but-set-variable` warning from clang-15 arch/syscall-defs: Use `__NR_mmap2` instead of `__NR_mmap` for x86 32-bit arch/x86/lib: Provide `get_page_size()` function for x86 32-bit arch/x86/syscall: Add x86 32-bit native syscall support arch/x86/syscall: Remove TODO comment test/runtests-quiet.sh: Fixup redirection Makefile: Make sure we build everything before runtests test/Makefile: Remove `.PHONY` variable test/Makefile: Sort the test file list alphabetically .github/workflows: Run the nolibc build for x86 32-bit test/double-poll-crash: Skip this test if the `mmap()` fails .github: Use clang latest version .github: Add powerpc64 build for GitHub bot .github: Add powerpc build for GitHub bot .github: Add alpha build for GitHub bot .github: Add mips64 build for GitHub bot .github: Add mips build for GitHub bot Bikal Lem (3): fix 'make' when using glibc >= 2.28 runtests: use env to find bash src/Makefile: use VERSION variable consistently Dmitry Rozhkov (1): Add SECURITY.md Donald Hunter (1): Fix incorrect close in test for multishot accept Dylan Yudaken (16): Test consistent file position updates Remove fpos tests without linking add tests for nonblocking accept sockets Add test for multiple concurrent accepts test: handle mmap return failures in pollfree test test: use unique path for socket test: use unique ports test: use unique filenames test: mkdir -p output folder test: add make targets for each test test: use remove_buffers instead of nop to generate error codes remove non-existent manpage reference add mask parameter to io_uring_buf_ring_add add io_uring_buf_ring_init buf-ring: add tests that cycle through the provided buffer ring convert buf-ring nop test to use read Eric Wyler (1): Review and update .3 and .7 man pages Florian Fischer (1): changelog: fix wrong man page reference GalaxySnail (1): man/io_uring_setup.2: add missing `wq_fd` field Guillem Jover (11): build: Fix build flags support test/poll-cancel-ton: Remove unused variable test/empty-eownerdead: Clarify unexpected error message test/runtests.sh: Fix shellcheck directive for old versions .github/workflows: Add new shellcheck CI test .github/workflows: Simplify and unify build tests .travis.yml: Remove unused Travis CI support test: Use syscall wrappers instead of using syscall(2) directly test: Remove unused syscall number definitions examples: Fix warnings for comparison of integers with different signedness .github/workflows/build.yml: Pass -g -O2 -Wall -Wextra explicitly Haiyue Wang (1): .gitignore: Add `test/drop-submit` to .gitignore Hao Xu (8): test/accept.c: close the listen fd at the end of the test liburing.h: support multishot accept liburing.h: add api to support multishot accept direct test/accept.c: add test for multishot mode accept test/accept.c: test for multishot direct accept with wrong arg man/io_uring_prep_accept.3: add man info for multishot accept test/accept: fix minus one error when calculating multishot_mask test/accept: clean code of accept test Ioannis Tsakpinis (1): Fix madvise syscall wrapper Jens Axboe (299): liburing.spec: bump to version 2.1 test/file-register: newer kernels limit based on RLIMIT_NOFILE test/runtests.sh: fix retrieving status Merge branch 'github-actions-ci' of https://github.com/ammarfaizi2/liburing Merge branch 'fix-test-shmem' of https://github.com/ammarfaizi2/liburing Merge branch 'pu/test-build-ci' of https://github.com/guillemj/liburing Merge branch 'pu/syscalls' of https://github.com/guillemj/liburing test/timeout: improve finding exec-target Merge branch 'pu/opt-flags' of https://github.com/guillemj/liburing test/file-verify: add read verification test test/socket-rw-eagain: ignore if FASTPOLL is available test/file-verify: add verification for truncated end-of-file read man/io_uring.7: clarify how success and error returns are propagated test/file-verify: add provide buffers test case test/file-verify: add provide buffers support for main test too Merge branch 'ci-add-32-bit-build' of https://github.com/ammarfaizi2/liburing Merge branch 'master' of https://github.com/kraj/liburing io_uring.h: include recent 5.15-git addition of exported worker type src/register: automatically increase RLIMIT_NOFILE, if necessary man/io_uring_enter.2: correct IORING_OP_SHUTDOWN description src/register: improve RLIMIT_NOFILE increase Merge branch 'fix-tests' of https://github.com/godzie44/liburing src/queue: only enter the kernel if both submit and need_enter are true man/io_uring_enter.2: add direct close description Merge branch 'master' of https://github.com/CarterLi/liburing configure: add openat2.h for open_how and RESOLVE_* flags Merge branch 'add-ci-nolibc-x86-64' of https://github.com/ammarfaizi2/liburing Merge branch 'master' of https://github.com/Tindarid/liburing Revert "examples/ucontext-cp.c: Do not use SIGSTKSZ" Merge branch 'pr2' of https://github.com/romange/liburing Merge branch 'fix463' of https://github.com/tchaloupka/liburing Merge branch 'pr-template' of https://github.com/ammarfaizi2/liburing Merge branch 'pr1' of https://github.com/GalaxySnail/liburing test/io-cancel: -ECANCELED is a valid return value Merge branch 'unused-var-man' of https://github.com/yinan1048576/liburing Add more explanations to the github PR template Merge branch 'glibc-statx' of https://github.com/bikallem/liburing Merge branch 'fix-make-tests' of https://github.com/bikallem/liburing Merge branch 'version' of https://github.com/bikallem/liburing man/io_uring_get_sqe.3: use "submission queue entry" Rename man page test/skip-cqe: use correct index for write side of pipe Add test case for hang condition on exit without cleanup liburing.h: don't truncate timeout_update/remove user data value Don't truncate addr fields to 32-bit on 32-bit test/skip-cqe: skip file based run test/exit-no-cleanup: skip file based run test/getdents: style fixups test/getdents: don't fail on kernels not supporting the feature test/getdents: ignore run if argument specified Don't clear sqe->user_data as part of command prep Merge branch 'issue503' of https://github.com/aprilweet/liburing Merge branch 'man-page-offset-clarification' of https://github.com/ioquatix/liburing test: remove dead code Add test case for socket read with offset == -1 test/socket-rw-offset: skip for kernels without cur position rw Remove getdents support Add pollfree test case man/io_uring_enter.2: make it clear that chains terminate at submit man page typos Merge branch 'master' of https://github.com/DavidMusk93/liburing Merge branch 'fix-statx' of https://github.com/JonKohler/liburing man/io_uring_enter.2: correct kernel version for IORING_OP_ACCEPT test/eventfd-reg.c: add basic test case to exercise reg+unreg test/double-poll-crash: only run on x86/x86-64 test/read-write: work on 4kb blocksize devices test/read-write: update EFBIG to work with 256M files Merge branch 'arch' test/pollfree: ignore run if argument is given Merge branch 'master' of ssh://git.kernel.dk/data/git/liburing man/io_uring_prep_write.3: correct passed in buffer argument Add man pages for the prep_{read,write}_fixed helpers man/io_uring_prep_write_fixed.3: fix typo man/io_uring_register_buffers.3: mention why registered buffers are useful man/io_uring_prep_{read,write}v2.3: formatting and style fixes man/io_uring_get_probe.3: make a note of returning NULL if not supported Merge branch 'alpine-linux-compile-fix' of https://github.com/mrakh/liburing liburing.h: fix some overly long lines test/pollfree: use mmap(2) instead of a manual syscall Merge branch 'fix_madvise_syscall' of https://github.com/Spasi/liburing Add direct syscall support for aarch64 Move io_uring_get_sqe() inline in the liburing.h header Add generic syscall definitions test/pollfree: fix compile on 32-bit x86 Merge tag 'multiarch-gh-ci-20220222' of https://github.com/ammarfaizi2/liburing Merge tag 'liburing-2022-02-23_2' of https://github.com/ammarfaizi2/liburing Merge tag 'liburing-2022-02-23' of https://github.com/ammarfaizi2/liburing man: read/write page updates man: ensure that -1 is always bold queue: provide io_uring_get_sqe() symbol again test/fpos: fix for 32-bit compiles src/queue: don't keep looping for IOPOLL peek operation io_uring.h: sync with kernel for registered ring feature Add preliminary support for using a registered ring fd Add ring fd registration helpers test/sq-poll-dup: modify ring fd hack to work with enter_ring_fd Add io_uring_prep_msg_ring() helper test/msg-ring: add test cases for IORING_OP_MSG_RING Merge branch 'fix-needenter' of https://github.com/almogkh/liburing Merge branch 'wakeup-ring' test/iopoll: don't error if IOPOLL isn't supported test/drop-submit: test function of IORING_SETUP_SUBMIT_ALL flag man/io_uring_setup.2: document IORING_SETUP_SUBMIT_ALL Merge branch 'registered-ring' Export ring fd registration symbols man/io_uring_prep_msg_ring.3: add man page man/io_uring_register.2: add IORING_REGISTER_RING_FDS man/io_uring_enter.2: add documentation for IORING_OP_MSG_RING Make the fast path of CQE checking inline Add man pages for io_uring_(un)register_ring_fd() man/io_uring_prep_msg_ring.3: add CQE results liburing: fix issue with fast-pathed peek liburing.h: make it clear that __io_uring_peek_cqe() is an internal helper Add io_uring_peek_cqe man page man/io_uring_cq_advance.3: man page improvements man: use more inclusive language man/io_uring_cq_advance.3: remember line breaks after functions man/io_uring_queue_init.3: mention io_uring_register_ring_fd() Merge branch 'makefile' of https://github.com/257/liburing Add basic man pages for send/recvmsg prep helpers Add fsync man page Add cancelation request man page Add send/recv man pages Add shutdown man page Add sync_file_range man page man: add generic blurb on how io_uring returns errors Add poll man pages man: ensure all function declarations are terminated by ';' Add poll remove man page Add poll update man page man/io_uring_prep_poll_update.3: correct SEE ALSO section Add timeout update/remove man pages Add connect man page Add accept man pages Add openat man page Add close man pages Add openat2 man pages Add fadvise/madvise man pages man: add necessary other headers to man pages Add splice man page Add tee man page Add fallocate man page Add man page for registered file update request Add statx man page Add provide buffers man page Add buffer remove prep man page Add unlinkat man page Add renameat/renameat2 man pages Add mkdirat man page Add symlinkat man page Add linkat man page Add io_uring_queue_init_params man page man/io_uring_enter.2: mention IORING_OP_MSG_RING uses cqe flags man/io_uring_enter.2: add description of IORING_ENTER_REGISTERED_RING Add io_uring_register_iowq_aff() man page Add io_uring_register_iowq_max_workers() man page Merge branch 'musl-gnu-source' of https://github.com/thesamesam/liburing man/io_uring_prep_poll_add.3: remove extra space man/io_uring_prep_poll_update.3: remove extra 'e' man: add blurb about data passed in structs being stable across submit man/io_uring_submit.3: add blurb on passed in data being stable man: updates man: make mention of how direct file descriptors request an existing table man/io_uring_prep_accept.3: mention backwards compatability for direct Add regression case for fixed buffers and non-iterator files Style cleanups Add citation file Fixup CITATION file LICENSE: wrap the lines so it's actually readable test/tty-write-dpoll: add test case for double poll write Add test case for recv/recvmsg MSG_WAITALL test/msg-recvall: fix test test/recv-msgall-stream: add stream based MSG_WAITALL test case Actually wire up recv-msgall-stream test case test/recv-msgall-stream: remove nonblocking connect code test/test/msg-ring: don't test for IORING_CQE_F_MSG Remove IORING_CQE_F_MSG man/io_uring_queue_init.3: add note on CQ ring sizing man/io_uring_prep_cancel.3: add io_uring_prep_poll_remove(3) to see also Merge branch 'master' of https://github.com/rojkov/liburing test/open-direct-link: add test case for linked open+read+close test/open-direct-link: don't test if CQE_SKIP isn't available test/open-direct-link: add IOSQE_ASYNC man/io_uring.7: line breaks test/drop-submit: set invalid ioprio to force request to be dropped test/submit-link-fail: set invalid ioprio to force request to be dropped helpers: add file creation with pattern test/fixed-reuse: test that linked file slot reuse is correct test/xattr: specify file mode with O_CREAT test/xattr: style fixups test/xattr: don't fail on kernels not supporting the feature 32-bit build warning cleanups Merge tag 'liburing-2022-05-01' of https://github.com/ammarfaizi2/liburing test/Makefile test/Makefile: fixup sq-full-cpp target Merge branch 'dankamongmen/remove-double-cast' of https://github.com/dankamongmen/liburing Merge branch 'changes-3' of https://github.com/ewyler/liburing man/io_uring_register_ring_fd.3: try to improve NOTES section src/queue: protect io_uring_get_sqe() with LIBURING_INTERNAL test/timeout: fix exec-target naming io_uring.h: add IORING_FEAT_LINKED_FILE man/io_uring_setup.2: document recent FEAT flag additions Merge tag 'test-fixes-2022-04-15' of https://github.com/ammarfaizi2/liburing io_uring: add new cancel flags liburing.h: add io_uring_prep_cancel_fd() test/poll-cancel-all: test issuing CANCEL_ALL | CANCEL_FD man/io_uring_register.2: clarify eventfd notification counts Add eventfd register/unregister man pages test/poll-cancel-all: add test case canceling a subset of pending test/poll-cancel-all: abort test if cancel flags not supported io_uring.h: add IORING_ASYNC_CANCEL_ANY test/poll-cancel-all: test IORING_ASYNC_CANCEL_ANY test/poll-cancel-all: add async read test case test/runtests-quiet.sh: quote file names test/runtests-quiet.sh: fixup redirection test/statx: use regular stat include man: update man pages for waiting on a CQE with a timeout man/io_uring_prep_accept.3: fixup some phrasing liburing.h: use helper for io_uring_prep_multishot_accept() open/openat2: update man page to include IORING_FILE_INDEX_ALLOC queue: add new IORING_SQ_TASKRUN flag Add sparse registration helper and kernel definition Merge branch 'cancel-fd-all' test/open-direct-pick.c: add test case for open direct with alloc io_uring.h: add IORING_CQE_F_SOCK_NONEMPTY io_uring.h: add IORING_RECVSEND_POLL_FIRST test/send_recvmsg.c: only check buffer group ID if set Merge branch 'xattr' io_uring.h: add IORING_SETUP_SQE128 setup: add basic support for SQE128 test/nop: add basic IORING_SETUP_SQE128 tests test/nop: make less verbose and don't fail on older kernels Merge branch 'big-sqe' man/io_uring_setup.2: document 5.19 ring setup flags man/io_uring_prep_cancel.3: document new 5.19 cancelation flags man/io_uring_prep_recv{msg}.3: add new 5.19 flags Merge branch 'accept-multi' man/io_uring_prep_accept.3: note availability of the multishot variants io_uring.h: fix merge error io_uring.h: sync with 5.19 io_uring release Merge branch 'fix/configure-statx' of https://github.com/safl/liburing test/msg-ring.c: add IOPOLL test Add regression test case for IO submit before exit Add helper for sparse buffer registration man/io_uring_register_buffers.3: add sparse buffer helper man/io_uring_register_files.3: fix grammatical error Add ring based registered buffers test/send_recvmsg: add buffer ring test cases liburing.c: add buffer ring supply/commit helpers test/send_recvmsg.c: use buffer ring helpers Add combined cq+buf ring advance helper Add io_uring_unregister_buf_ring() Change io_uring_register_buf_ring() to take a flags argument Change io_uring_buf_ring_add() to take ring and buffer offset Add man pages for shared provided buffer rings man/io_uring_register_buffers.3: add reference to buffer rings Merge branch 'buf-ring' Add missing io_uring_unregister_buf_ring() declaration Add basic buffer ring test case Add CHANGELOG file Update README CHANGELOG update man/io_uring_register_buf_ring.3: note 5.19 availability test/accept: don't be too verbose or fail if multishot not available liburing: add socket prep helpers test/socKet: add socket test case man: further clarify return value of the wait primitives Fix type for io_uring_prep_socket_direct() man: add man page for io_uring_prep_socket() man: be consistent in how the function is presented man: add note on vectored reads and writes Tweaks to close+unregister of direct descriptor Merge branch 'master' of https://github.com/otommod/liburing Merge branch 'prep_cwd' of https://github.com/uarif1/liburing Man page tweaks Fixup bad symlinks test/socket: fix argument order for socket prep Merge tag 'github-bot-2022-06-02' of https://github.com/ammarfaizi2/liburing man: man page tweaks README: clarify when RLIMIT_MEMLOCK is still used Add cscope.out to .gitignore cHANGELOG: add a few more updates Merge branch 'fix/man-accept' of https://github.com/topecongiro/liburing Merge branch 'fix/man-madvise' of https://github.com/topecongiro/liburing Merge branch 'fix-changelog-man-reference' of https://github.com/fischerling/liburing test/buf-ring: ensure cqe isn't used uninitialized man/io_uring_setup.2: fix typo on when IORING_SETUP_TASKRUN_FLAG was added Remove IORING_CLOSE_FD_AND_FILE_SLOT Merge branch 'master' of https://github.com/CarterLi/liburing Add io_uring_prep_cancel64() test/nop: kill cqe32 test code test/ringbuf-read: add provided ring buffer read test case test/ringbuf-read: expand test case Merge branch 'master' of https://github.com/CarterLi/liburing man/io_uring_prep_cancel.3: clarify the NOTES section a bit more test/Makefile: ensure statx is only added once test: cleanup some legacy tests test/io_uring_register: kill another expected printf() test/io_uring_setup: quiet it down Jon Kohler (1): fix statx configure and build on !CONFIG_HAVE_STATX toolchains Khem Raj (1): examples/ucontext-cp.c: Do not use SIGSTKSZ Krishna Kanth Reddy (1): liburing: Update io_uring.h Mahdi Rakhshandehroo (1): Fix warnings/errors when compiling on Alpine Linux Mingqiang Sun (1): examples/link-cp.c: fix the last file-block retry may overflow Nugra (1): configure: Support busybox mktemp Nursan Valeyev (1): setup.c: rewrite `__fls()` Olivier Langlois (1): liburing: Add io_uring_submit_and_wait_timeout function in API Otto Modinos (7): man: keep the function names in their own lines man: be consistent with description dash man: use PP betwen multiple function definitions man: fix bold/italic punctuation man: put SEE ALSO suggestions on their own .BRs man: no empty paragraphs before DESCRIPTION man: fix and simplify bold usage Pavel Begunkov (22): tests: add no-op executable for exec tests: test timeout cancellation fails links tests: test open into taken fixed slot man/io_uring_enter.2: update notes about direct open/accept tests: improve multicqe_drain tests: match kernel and pass fds in s32[] tests: test close with fixed file table io_uring: test IORING_TIMEOUT_ETIME_SUCCESS io_uring: fix SQPOLL timeout-new test io_uring.h: update to reflect cqe-skip feature tests: add tests for IOSQE_CQE_SKIP_SUCCESS test: poll cancellation with offset timeouts test: skip-cqe with hardlinks man/io_uring_enter.2: document IOSQE_CQE_SKIP_SUCCESS man/io_uring_enter.2: notes about cqe-skip & drain interoperability tests: don't sleep too much for rsrc tags man: clarifications about direct open/accept tests: reduce multicqe_drain waiting time tests: extend scm cycle breaking tests tests: add more file registration tests Revert "test/nop: kill cqe32 test code" tests: fix and improve nop tests Paymon MARANDI (1): make: let src/Makefile set *dir vars properly Roman Gershman (1): Add io_uring_prep_readv2 and io_uring_prep_writev2 helpers Sam James (1): liburing.h: define GNU_SOURCE for cpu_set_t Samuel Williams (1): Clarify behaviour of offset in `prep_read`/`prep_write`. Seiichi Uchida (3): man/io_uring_prep_accept.3: fix parameter types man/io_uring_prep_madvise.3: remove fd man/io_uring_prep_madvise.3: posix_madvise -> madvise Simon A. F. Lund (1): configure: fix compile-checks for statx Stefan Hajnoczi (2): src/Makefile: re-add major version number to soname Revert "make: let src/Makefile set *dir vars properly" Stefan Roesch (16): liburing: add missing man pages liburing: update io_uring.h header file liburing: add prepare function for getdents64 liburing: Add test program for getdents call liburing: Add man page for io_uring_prep_getdents call liburing: add man pages for helper functions. liburing: Update io_uring in liburing liburing: add helper functions for setxattr and fsetxattr liburing: Add helper functions for fgetxattr and getxattr liburing: Add new test program to verify xattr support liburing: Update io_uring.h with large CQE kernel changes liburing: increase mmap size for large CQE's liburing: return correct ring size for large CQE's liburing: index large CQE's correctly liburing: add large CQE tests to nop test liburing: Test all configurations with NOP test Tomáš Chaloupka (1): Fix invalid opcode used in io_uring_unregister_iowq_aff Usama Arif (1): io_uring: add prep functions for current working directory Xiaoguang Wang (1): Let IORING_OP_FILES_UPDATE support to choose fixed file slots Yinan Zhang (1): Remove unused variable in man page example godzie44 (2): test/nop-all-sizes.c: del some unnecessary checks test/probe.c: fix typo in assert output monte (1): examples/io_uring_cp: fix bug while re-queuing nick black (1): remove double casts 李通洲 (3): liburing.h: add io_uring_prep_close_direct man/io_uring_setup.2: fix typo man/io_uring_prep_cancel.3: clearify the synchronous manner