summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-05-25pkgconfig: install a liburing.pc fileStefan Hajnoczi
pkg-config (https://pkgconfig.freedesktop.org/) makes it easier to build applications that have library dependencies. Libraries ship .pc files containing the compiler and linker flags needed to build successfully. This saves applications from hardcoding these details into their build scripts, especially when these details can change between operating systems or distributions. To build a liburing application: gcc $(pkg-config --cflags --libs liburing) -o myapp myapp.c Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-24test/send_recvmsg: code cleanups and error handlingJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-23Add send/recvmsg test caseJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-23io_uring.h: add send/recvmsg partsJens Axboe
This syncs with io_uring-next, which has support for doing recvmsg and sendmsg through io_uring. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-22examples/io_uring-cp: fix a NULL pointer dereferencezhangliguang
In case malloc fails, the fix returns NULL to avoid NULL pointer dereference. Signed-off-by: zhangliguang <zhangliguang@linux.alibaba.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-21clean examples when make cleanWeiping Zhang
Signed-off-by: Weiping Zhang <zhangweiping@didiglobal.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-21io_uring_submit: fix head/tail wrap issueJens Axboe
Use proper unsigned math to figure out how many entries we have. If we have head and tail on either side of UINT_MAX, then we currently don't submit anything as: while (head < tail) { is never true. Reported-by: Weiping Zhang <zhangweiping@didiglobal.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20Fix leak of fd in io_uring_queue_init() on failureJens Axboe
If the ring setup fails, close the fd before returning failure. Reported-by: Kornilios Kourtis <kkourt@kkourt.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20io_uring_register.2: fix multiple formatting issuesDmitry V. Levin
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20io_uring_enter.2: fix multiple formatting issuesDmitry V. Levin
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20io_uring_setup.2: fix multiple formatting issuesDmitry V. Levin
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20fix harmless typo in sq_entries in io_uring_mmapWeiping Zhang
We really should use a ';' to terminate the line. This is just a cosmetic issue, no functional changes. Signed-off-by: Weiping Zhang <zhangweiping@didiglobal.com> Modified wording Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20Add missing symbols to linker version mapHrvoje Zeba
Some of the symbols were missing from linker version script so they weren't exported in the dynamic library. Signed-off-by: Hrvoje Zeba <zeba.hrvoje@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20syscall: add support of non-x86 architecturesDmitry V. Levin
Fortunately, all architectures except alpha have common numbers for new system calls nowadays, so support of non-alpha architectures is as simple as support of x86. Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-20syscall: fix names of __NR_* macrosDmitry V. Levin
Rename __NR_sys_io_uring* to __NR_io_uring* to match kernel headers. The prefix traditionally used for macros describing syscall numbers is "__NR_", not "__NR_sys_". Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-19Merge branch 'const-matching' of https://github.com/flamingcow66/liburingJens Axboe
* 'const-matching' of https://github.com/flamingcow66/liburing: Match const signatures in io_uring_prep_* to native functions
2019-05-19Match const signatures in io_uring_prep_* to native functionsIan Gulliver
io_uring_prep_{readv,writev,read_fixed,write_fixed}() take non-const arguments that are const in the native functions that they mimic. Make those arguments const. Signed-off-by: Ian Gulliver <git@flamingcow.io>
2019-05-18Merge branch 'missing-header' of https://github.com/flamingcow66/liburingJens Axboe
* 'missing-header' of https://github.com/flamingcow66/liburing: Fix liburing.h memset() missing declaration
2019-05-18Fix liburing.h memset() missing declarationIan Gulliver
liburing.h uses memset() but doesn't include string.h. If nothing else includes it, this causes compile errors. Add the include. Signed-off-by: Ian Gulliver <git@flamingcow.io>
2019-05-18io_uring.h: sync with kernelJens Axboe
Add sync_range_file opcode and related fields, and the io_uring_register(2) commands for eventfd registration. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-18Fix manpage mmap() syntaxIan Gulliver
The examples in the io_uring_setup.2 man patch erroneously ORs the protection bits and mmap flags, fix it up. Signed-off-by: Ian Gulliver <git@flamingcow.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-16Include man dir/pages in spec file installJens Axboe
Also kill reference to long dead TODO file. Patch from Hrvoje Zeba <zeba.hrvoje@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-15examples/link-cp: improve memory useJens Axboe
Put the data at the end so we don't have to offset the actual buffer. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-15examples/link-cp: improvementsJens Axboe
Add short read requeue and abort on error. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-14examples/link-cp: fix a few issuesJens Axboe
Still need to handle broken chains, must resubmit those. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-14test/io_uring_register: don't fail max fd test if we run out of memJens Axboe
We need a lot of RAM for this case, my vm always fails it. Don't hard fail due to ENOMEM, just skip the test. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-14Add chain failure handling test caseJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-13Add link SQE supportJens Axboe
Just a basic test case that does various forms of linked nops, and a sample bare bones copy program using linked reads and writes. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-06liburing: add extern "C" to liburing.hKevin Vigor
Make header includable from C++ projects. Signed-off-by: Kevin Vigor <kvigor@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-06liburing: do not build static library with -fPICKevin Vigor
Static libraries are generally built without -fPIC for slight performance gain, make that the case for liburing. Signed-off-by: Kevin Vigor <kvigor@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-06liburing: improve 'make install'Kevin Vigor
'make install' did not install all the headers necessary to use the library; fix. Additionally allow specifying the install prefix, which was previously hardcoded to /usr. Signed-off-by: Kevin Vigor <kvigor@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-01test/eeed8b54e0df-test: define RWF_NOWAIT if we don't have itJens Axboe
Older installs/distros don't have this in fs.h. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-01test/io_uring_setup: don't fail SQPOLL test case for non-rootJens Axboe
SQPOLL requires root, if the tests are run as a user, we'll get EPERM instead of EINVAL. Don't fail the test because of that, just mention it in the log. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-01man/io_uring_enter.2: clarify io_uring_enter(2) return valuesJens Axboe
With the recent change to ensure that submission side errors that happen on behalf of an sqe are returned in the form of a cqe rather than -1/errno from the system call, make sure that the man page reflects that. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-01test/eeed8b54e0df-test: check write(2) return valueJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-05-01liburing: improve output for test/io_uring_setup.cShenghui Wang
For the IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF test case, add_pipe is not set, and the output is like: "...flags: IORING_SETUP_SQPOLLIORING_SETUP_SQ_AFF...". Set add_pipe for IORING_SETUP_SQPOLL flag so that the output is like: "...flags: IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF...". Acked-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Shenghui Wang <shhuiw@foxmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-30Update tests for 'sqe submit always posts a cqe'Jens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-30test/runtests.sh: list all failed tests when doneJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-26liburing: install man pages on running 'make install'Shenghui Wang
Install man pages on running 'make install', so that we can run commands like 'man 2 io_uring_setup'. Signed-off-by: Shenghui Wang <shhuiw@foxmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-25Add test case for -EAGAIN issueJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-23Add regression test cases for three recent issuesJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-23Actually add test/runtests.shJens Axboe
This adds the missing shell script that runs the tests. Fixes: 4916320ec374 ("Separate test cases from examples") Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-23man/io_uring_enter.2: add another ENOTSUPP instanceJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-22man/io_uring_register.2: add another ENXIO caseJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-18Rename completion helpersJens Axboe
We have io_uring_get_sqe() on the submission side, yet the completion side is named _completion. Rename as follows: io_uring_get_completion() io_uring_peek_cqe() iO_uring_wait_completion() io_uring_wait_cqe() This better tells the user what the _get variant does by calling it _peek instead, and we move to using _cqe() as the postfix instead of _completion. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-17Separate test cases from examplesJens Axboe
Also adds a runtests makefile target.
2019-04-17Add io_uring_cqe_seen()Jens Axboe
There's a failure case where an application gets a cqe entry, but the kernel can then overwrite it before the application is done reading it. This can happen since the io_uring_{get,wait}_completion() interface both returns a CQE pointer AND increments the ring index. If the kernel reuses this entry before the applications is done reading it, the contents may be corrupted. Remove the CQ head increment from the CQE retrieval, and put it into a separate helper, io_uring_cqe_seen(). The application must call this helper when it got a new CQE entry through one of the above calls, and it's now done reading it. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-17Add SQ/CQ overflow testsJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-11test/nop: add NOP test caseJens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-04-11test/fsync: error out if we submit less than we wantedJens Axboe
This failure is expected on kernels that don't support the DRAIN primitive. Signed-off-by: Jens Axboe <axboe@kernel.dk>