* [PATCH v2 0/3] clean up io_uring cmd header structure
@ 2023-12-01 0:57 Pavel Begunkov
2023-12-01 0:57 ` [PATCH v2 1/3] io_uring: split out cmd api into a separate header Pavel Begunkov
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Pavel Begunkov @ 2023-12-01 0:57 UTC (permalink / raw)
To: io-uring
Cc: Jens Axboe, asml.silence, linux-block, ming.lei, joshi.k,
linux-security-module, selinux, Paul Moore
Looking at the zc rfc, and how we tend to stuff everything into
linux/io_uring, start splitting the file before it becomes even more
monstrous.
V2: fix up includes for security/
Add new files to MAINTAINERS
Pavel Begunkov (3):
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 | 89 +---------------------------------
include/linux/io_uring/cmd.h | 82 +++++++++++++++++++++++++++++++
include/linux/io_uring_types.h | 31 ++++++++++++
io_uring/io_uring.c | 1 +
io_uring/io_uring.h | 10 ----
io_uring/rw.c | 2 +-
io_uring/uring_cmd.c | 15 +-----
security/selinux/hooks.c | 2 +-
security/smack/smack_lsm.c | 2 +-
12 files changed, 122 insertions(+), 117 deletions(-)
create mode 100644 include/linux/io_uring/cmd.h
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/3] io_uring: split out cmd api into a separate header
2023-12-01 0:57 [PATCH v2 0/3] clean up io_uring cmd header structure Pavel Begunkov
@ 2023-12-01 0:57 ` Pavel Begunkov
2023-12-03 13:45 ` Ming Lei
2023-12-01 0:57 ` [PATCH v2 2/3] io_uring/cmd: inline io_uring_cmd_do_in_task_lazy Pavel Begunkov
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Pavel Begunkov @ 2023-12-01 0:57 UTC (permalink / raw)
To: io-uring
Cc: Jens Axboe, asml.silence, linux-block, ming.lei, joshi.k,
linux-security-module, selinux, Paul Moore
linux/io_uring.h is slowly becoming a rubbish bin where we put
anything exposed to other subsystems. For instance, the task exit
hooks and io_uring cmd infra are completely orthogonal and don't need
each other's definitions. Start cleaning it up by splitting out all
command bits into a new header file.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
MAINTAINERS | 1 +
drivers/block/ublk_drv.c | 2 +-
drivers/nvme/host/ioctl.c | 2 +-
include/linux/io_uring.h | 89 +---------------------------------
include/linux/io_uring/cmd.h | 81 +++++++++++++++++++++++++++++++
include/linux/io_uring_types.h | 20 ++++++++
io_uring/io_uring.c | 1 +
io_uring/rw.c | 2 +-
io_uring/uring_cmd.c | 2 +-
security/selinux/hooks.c | 2 +-
security/smack/smack_lsm.c | 2 +-
11 files changed, 110 insertions(+), 94 deletions(-)
create mode 100644 include/linux/io_uring/cmd.h
diff --git a/MAINTAINERS b/MAINTAINERS
index 97f51d5ec1cf..eaa3d8a2490b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11157,6 +11157,7 @@ L: io-uring@vger.kernel.org
S: Maintained
T: git git://git.kernel.dk/linux-block
T: git git://git.kernel.dk/liburing
+F: include/linux/io_uring/
F: include/linux/io_uring.h
F: include/linux/io_uring_types.h
F: include/trace/events/io_uring.h
diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c
index 83600b45e12a..909377068a87 100644
--- a/drivers/block/ublk_drv.c
+++ b/drivers/block/ublk_drv.c
@@ -36,7 +36,7 @@
#include <linux/sched/mm.h>
#include <linux/uaccess.h>
#include <linux/cdev.h>
-#include <linux/io_uring.h>
+#include <linux/io_uring/cmd.h>
#include <linux/blk-mq.h>
#include <linux/delay.h>
#include <linux/mm.h>
diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c
index 529b9954d2b8..6864a6eeee93 100644
--- a/drivers/nvme/host/ioctl.c
+++ b/drivers/nvme/host/ioctl.c
@@ -5,7 +5,7 @@
*/
#include <linux/ptrace.h> /* for force_successful_syscall_return */
#include <linux/nvme_ioctl.h>
-#include <linux/io_uring.h>
+#include <linux/io_uring/cmd.h>
#include "nvme.h"
enum {
diff --git a/include/linux/io_uring.h b/include/linux/io_uring.h
index aefb73eeeebf..d8fc93492dc5 100644
--- a/include/linux/io_uring.h
+++ b/include/linux/io_uring.h
@@ -6,71 +6,13 @@
#include <linux/xarray.h>
#include <uapi/linux/io_uring.h>
-enum io_uring_cmd_flags {
- IO_URING_F_COMPLETE_DEFER = 1,
- IO_URING_F_UNLOCKED = 2,
- /* the request is executed from poll, it should not be freed */
- IO_URING_F_MULTISHOT = 4,
- /* executed by io-wq */
- IO_URING_F_IOWQ = 8,
- /* int's last bit, sign checks are usually faster than a bit test */
- IO_URING_F_NONBLOCK = INT_MIN,
-
- /* ctx state flags, for URING_CMD */
- IO_URING_F_SQE128 = (1 << 8),
- IO_URING_F_CQE32 = (1 << 9),
- IO_URING_F_IOPOLL = (1 << 10),
-
- /* set when uring wants to cancel a previously issued command */
- IO_URING_F_CANCEL = (1 << 11),
- IO_URING_F_COMPAT = (1 << 12),
-};
-
-/* 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;
- };
- 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);
struct sock *io_uring_get_socket(struct file *file);
void __io_uring_cancel(bool cancel_all);
void __io_uring_free(struct task_struct *tsk);
void io_uring_unreg_ringfd(void);
const char *io_uring_get_opcode(u8 opcode);
-void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd,
- void (*task_work_cb)(struct io_uring_cmd *, unsigned),
- unsigned flags);
-/* users should follow semantics of IOU_F_TWQ_LAZY_WAKE */
-void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd,
- void (*task_work_cb)(struct io_uring_cmd *, unsigned));
-
-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);
-}
+int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags);
static inline void io_uring_files_cancel(void)
{
@@ -89,28 +31,7 @@ static inline void io_uring_free(struct task_struct *tsk)
if (tsk->io_uring)
__io_uring_free(tsk);
}
-int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags);
-void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
- unsigned int issue_flags);
-struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd);
#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_complete_in_task(struct io_uring_cmd *ioucmd,
- void (*task_work_cb)(struct io_uring_cmd *, unsigned))
-{
-}
-static inline void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd,
- void (*task_work_cb)(struct io_uring_cmd *, unsigned))
-{
-}
static inline struct sock *io_uring_get_socket(struct file *file)
{
return NULL;
@@ -133,14 +54,6 @@ static inline int io_uring_cmd_sock(struct io_uring_cmd *cmd,
{
return -EOPNOTSUPP;
}
-static inline void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
- unsigned int issue_flags)
-{
-}
-static inline struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd)
-{
- return NULL;
-}
#endif
#endif
diff --git a/include/linux/io_uring/cmd.h b/include/linux/io_uring/cmd.h
new file mode 100644
index 000000000000..62fcfaf6fcc9
--- /dev/null
+++ b/include/linux/io_uring/cmd.h
@@ -0,0 +1,81 @@
+/* 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;
+ };
+ 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);
+/* users should follow semantics of IOU_F_TWQ_LAZY_WAKE */
+void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd,
+ void (*task_work_cb)(struct io_uring_cmd *, unsigned));
+
+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);
+}
+
+void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
+ unsigned int issue_flags);
+struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd);
+
+#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_complete_in_task(struct io_uring_cmd *ioucmd,
+ void (*task_work_cb)(struct io_uring_cmd *, unsigned))
+{
+}
+static inline void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd,
+ void (*task_work_cb)(struct io_uring_cmd *, unsigned))
+{
+}
+static inline void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
+ unsigned int issue_flags)
+{
+}
+static inline struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd)
+{
+ return NULL;
+}
+#endif
+
+#endif /* _LINUX_IO_URING_CMD_H */
diff --git a/include/linux/io_uring_types.h b/include/linux/io_uring_types.h
index d3009d56af0b..0bcecb734af3 100644
--- a/include/linux/io_uring_types.h
+++ b/include/linux/io_uring_types.h
@@ -7,6 +7,26 @@
#include <linux/llist.h>
#include <uapi/linux/io_uring.h>
+enum io_uring_cmd_flags {
+ IO_URING_F_COMPLETE_DEFER = 1,
+ IO_URING_F_UNLOCKED = 2,
+ /* the request is executed from poll, it should not be freed */
+ IO_URING_F_MULTISHOT = 4,
+ /* executed by io-wq */
+ IO_URING_F_IOWQ = 8,
+ /* int's last bit, sign checks are usually faster than a bit test */
+ IO_URING_F_NONBLOCK = INT_MIN,
+
+ /* ctx state flags, for URING_CMD */
+ IO_URING_F_SQE128 = (1 << 8),
+ IO_URING_F_CQE32 = (1 << 9),
+ IO_URING_F_IOPOLL = (1 << 10),
+
+ /* set when uring wants to cancel a previously issued command */
+ IO_URING_F_CANCEL = (1 << 11),
+ IO_URING_F_COMPAT = (1 << 12),
+};
+
struct io_wq_work_node {
struct io_wq_work_node *next;
};
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index ed254076c723..6ffd7216393b 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -70,6 +70,7 @@
#include <linux/fadvise.h>
#include <linux/task_work.h>
#include <linux/io_uring.h>
+#include <linux/io_uring/cmd.h>
#include <linux/audit.h>
#include <linux/security.h>
#include <asm/shmparam.h>
diff --git a/io_uring/rw.c b/io_uring/rw.c
index 64390d4e20c1..4943d683508b 100644
--- a/io_uring/rw.c
+++ b/io_uring/rw.c
@@ -10,7 +10,7 @@
#include <linux/poll.h>
#include <linux/nospec.h>
#include <linux/compat.h>
-#include <linux/io_uring.h>
+#include <linux/io_uring/cmd.h>
#include <uapi/linux/io_uring.h>
diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c
index acbc2924ecd2..4ed0c66e3aae 100644
--- a/io_uring/uring_cmd.c
+++ b/io_uring/uring_cmd.c
@@ -2,7 +2,7 @@
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/file.h>
-#include <linux/io_uring.h>
+#include <linux/io_uring/cmd.h>
#include <linux/security.h>
#include <linux/nospec.h>
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index feda711c6b7b..17ec5e109aec 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -91,7 +91,7 @@
#include <uapi/linux/mount.h>
#include <linux/fsnotify.h>
#include <linux/fanotify.h>
-#include <linux/io_uring.h>
+#include <linux/io_uring/cmd.h>
#include "avc.h"
#include "objsec.h"
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 65130a791f57..2cdaa46088a0 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -42,7 +42,7 @@
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
#include <linux/watch_queue.h>
-#include <linux/io_uring.h>
+#include <linux/io_uring/cmd.h>
#include "smack.h"
#define TRANS_TRUE "TRUE"
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/3] io_uring/cmd: inline io_uring_cmd_do_in_task_lazy
2023-12-01 0:57 [PATCH v2 0/3] clean up io_uring cmd header structure Pavel Begunkov
2023-12-01 0:57 ` [PATCH v2 1/3] io_uring: split out cmd api into a separate header Pavel Begunkov
@ 2023-12-01 0:57 ` Pavel Begunkov
2023-12-03 13:47 ` Ming Lei
2023-12-01 0:57 ` [PATCH v2 3/3] io_uring/cmd: inline io_uring_cmd_get_task Pavel Begunkov
2023-12-03 15:22 ` [PATCH v2 0/3] clean up io_uring cmd header structure Jens Axboe
3 siblings, 1 reply; 8+ messages in thread
From: Pavel Begunkov @ 2023-12-01 0:57 UTC (permalink / raw)
To: io-uring
Cc: Jens Axboe, asml.silence, linux-block, ming.lei, joshi.k,
linux-security-module, selinux, Paul Moore
Now as we can easily include io_uring_types.h, move IOU_F_TWQ_LAZY_WAKE
and inline io_uring_cmd_do_in_task_lazy().
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
include/linux/io_uring/cmd.h | 31 ++++++++++++++++---------------
include/linux/io_uring_types.h | 11 +++++++++++
io_uring/io_uring.h | 10 ----------
io_uring/uring_cmd.c | 7 -------
4 files changed, 27 insertions(+), 32 deletions(-)
diff --git a/include/linux/io_uring/cmd.h b/include/linux/io_uring/cmd.h
index 62fcfaf6fcc9..ee9b3bc3a4af 100644
--- a/include/linux/io_uring/cmd.h
+++ b/include/linux/io_uring/cmd.h
@@ -36,15 +36,6 @@ void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2,
void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd,
void (*task_work_cb)(struct io_uring_cmd *, unsigned),
unsigned flags);
-/* users should follow semantics of IOU_F_TWQ_LAZY_WAKE */
-void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd,
- void (*task_work_cb)(struct io_uring_cmd *, unsigned));
-
-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);
-}
void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
unsigned int issue_flags);
@@ -60,12 +51,9 @@ 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_complete_in_task(struct io_uring_cmd *ioucmd,
- void (*task_work_cb)(struct io_uring_cmd *, unsigned))
-{
-}
-static inline void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd,
- void (*task_work_cb)(struct io_uring_cmd *, unsigned))
+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,
@@ -78,4 +66,17 @@ static inline struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd
}
#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);
+}
+
#endif /* _LINUX_IO_URING_CMD_H */
diff --git a/include/linux/io_uring_types.h b/include/linux/io_uring_types.h
index 0bcecb734af3..8ff4642dc6e3 100644
--- a/include/linux/io_uring_types.h
+++ b/include/linux/io_uring_types.h
@@ -7,6 +7,17 @@
#include <linux/llist.h>
#include <uapi/linux/io_uring.h>
+enum {
+ /*
+ * A hint to not wake right away but delay until there are enough of
+ * tw's queued to match the number of CQEs the task is waiting for.
+ *
+ * Must not be used wirh requests generating more than one CQE.
+ * It's also ignored unless IORING_SETUP_DEFER_TASKRUN is set.
+ */
+ IOU_F_TWQ_LAZY_WAKE = 1,
+};
+
enum io_uring_cmd_flags {
IO_URING_F_COMPLETE_DEFER = 1,
IO_URING_F_UNLOCKED = 2,
diff --git a/io_uring/io_uring.h b/io_uring/io_uring.h
index dc6d779b452b..48ffdb156f73 100644
--- a/io_uring/io_uring.h
+++ b/io_uring/io_uring.h
@@ -15,16 +15,6 @@
#include <trace/events/io_uring.h>
#endif
-enum {
- /*
- * A hint to not wake right away but delay until there are enough of
- * tw's queued to match the number of CQEs the task is waiting for.
- *
- * Must not be used wirh requests generating more than one CQE.
- * It's also ignored unless IORING_SETUP_DEFER_TASKRUN is set.
- */
- IOU_F_TWQ_LAZY_WAKE = 1,
-};
enum {
IOU_OK = 0,
diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c
index 4ed0c66e3aae..94e9de1c24aa 100644
--- a/io_uring/uring_cmd.c
+++ b/io_uring/uring_cmd.c
@@ -78,13 +78,6 @@ void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd,
}
EXPORT_SYMBOL_GPL(__io_uring_cmd_do_in_task);
-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);
-}
-EXPORT_SYMBOL_GPL(io_uring_cmd_do_in_task_lazy);
-
static inline void io_req_set_cqe32_extra(struct io_kiocb *req,
u64 extra1, u64 extra2)
{
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/3] io_uring/cmd: inline io_uring_cmd_get_task
2023-12-01 0:57 [PATCH v2 0/3] clean up io_uring cmd header structure Pavel Begunkov
2023-12-01 0:57 ` [PATCH v2 1/3] io_uring: split out cmd api into a separate header Pavel Begunkov
2023-12-01 0:57 ` [PATCH v2 2/3] io_uring/cmd: inline io_uring_cmd_do_in_task_lazy Pavel Begunkov
@ 2023-12-01 0:57 ` Pavel Begunkov
2023-12-03 13:47 ` Ming Lei
2023-12-03 15:22 ` [PATCH v2 0/3] clean up io_uring cmd header structure Jens Axboe
3 siblings, 1 reply; 8+ messages in thread
From: Pavel Begunkov @ 2023-12-01 0:57 UTC (permalink / raw)
To: io-uring
Cc: Jens Axboe, asml.silence, linux-block, ming.lei, joshi.k,
linux-security-module, selinux, Paul Moore
With io_uring_types.h we see all required definitions to inline
io_uring_cmd_get_task().
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
include/linux/io_uring/cmd.h | 10 +++++-----
io_uring/uring_cmd.c | 6 ------
2 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/include/linux/io_uring/cmd.h b/include/linux/io_uring/cmd.h
index ee9b3bc3a4af..d69b4038aa3e 100644
--- a/include/linux/io_uring/cmd.h
+++ b/include/linux/io_uring/cmd.h
@@ -39,7 +39,6 @@ void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd,
void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
unsigned int issue_flags);
-struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd);
#else
static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw,
@@ -60,10 +59,6 @@ static inline void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
unsigned int issue_flags)
{
}
-static inline struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd)
-{
- return NULL;
-}
#endif
/* users must follow the IOU_F_TWQ_LAZY_WAKE semantics */
@@ -79,4 +74,9 @@ static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd,
__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 */
diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c
index 94e9de1c24aa..34030583b9b2 100644
--- a/io_uring/uring_cmd.c
+++ b/io_uring/uring_cmd.c
@@ -52,12 +52,6 @@ void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
}
EXPORT_SYMBOL_GPL(io_uring_cmd_mark_cancelable);
-struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd)
-{
- return cmd_to_io_kiocb(cmd)->task;
-}
-EXPORT_SYMBOL_GPL(io_uring_cmd_get_task);
-
static void io_uring_cmd_work(struct io_kiocb *req, struct io_tw_state *ts)
{
struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] io_uring: split out cmd api into a separate header
2023-12-01 0:57 ` [PATCH v2 1/3] io_uring: split out cmd api into a separate header Pavel Begunkov
@ 2023-12-03 13:45 ` Ming Lei
0 siblings, 0 replies; 8+ messages in thread
From: Ming Lei @ 2023-12-03 13:45 UTC (permalink / raw)
To: Pavel Begunkov
Cc: io-uring, Jens Axboe, linux-block, joshi.k, linux-security-module,
selinux, Paul Moore
On Fri, Dec 01, 2023 at 12:57:35AM +0000, Pavel Begunkov wrote:
> linux/io_uring.h is slowly becoming a rubbish bin where we put
> anything exposed to other subsystems. For instance, the task exit
> hooks and io_uring cmd infra are completely orthogonal and don't need
> each other's definitions. Start cleaning it up by splitting out all
> command bits into a new header file.
>
> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Looks fine,
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Thanks,
Ming
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/3] io_uring/cmd: inline io_uring_cmd_do_in_task_lazy
2023-12-01 0:57 ` [PATCH v2 2/3] io_uring/cmd: inline io_uring_cmd_do_in_task_lazy Pavel Begunkov
@ 2023-12-03 13:47 ` Ming Lei
0 siblings, 0 replies; 8+ messages in thread
From: Ming Lei @ 2023-12-03 13:47 UTC (permalink / raw)
To: Pavel Begunkov
Cc: io-uring, Jens Axboe, linux-block, joshi.k, linux-security-module,
selinux, Paul Moore
On Fri, Dec 01, 2023 at 12:57:36AM +0000, Pavel Begunkov wrote:
> Now as we can easily include io_uring_types.h, move IOU_F_TWQ_LAZY_WAKE
> and inline io_uring_cmd_do_in_task_lazy().
>
> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Thanks,
Ming
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 3/3] io_uring/cmd: inline io_uring_cmd_get_task
2023-12-01 0:57 ` [PATCH v2 3/3] io_uring/cmd: inline io_uring_cmd_get_task Pavel Begunkov
@ 2023-12-03 13:47 ` Ming Lei
0 siblings, 0 replies; 8+ messages in thread
From: Ming Lei @ 2023-12-03 13:47 UTC (permalink / raw)
To: Pavel Begunkov
Cc: io-uring, Jens Axboe, linux-block, joshi.k, linux-security-module,
selinux, Paul Moore
On Fri, Dec 01, 2023 at 12:57:37AM +0000, Pavel Begunkov wrote:
> With io_uring_types.h we see all required definitions to inline
> io_uring_cmd_get_task().
>
> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Thanks,
Ming
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/3] clean up io_uring cmd header structure
2023-12-01 0:57 [PATCH v2 0/3] clean up io_uring cmd header structure Pavel Begunkov
` (2 preceding siblings ...)
2023-12-01 0:57 ` [PATCH v2 3/3] io_uring/cmd: inline io_uring_cmd_get_task Pavel Begunkov
@ 2023-12-03 15:22 ` Jens Axboe
3 siblings, 0 replies; 8+ messages in thread
From: Jens Axboe @ 2023-12-03 15:22 UTC (permalink / raw)
To: io-uring, Pavel Begunkov
Cc: linux-block, ming.lei, joshi.k, linux-security-module, selinux,
Paul Moore
On Fri, 01 Dec 2023 00:57:34 +0000, Pavel Begunkov wrote:
> Looking at the zc rfc, and how we tend to stuff everything into
> linux/io_uring, start splitting the file before it becomes even more
> monstrous.
>
> V2: fix up includes for security/
> Add new files to MAINTAINERS
>
> [...]
Applied, thanks!
[1/3] io_uring: split out cmd api into a separate header
(no commit info)
[2/3] io_uring/cmd: inline io_uring_cmd_do_in_task_lazy
(no commit info)
[3/3] io_uring/cmd: inline io_uring_cmd_get_task
(no commit info)
Best regards,
--
Jens Axboe
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-12-03 15:22 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-01 0:57 [PATCH v2 0/3] clean up io_uring cmd header structure Pavel Begunkov
2023-12-01 0:57 ` [PATCH v2 1/3] io_uring: split out cmd api into a separate header Pavel Begunkov
2023-12-03 13:45 ` Ming Lei
2023-12-01 0:57 ` [PATCH v2 2/3] io_uring/cmd: inline io_uring_cmd_do_in_task_lazy Pavel Begunkov
2023-12-03 13:47 ` Ming Lei
2023-12-01 0:57 ` [PATCH v2 3/3] io_uring/cmd: inline io_uring_cmd_get_task Pavel Begunkov
2023-12-03 13:47 ` Ming Lei
2023-12-03 15:22 ` [PATCH v2 0/3] clean up io_uring cmd header structure Jens Axboe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.