From: Jens Axboe <[email protected]>
To: Linus Torvalds <[email protected]>
Cc: io-uring <[email protected]>,
Christian Brauner <[email protected]>
Subject: [GIT PULL] io_uring updates for 6.8-rc1
Date: Mon, 8 Jan 2024 11:24:23 -0700 [thread overview]
Message-ID: <[email protected]> (raw)
Hi Linus,
Mostly just come fixes and cleanups, but one feature as well. In detail:
- Harden the check for handling IOPOLL based on return (Pavel)
- Various minor optimizations (Pavel)
- Drop remnants of SCM_RIGHTS fd passing support, now that it's no
longer supported since 6.7 (me)
- Fix for a case where bytes_done wasn't initialized properly on a
failure condition for read/write requests (me)
- Move the register related code to a separate file (me)
- Add support for returning the provided ring buffer head (me)
- Add support for adding a direct descriptor to the normal file table
(me, Christian Brauner)
- Fix for ensuring pending task_work for a ring with DEFER_TASKRUN is
run even if we timeout waiting (me)
Note that this has Christian's vfs.file branch pulled in, as he renamed
__receive_fd() to receive_fd(). Sending this out now, as I saw Christian
already included this branch in his pull requests sent out last week.
Also note that this will throw a merge conflict with the block branch,
as we killed the IORING_URING_CMD_POLLED flag and associated cookie in
struct io_uring_cmd, and this branch moved those things to a different
file. The resolution is to remove all of the offending hunk in
include/linux/io_uring.h and then edit include/linux/io_uring/cmd.h,
killing IORING_URING_CMD_POLLED in there and getting rid of the union
and cookie field in struct io_uring_cmd. Including my resolution of the
merge at the end of the email.
Please pull!
The following changes since commit 4e94ddfe2aab72139acb8d5372fac9e6c3f3e383:
file: remove __receive_fd() (2023-12-12 14:24:14 +0100)
are available in the Git repository at:
git://git.kernel.dk/linux.git tags/for-6.8/io_uring-2024-01-08
for you to fetch changes up to 6ff1407e24e6fdfa4a16ba9ba551e3d253a26391:
io_uring: ensure local task_work is run on wait timeout (2024-01-04 12:21:08 -0700)
----------------------------------------------------------------
for-6.8/io_uring-2024-01-08
----------------------------------------------------------------
Jens Axboe (8):
Merge branch 'vfs.file' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs into for-6.8/io_uring
io_uring/openclose: add support for IORING_OP_FIXED_FD_INSTALL
io_uring/register: move io_uring_register(2) related code to register.c
io_uring/unix: drop usage of io_uring socket
io_uring: drop any code related to SCM_RIGHTS
io_uring/rw: ensure io->bytes_done is always initialized
io_uring/kbuf: add method for returning provided buffer ring head
io_uring: ensure local task_work is run on wait timeout
Pavel Begunkov (5):
io_uring: don't check iopoll if request completes
io_uring: optimise ltimeout for inline execution
io_uring: split out cmd api into a separate header
io_uring/cmd: inline io_uring_cmd_do_in_task_lazy
io_uring/cmd: inline io_uring_cmd_get_task
MAINTAINERS | 1 +
drivers/block/ublk_drv.c | 2 +-
drivers/nvme/host/ioctl.c | 2 +-
include/linux/io_uring.h | 95 +------
include/linux/io_uring/cmd.h | 82 ++++++
include/linux/io_uring_types.h | 34 ++-
include/uapi/linux/io_uring.h | 19 ++
io_uring/Makefile | 2 +-
io_uring/filetable.c | 11 +-
io_uring/io_uring.c | 663 +++-------------------------------------------
io_uring/io_uring.h | 19 +-
io_uring/kbuf.c | 26 ++
io_uring/kbuf.h | 1 +
io_uring/opdef.c | 9 +
io_uring/openclose.c | 44 +++
io_uring/openclose.h | 3 +
io_uring/register.c | 605 ++++++++++++++++++++++++++++++++++++++++++
io_uring/register.h | 8 +
io_uring/rsrc.c | 169 +-----------
io_uring/rsrc.h | 15 --
io_uring/rw.c | 12 +-
io_uring/uring_cmd.c | 15 +-
net/core/scm.c | 2 +-
net/unix/scm.c | 4 +-
security/selinux/hooks.c | 2 +-
security/smack/smack_lsm.c | 2 +-
26 files changed, 895 insertions(+), 952 deletions(-)
create mode 100644 include/linux/io_uring/cmd.h
create mode 100644 io_uring/register.c
create mode 100644 io_uring/register.h
commit 4437f65f37924cdce96bcd687cbe225f175e70da
Merge: aed185852af9 6ff1407e24e6
Author: Jens Axboe <[email protected]>
Date: Mon Jan 8 11:21:41 2024 -0700
Merge branch 'for-6.8/io_uring' into test
* for-6.8/io_uring:
io_uring: ensure local task_work is run on wait timeout
io_uring/kbuf: add method for returning provided buffer ring head
io_uring/rw: ensure io->bytes_done is always initialized
io_uring: drop any code related to SCM_RIGHTS
io_uring/unix: drop usage of io_uring socket
io_uring/register: move io_uring_register(2) related code to register.c
io_uring/openclose: add support for IORING_OP_FIXED_FD_INSTALL
io_uring/cmd: inline io_uring_cmd_get_task
io_uring/cmd: inline io_uring_cmd_do_in_task_lazy
io_uring: split out cmd api into a separate header
io_uring: optimise ltimeout for inline execution
io_uring: don't check iopoll if request completes
Signed-off-by: Jens Axboe <[email protected]>
diff --cc include/linux/io_uring/cmd.h
index 000000000000,d69b4038aa3e..e453a997c060
mode 000000,100644..100644
--- a/include/linux/io_uring/cmd.h
+++ b/include/linux/io_uring/cmd.h
@@@ -1,0 -1,82 +1,77 @@@
+ /* SPDX-License-Identifier: GPL-2.0-or-later */
+ #ifndef _LINUX_IO_URING_CMD_H
+ #define _LINUX_IO_URING_CMD_H
+
+ #include <uapi/linux/io_uring.h>
+ #include <linux/io_uring_types.h>
+
+ /* only top 8 bits of sqe->uring_cmd_flags for kernel internal use */
+ #define IORING_URING_CMD_CANCELABLE (1U << 30)
-#define IORING_URING_CMD_POLLED (1U << 31)
+
+ struct io_uring_cmd {
+ struct file *file;
+ const struct io_uring_sqe *sqe;
- union {
- /* callback to defer completions to task context */
- void (*task_work_cb)(struct io_uring_cmd *cmd, unsigned);
- /* used for polled completion */
- void *cookie;
- };
++ /* callback to defer completions to task context */
++ void (*task_work_cb)(struct io_uring_cmd *cmd, unsigned);
+ u32 cmd_op;
+ u32 flags;
+ u8 pdu[32]; /* available inline for free use */
+ };
+
+ static inline const void *io_uring_sqe_cmd(const struct io_uring_sqe *sqe)
+ {
+ return sqe->cmd;
+ }
+
+ #if defined(CONFIG_IO_URING)
+ int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw,
+ struct iov_iter *iter, void *ioucmd);
+ void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2,
+ unsigned issue_flags);
+ void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd,
+ void (*task_work_cb)(struct io_uring_cmd *, unsigned),
+ unsigned flags);
+
+ void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
+ unsigned int issue_flags);
+
+ #else
+ static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw,
+ struct iov_iter *iter, void *ioucmd)
+ {
+ return -EOPNOTSUPP;
+ }
+ static inline void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret,
+ ssize_t ret2, unsigned issue_flags)
+ {
+ }
+ static inline void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd,
+ void (*task_work_cb)(struct io_uring_cmd *, unsigned),
+ unsigned flags)
+ {
+ }
+ static inline void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
+ unsigned int issue_flags)
+ {
+ }
+ #endif
+
+ /* users must follow the IOU_F_TWQ_LAZY_WAKE semantics */
+ static inline void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd,
+ void (*task_work_cb)(struct io_uring_cmd *, unsigned))
+ {
+ __io_uring_cmd_do_in_task(ioucmd, task_work_cb, IOU_F_TWQ_LAZY_WAKE);
+ }
+
+ static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd,
+ void (*task_work_cb)(struct io_uring_cmd *, unsigned))
+ {
+ __io_uring_cmd_do_in_task(ioucmd, task_work_cb, 0);
+ }
+
+ static inline struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd)
+ {
+ return cmd_to_io_kiocb(cmd)->task;
+ }
+
+ #endif /* _LINUX_IO_URING_CMD_H */
--
Jens Axboe
next reply other threads:[~2024-01-08 18:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-08 18:24 Jens Axboe [this message]
2024-01-10 18:13 ` [GIT PULL] io_uring updates for 6.8-rc1 Jens Axboe
2024-01-11 22:57 ` pr-tracker-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox