[PATCHv10 6/9] io_uring: enable per-io hinting capability
Jens Axboe
axboe at kernel.dk
Wed Nov 6 18:09:53 PST 2024
On 10/29/24 9:19 AM, Keith Busch wrote:
> diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h
> index 0247452837830..6e1985d3b306c 100644
> --- a/include/uapi/linux/io_uring.h
> +++ b/include/uapi/linux/io_uring.h
> @@ -92,6 +92,10 @@ struct io_uring_sqe {
> __u16 addr_len;
> __u16 __pad3[1];
> };
> + struct {
> + __u16 write_hint;
> + __u16 __pad4[1];
> + };
Might make more sense to have this overlap further down, with the
passthrough command. That'd put it solidly out of anything that isn't
passthrough or needs addr3.
> diff --git a/io_uring/rw.c b/io_uring/rw.c
> index 7ce1cbc048faf..b5dea58356d93 100644
> --- a/io_uring/rw.c
> +++ b/io_uring/rw.c
> @@ -279,7 +279,8 @@ static int io_prep_rw(struct io_kiocb *req, const struct io_uring_sqe *sqe,
> rw->kiocb.ki_ioprio = get_current_ioprio();
> }
> rw->kiocb.dio_complete = NULL;
> -
> + if (ddir == ITER_SOURCE)
> + rw->kiocb.ki_write_hint = READ_ONCE(sqe->write_hint);
> rw->addr = READ_ONCE(sqe->addr);
> rw->len = READ_ONCE(sqe->len);
> rw->flags = READ_ONCE(sqe->rw_flags);
Can't we just read it unconditionally? I know it's a write hint, hence
why checking for ITER_SOURCE, but if we can just set it regardless, then
we don't need to branch around that.
--
Jens Axboe
More information about the Linux-nvme
mailing list