Commit f49eca21 authored by Jens Axboe's avatar Jens Axboe
Browse files

io_uring: add generic command payload type to struct io_kiocb



Each opcode generally has a command structure in io_kiocb which it can
use to store data associated with that request.

In preparation for having the core layer not know about what's inside
these fields, add a generic io_cmd_data type and put in the union as
well.

Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent dc919caf
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -954,14 +954,27 @@ enum {
};

/*
 * NOTE! Each of the iocb union members has the file pointer
 * 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 io_kiocb {
	union {
		struct file		*file;
		struct io_cmd_data	cmd;
		struct io_rw		rw;
		struct io_poll_iocb	poll;
		struct io_poll_update	poll_update;