All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kanchan Joshi <joshi.k@samsung.com>
To: Stefan Roesch <shr@fb.com>
Cc: io-uring@vger.kernel.org, linux-nvme@lists.infradead.org,
	kernel-team@fb.com, Jens Axboe <axboe@kernel.dk>
Subject: Re: [PATCH v3 08/12] io_uring: overflow processing for CQE32
Date: Tue, 26 Apr 2022 11:58:26 +0530	[thread overview]
Message-ID: <20220426062826.GC14174@test-zns> (raw)
In-Reply-To: <20220425182530.2442911-9-shr@fb.com>

[-- Attachment #1: Type: text/plain, Size: 2102 bytes --]

On Mon, Apr 25, 2022 at 11:25:26AM -0700, Stefan Roesch wrote:
>This adds the overflow processing for large CQE's.
>
>This adds two parameters to the io_cqring_event_overflow function and
>uses these fields to initialize the large CQE fields.
>
>Allocate enough space for large CQE's in the overflow structue. If no
>large CQE's are used, the size of the allocation is unchanged.
>
>The cqe field can have a different size depending if its a large
>CQE or not. To be able to allocate different sizes, the two fields
>in the structure are re-ordered.
>
>Co-developed-by: Jens Axboe <axboe@kernel.dk>
>Signed-off-by: Stefan Roesch <shr@fb.com>
>Signed-off-by: Jens Axboe <axboe@kernel.dk>
>---
> fs/io_uring.c | 31 ++++++++++++++++++++++---------
> 1 file changed, 22 insertions(+), 9 deletions(-)
>
>diff --git a/fs/io_uring.c b/fs/io_uring.c
>index 68b61d2b356d..3630671325ea 100644
>--- a/fs/io_uring.c
>+++ b/fs/io_uring.c
>@@ -220,8 +220,8 @@ struct io_mapped_ubuf {
> struct io_ring_ctx;
>
> struct io_overflow_cqe {
>-	struct io_uring_cqe cqe;
> 	struct list_head list;
>+	struct io_uring_cqe cqe;
> };
>
> struct io_fixed_file {
>@@ -2017,10 +2017,14 @@ static void io_cqring_ev_posted_iopoll(struct io_ring_ctx *ctx)
> static bool __io_cqring_overflow_flush(struct io_ring_ctx *ctx, bool force)
> {
> 	bool all_flushed, posted;
>+	size_t cqe_size = sizeof(struct io_uring_cqe);
>
> 	if (!force && __io_cqring_events(ctx) == ctx->cq_entries)
> 		return false;
>
>+	if (ctx->flags & IORING_SETUP_CQE32)
>+		cqe_size <<= 1;
>+
> 	posted = false;
> 	spin_lock(&ctx->completion_lock);
> 	while (!list_empty(&ctx->cq_overflow_list)) {
>@@ -2032,7 +2036,7 @@ static bool __io_cqring_overflow_flush(struct io_ring_ctx *ctx, bool force)
> 		ocqe = list_first_entry(&ctx->cq_overflow_list,
> 					struct io_overflow_cqe, list);
> 		if (cqe)
>-			memcpy(cqe, &ocqe->cqe, sizeof(*cqe));
>+			memcpy(cqe, &ocqe->cqe, cqe_size);

Maybe a nit, but if we do it this way -
memcpy(cqe, &ocqe->cqe, 
	sizeof(*cqe) << (ctx->flags & IORING_SETUP_CQE32));

we can do away with all previous changes in this function.


[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



  reply	other threads:[~2022-04-26  6:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20220425182557epcas5p2e1b72edf0fcc4c21b2b96a32910a2736@epcas5p2.samsung.com>
2022-04-25 18:25 ` [PATCH v3 00/12] add large CQE support for io-uring Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 01/12] io_uring: support CQE32 in io_uring_cqe Stefan Roesch
2022-04-26  5:22     ` Kanchan Joshi
2022-04-25 18:25   ` [PATCH v3 02/12] io_uring: wire up inline completion path for CQE32 Stefan Roesch
2022-04-26  5:45     ` Kanchan Joshi
2022-04-25 18:25   ` [PATCH v3 03/12] io_uring: change ring size calculation " Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 04/12] io_uring: add CQE32 setup processing Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 05/12] io_uring: add CQE32 completion processing Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 06/12] io_uring: modify io_get_cqe for CQE32 Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 07/12] io_uring: flush completions " Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 08/12] io_uring: overflow processing " Stefan Roesch
2022-04-26  6:28     ` Kanchan Joshi [this message]
2022-04-26 12:53       ` Jens Axboe
2022-04-25 18:25   ` [PATCH v3 09/12] io_uring: add tracing for additional CQE32 fields Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 10/12] io_uring: support CQE32 in /proc info Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 11/12] io_uring: enable CQE32 Stefan Roesch
2022-04-25 18:25   ` [PATCH v3 12/12] io_uring: support CQE32 for nop operation Stefan Roesch
2022-04-25 18:38   ` [PATCH v3 00/12] add large CQE support for io-uring Jens Axboe
2022-04-26 11:37   ` Kanchan Joshi
2022-04-26 12:54     ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220426062826.GC14174@test-zns \
    --to=joshi.k@samsung.com \
    --cc=axboe@kernel.dk \
    --cc=io-uring@vger.kernel.org \
    --cc=kernel-team@fb.com \
    --cc=linux-nvme@lists.infradead.org \
    --cc=shr@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.