Make io_kiocb slimmer by 24 bytes mainly by revising lists usage. The drawback is adding extra kmalloc in draining path, but that's a slow path, so meh. It also frees some space for the deferred completion path if would be needed in the future, but the main idea here is to shrink it to 3 cachelines in the end. This depends on "rw iovec copy cleanup" series v2: [1] invalid kfree() in the end of io_{write,read}() handled by "rw iovec copy cleanup" series [1] rename io_cleanup_req() -> __io_clean_op() [3] rename iopoll_list -> inflight_entry (Jens) [8] correct sequence types, [8] return back sequence-based fast check in defer Pavel Begunkov (9): io_uring: share completion list w/ per-op space io_uring: rename ctx->poll into ctx->iopoll io_uring: use inflight_entry list for iopoll'ing io_uring: use completion list for CQ overflow io_uring: add req->timeout.list io_uring: remove init for unused list io_uring: use non-intrusive list for defer io_uring: remove sequence from io_kiocb io_uring: place cflags into completion data fs/io_uring.c | 198 +++++++++++++++++++++++++++++++------------------- 1 file changed, 122 insertions(+), 76 deletions(-) -- 2.24.0