summaryrefslogtreecommitdiffstats
path: root/io_uring/io_uring.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--io_uring/io_uring.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index f353822436c4..c596ffd92a0a 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -954,14 +954,27 @@ enum {
};
/*
- * NOTE! Each of the iocb union members has the file pointer
- * as the first entry in their struct definition. So you can
- * access the file pointer through any of the sub-structs,
- * or directly as just 'file' in this struct.
+ * Each request type overlays its private data structure on top of this one.
+ * They must not exceed this one in size.
*/
+struct io_cmd_data {
+ struct file *file;
+ /* each command gets 56 bytes of data */
+ __u8 data[56];
+};
+
+#define io_kiocb_to_cmd(req) ((void *) &(req)->cmd)
+
struct io_kiocb {
union {
+ /*
+ * NOTE! Each of the io_kiocb union members has the file pointer
+ * as the first entry in their struct definition. So you can
+ * access the file pointer through any of the sub-structs,
+ * or directly as just 'file' in this struct.
+ */
struct file *file;
+ struct io_cmd_data cmd;
struct io_rw rw;
struct io_poll_iocb poll;
struct io_poll_update poll_update;