Hi Linus, This pull request contains the io_uring updates for the 5.14-rc1 merge window. In detail: - Support for mkdirat, symlinkat, and linkat for io_uring (Dmitry) - Multi-queue iopoll improvement (Fam) - Allow configurable io-wq CPU masks (me) - renameat/linkat tightening (me) - poll re-arm improvement (Olivier) - SQPOLL race fix (Olivier) - Cancelation unification (Pavel) - SQPOLL cleanups (Pavel) - Enable file backed buffers for shmem/memfd (Pavel) - A ton of cleanups and performance improvements (Pavel) - Followup and misc fixes (Colin, Fam, Hao, Olivier) Please pull! The following changes since commit 009c9aa5be652675a06d5211e1640e02bbb1c33d: Linux 5.13-rc6 (2021-06-13 14:43:10 -0700) are available in the Git repository at: git://git.kernel.dk/linux-block.git tags/for-5.14/io_uring-2021-06-29 for you to fetch changes up to bdfe4dc5bfddf8f3b4080ac4a11a4c5843cbe928: io_uring: code clean for kiocb_done() (2021-06-27 16:22:42 -0600) ---------------------------------------------------------------- for-5.14/io_uring-2021-06-29 ---------------------------------------------------------------- Colin Ian King (2): io_uring: Fix incorrect sizeof operator for copy_from_user call io-wq: remove redundant initialization of variable ret Dmitry Kadashev (9): fs: make do_mkdirat() take struct filename io_uring: add support for IORING_OP_MKDIRAT fs: make do_mknodat() take struct filename fs: make do_symlinkat() take struct filename namei: add getname_uflags() fs: make do_linkat() take struct filename fs: update do_*() helpers to return ints io_uring: add support for IORING_OP_SYMLINKAT io_uring: add support for IORING_OP_LINKAT Fam Zheng (1): io_uring: Fix comment of io_get_sqe Hao Xu (2): io_uring: spin in iopoll() only when reqs are in a single queue io_uring: code clean for kiocb_done() Jens Axboe (4): io-wq: use private CPU mask io_uring: allow user configurable IO thread CPU affinity io_uring: add IOPOLL and reserved field checks to IORING_OP_RENAMEAT io_uring: add IOPOLL and reserved field checks to IORING_OP_UNLINKAT Olivier Langlois (6): io_uring: Add to traces the req pointer when available io_uring: minor clean up in trace events definition io-wq: remove header files not needed anymore io_uring: Fix race condition when sqp thread goes to sleep io_uring: Create define to modify a SQPOLL parameter io_uring: reduce latency by reissueing the operation Pavel Begunkov (68): io_uring: improve sqpoll event/state handling io_uring: improve sq_thread waiting check io_uring: remove unused park_task_work io_uring: simplify waking sqo_sq_wait io_uring: get rid of files in exit cancel io_uring: make fail flag not link specific io_uring: shuffle rarely used ctx fields io_uring: better locality for rsrc fields io_uring: remove dependency on ring->sq/cq_entries io_uring: deduce cq_mask from cq_entries io_uring: kill cached_cq_overflow io_uring: rename io_get_cqring io_uring: don't bounce submit_state cachelines io_uring: enable shmem/memfd memory registration io_uring: fix blocking inline submission io-wq: embed wqe ptr array into struct io_wq io-wq: remove unused io-wq refcounting io_uring: refactor io_iopoll_req_issued io_uring: rename function *task_file io-wq: don't repeat IO_WQ_BIT_EXIT check by worker io-wq: simplify worker exiting io_uring: hide rsrc tag copy into generic helpers io_uring: remove rsrc put work irq save/restore io_uring: add helpers for 2 level table alloc io_uring: don't vmalloc rsrc tags io_uring: cache task struct refs io_uring: unify SQPOLL and user task cancellations io_uring: inline io_iter_do_read() io_uring: keep SQ pointers in a single cacheline io_uring: move ctx->flags from SQ cacheline io_uring: shuffle more fields into SQ ctx section io_uring: refactor io_get_sqe() io_uring: don't cache number of dropped SQEs io_uring: optimise completion timeout flushing io_uring: small io_submit_sqe() optimisation io_uring: clean up check_overflow flag io_uring: wait heads renaming io_uring: move uring_lock location io_uring: refactor io_req_defer() io_uring: optimise non-drain path io_uring: fix min types mismatch in table alloc io_uring: switch !DRAIN fast path when possible io_uring: shove more drain bits out of hot path io_uring: optimise io_commit_cqring() io_uring: fix false WARN_ONCE io_uring: refactor io_submit_flush_completions() io_uring: move creds from io-wq work to io_kiocb io_uring: track request creds with a flag io_uring: simplify iovec freeing in io_clean_op() io_uring: clean all flags in io_clean_op() at once io_uring: refactor io_get_sequence() io_uring: inline __tctx_task_work() io_uring: optimise task_work submit flushing io_uring: refactor tctx task_work list splicing io_uring: don't resched with empty task_list io_uring: improve in tctx_task_work() resubmission io_uring: don't change sqpoll creds if not needed io_uring: refactor io_sq_thread() io_uring: fix code style problems io_uring: update sqe layout build checks io_uring: simplify struct io_uring_sqe layout io_uring: refactor io_openat2() io_uring: refactor io_arm_poll_handler() io_uring: mainstream sqpoll task_work running io_uring: remove not needed PF_EXITING check io_uring: optimise hot path restricted checks io_uring: refactor io_submit_flush_completions io_uring: pre-initialise some of req fields fs/exec.c | 8 +- fs/internal.h | 8 +- fs/io-wq.c | 103 ++- fs/io-wq.h | 3 +- fs/io_uring.c | 1524 +++++++++++++++++++++++---------------- fs/namei.c | 137 ++-- include/linux/fs.h | 1 + include/trace/events/io_uring.h | 106 ++- include/uapi/linux/io_uring.h | 32 +- 9 files changed, 1177 insertions(+), 745 deletions(-) -- Jens Axboe