Pull io_uring updates from Jens Axboe: - Add supported for more directly managed task_work running. This is beneficial for real world applications that end up issuing lots of system calls as part of handling work. Normal task_work will always execute as we transition in and out of the kernel, even for "unrelated" system calls. It's more efficient to defer the handling of io_uring's deferred work until the application wants it to be run, generally in batches. As part of ongoing work to write an io_uring network backend for Thrift, this has been shown to greatly improve performance. (Dylan) - Add IOPOLL support for passthrough (Kanchan) - Improvements and fixes to the send zero-copy support (Pavel) - Partial IO handling fixes (Pavel) - CQE ordering fixes around CQ ring overflow (Pavel) - Support sendto() for non-zc as well (Pavel) - Support sendmsg for zerocopy (Pavel) - Networking iov_iter fix (Stefan) - Misc fixes and cleanups (Pavel, me) * tag 'for-6.1/io_uring-2022-10-03' of git://git.kernel.dk/linux: (56 commits) io_uring/net: fix notif cqe reordering io_uring/net: don't update msg_name if not provided io_uring: don't gate task_work run on TIF_NOTIFY_SIGNAL io_uring/rw: defer fsnotify calls to task context io_uring/net: fix fast_iov assignment in io_setup_async_msg() io_uring/net: fix non-zc send with address io_uring/net: don't skip notifs for failed requests io_uring/rw: don't lose short results on io_setup_async_rw() io_uring/rw: fix unexpected link breakage io_uring/net: fix cleanup double free free_iov init io_uring: fix CQE reordering io_uring/net: fix UAF in io_sendrecv_fail() selftest/net: adjust io_uring sendzc notif handling io_uring: ensure local task_work marks task as running io_uring/net: zerocopy sendmsg io_uring/net: combine fail handlers io_uring/net: rename io_sendzc() io_uring/net: support non-zerocopy sendto io_uring/net: refactor io_setup_async_addr io_uring/net: don't lose partial send_zc on fail ...
Showing the changes to include/uapi/linux (1 of 30 files). Show all
Unified · Split
| @@ -157,6 +157,13 @@ enum { · 156 unmodified lines | ||
| 157 | 157 | */ |
| 158 | 158 | #define IORING_SETUP_SINGLE_ISSUER (1U << 12) |
| 159 | 159 | |
| 160 | +/* | |
| 161 | + * Defer running task work to get events. | |
| 162 | + * Rather than running bits of task work whenever the task transitions | |
| 163 | + * try to do it just before it is needed. | |
| 164 | + */ | |
| 165 | +#define IORING_SETUP_DEFER_TASKRUN (1U << 13) | |
| 166 | + | |
| 160 | 167 | enum io_uring_op { |
| 161 | 168 | IORING_OP_NOP, |
| 162 | 169 | IORING_OP_READV, |
| @@ -206,6 +213,7 @@ enum io_uring_op { · 43 unmodified lines | ||
| 206 | 213 | IORING_OP_SOCKET, |
| 207 | 214 | IORING_OP_URING_CMD, |
| 208 | 215 | IORING_OP_SEND_ZC, |
| 216 | + IORING_OP_SENDMSG_ZC, | |
| 209 | 217 | |
| 210 | 218 | /* this goes last, obviously */ |
| 211 | 219 | IORING_OP_LAST, |