Pull io_uring fixes from Jens Axboe: - A single fix for over-eager retries for networking (Pavel) - Revert the notification slot support for zerocopy sends. It turns out that even after more than a year or development and testing, there's not full agreement on whether just using plain ordered notifications is Good Enough to avoid the complexity of using the notifications slots. Because of that, we decided that it's best left to a future final decision. We can always bring back this feature, but we can't really change it or remove it once we've released 6.0 with it enabled. The reverts leave the usual CQE notifications as the primary interface for knowing when data was sent, and when it was acked. (Pavel) * tag 'io_uring-6.0-2022-09-02' of git://git.kernel.dk/linux-block: selftests/net: return back io_uring zc send tests io_uring/net: simplify zerocopy send user API io_uring/notif: remove notif registration Revert "io_uring: rename IORING_OP_FILES_UPDATE" Revert "io_uring: add zc notification flush requests" selftests/net: temporarily disable io_uring zc test io_uring/net: fix overexcessive retries
Showing the changes to include/uapi/linux (1 of 11 files). Show all
Unified · Split
| @@ -71,8 +71,8 @@ struct io_uring_sqe { · 70 unmodified lines | ||
| 71 | 71 | __s32 splice_fd_in; |
| 72 | 72 | __u32 file_index; |
| 73 | 73 | struct { |
| 74 | − __u16 notification_idx; | |
| 75 | 74 | __u16 addr_len; |
| 75 | + __u16 __pad3[1]; | |
| 76 | 76 | }; |
| 77 | 77 | }; |
| 78 | 78 | union { |
| @@ -178,8 +178,7 @@ enum io_uring_op { · 99 unmodified lines | ||
| 178 | 178 | IORING_OP_FALLOCATE, |
| 179 | 179 | IORING_OP_OPENAT, |
| 180 | 180 | IORING_OP_CLOSE, |
| 181 | − IORING_OP_RSRC_UPDATE, | |
| 182 | − IORING_OP_FILES_UPDATE = IORING_OP_RSRC_UPDATE, | |
| 181 | + IORING_OP_FILES_UPDATE, | |
| 183 | 182 | IORING_OP_STATX, |
| 184 | 183 | IORING_OP_READ, |
| 185 | 184 | IORING_OP_WRITE, |
| @@ -206,7 +205,7 @@ enum io_uring_op { · 20 unmodified lines | ||
| 206 | 205 | IORING_OP_GETXATTR, |
| 207 | 206 | IORING_OP_SOCKET, |
| 208 | 207 | IORING_OP_URING_CMD, |
| 209 | − IORING_OP_SENDZC_NOTIF, | |
| 208 | + IORING_OP_SEND_ZC, | |
| 210 | 209 | |
| 211 | 210 | /* this goes last, obviously */ |
| 212 | 211 | IORING_OP_LAST, |
| @@ -228,7 +227,6 @@ enum io_uring_op { · 15 unmodified lines | ||
| 228 | 227 | #define IORING_TIMEOUT_ETIME_SUCCESS (1U << 5) |
| 229 | 228 | #define IORING_TIMEOUT_CLOCK_MASK (IORING_TIMEOUT_BOOTTIME | IORING_TIMEOUT_REALTIME) |
| 230 | 229 | #define IORING_TIMEOUT_UPDATE_MASK (IORING_TIMEOUT_UPDATE | IORING_LINK_TIMEOUT_UPDATE) |
| 231 | − | |
| 232 | 230 | /* |
| 233 | 231 | * sqe->splice_flags |
| 234 | 232 | * extends splice(2) flags |
| @@ -281,29 +279,16 @@ enum io_uring_op { · 46 unmodified lines | ||
| 281 | 279 | * |
| 282 | 280 | * IORING_RECVSEND_FIXED_BUF Use registered buffers, the index is stored in |
| 283 | 281 | * the buf_index field. |
| 284 | − * | |
| 285 | − * IORING_RECVSEND_NOTIF_FLUSH Flush a notification after a successful | |
| 286 | − * successful. Only for zerocopy sends. | |
| 287 | 282 | */ |
| 288 | 283 | #define IORING_RECVSEND_POLL_FIRST (1U << 0) |
| 289 | 284 | #define IORING_RECV_MULTISHOT (1U << 1) |
| 290 | 285 | #define IORING_RECVSEND_FIXED_BUF (1U << 2) |
| 291 | −#define IORING_RECVSEND_NOTIF_FLUSH (1U << 3) | |
| 292 | 286 | |
| 293 | 287 | /* |
| 294 | 288 | * accept flags stored in sqe->ioprio |
| 295 | 289 | */ |
| 296 | 290 | #define IORING_ACCEPT_MULTISHOT (1U << 0) |
| 297 | 291 | |
| 298 | − | |
| 299 | −/* | |
| 300 | − * IORING_OP_RSRC_UPDATE flags | |
| 301 | − */ | |
| 302 | −enum { | |
| 303 | − IORING_RSRC_UPDATE_FILES, | |
| 304 | − IORING_RSRC_UPDATE_NOTIF, | |
| 305 | −}; | |
| 306 | − | |
| 307 | 292 | /* |
| 308 | 293 | * IORING_OP_MSG_RING command types, stored in sqe->addr |
| 309 | 294 | */ |
| @@ -341,10 +326,13 @@ struct io_uring_cqe { · 31 unmodified lines | ||
| 341 | 326 | * IORING_CQE_F_BUFFER If set, the upper 16 bits are the buffer ID |
| 342 | 327 | * IORING_CQE_F_MORE If set, parent SQE will generate more CQE entries |
| 343 | 328 | * IORING_CQE_F_SOCK_NONEMPTY If set, more data to read after socket recv |
| 329 | + * IORING_CQE_F_NOTIF Set for notification CQEs. Can be used to distinct | |
| 330 | + * them from sends. | |
| 344 | 331 | */ |
| 345 | 332 | #define IORING_CQE_F_BUFFER (1U << 0) |
| 346 | 333 | #define IORING_CQE_F_MORE (1U << 1) |
| 347 | 334 | #define IORING_CQE_F_SOCK_NONEMPTY (1U << 2) |
| 335 | +#define IORING_CQE_F_NOTIF (1U << 3) | |
| 348 | 336 | |
| 349 | 337 | enum { |
| 350 | 338 | IORING_CQE_BUFFER_SHIFT = 16, |
| @@ -485,10 +473,6 @@ enum { · 134 unmodified lines | ||
| 485 | 473 | /* register a range of fixed file slots for automatic slot allocation */ |
| 486 | 474 | IORING_REGISTER_FILE_ALLOC_RANGE = 25, |
| 487 | 475 | |
| 488 | − /* zerocopy notification API */ | |
| 489 | − IORING_REGISTER_NOTIFIERS = 26, | |
| 490 | − IORING_UNREGISTER_NOTIFIERS = 27, | |
| 491 | − | |
| 492 | 476 | /* this goes last */ |
| 493 | 477 | IORING_REGISTER_LAST |
| 494 | 478 | }; |