From: Stefan Roesch Date: Tue, 26 Apr 2022 18:21:29 +0000 (-0700) Subject: io_uring: flush completions for CQE32 X-Git-Tag: v5.19-rc1~247^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0e2e5c47fed68ce203f2c6978188cc49a2a96e26;p=thirdparty%2Fkernel%2Flinux.git io_uring: flush completions for CQE32 This flushes the completions according to their CQE type: the same processing is done for the default CQE size, but for large CQE's the extra1 and extra2 fields are filled in. Signed-off-by: Stefan Roesch Reviewed-by: Kanchan Joshi Link: https://lore.kernel.org/r/20220426182134.136504-8-shr@fb.com Signed-off-by: Jens Axboe --- diff --git a/fs/io_uring.c b/fs/io_uring.c index 3915251bfecab..fa3db24e80510 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -3056,8 +3056,12 @@ static void __io_submit_flush_completions(struct io_ring_ctx *ctx) struct io_kiocb *req = container_of(node, struct io_kiocb, comp_list); - if (!(req->flags & REQ_F_CQE_SKIP)) - __io_fill_cqe_req_filled(ctx, req); + if (!(req->flags & REQ_F_CQE_SKIP)) { + if (!(ctx->flags & IORING_SETUP_CQE32)) + __io_fill_cqe_req_filled(ctx, req); + else + __io_fill_cqe32_req_filled(ctx, req); + } } io_commit_cqring(ctx);