Re: [PATCH for-next 3/4] io_uring: grow a field in struct io_uring_cmd

Sagi Grimberg
2022-07-11T17:01:06Z

> Use the leftover space to carve 'next' field that enables linking of
> io_uring_cmd structs. Also introduce a list head and few helpers.
>
> This is in preparation to support nvme-mulitpath, allowing multiple
> uring passthrough commands to be queued.
>
> Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
> ---
> include/linux/io_uring.h | 38 ++++++++++++++++++++++++++++++++++++--
> 1 file changed, 36 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/io_uring.h b/include/linux/io_uring.h
> index 54063d67506b..d734599cbcd7 100644
> --- a/include/linux/io_uring.h
> +++ b/include/linux/io_uring.h
> @@ -22,9 +22,14 @@ struct io_uring_cmd {
> const void *cmd;
> /* callback to defer completions to task context */
> void (*task_work_cb)(struct io_uring_cmd *cmd);
> + struct io_uring_cmd *next;
> u32 cmd_op;
> - u32 pad;
> - u8 pdu[32]; /* available inline for free use */
> + u8 pdu[28]; /* available inline for free use */
> +};

I think io_uring_cmd will at some point become two cachelines and may
not be worth the effort to limit a pdu to 28 bytes...