From: Stefan Roesch <[email protected]>
To: <[email protected]>, <[email protected]>
Cc: <[email protected]>
Subject: [PATCH v2 00/12] add large CQE support for io-uring
Date: Wed, 20 Apr 2022 12:14:39 -0700 [thread overview]
Message-ID: <[email protected]> (raw)
This adds the large CQE support for io-uring. Large CQE's are 16 bytes longer.
To support the longer CQE's the allocation part is changed and when the CQE is
accessed.
The allocation of the large CQE's is twice as big, so the allocation size is
doubled. The ring size calculation needs to take this into account.
All accesses to the large CQE's need to be shifted by 1 to take the bigger size
of each CQE into account. The existing index manipulation does not need to be
changed and can stay the same.
The setup and the completion processing needs to take the new fields into
account and initialize them. For the completion processing these fields need
to be passed through.
The flush completion processing needs to fill the additional CQE32 fields.
The code for overflows needs to be adapted accordingly: the allocation needs to
take large CQE's into account. This means that the order of the fields in the io
overflow structure needs to be changed and the allocation needs to be enlarged
for big CQE's.
In addition the two new fields need to be copied for large CQE's.
The new fields are added to the tracing statements, so the extra1 and extra2
fields are exposed in tracing. The new fields are also exposed in the /proc
filesystem entry.
For testing purposes the extra1 and extra2 fields are used by the nop operation.
Testing:
The exisiting tests have been run with the following configurations and they all
pass:
- Default config
- Large SQE
- Large CQE
- Large SQE and large CQE.
In addition a new test has been added to liburing to verify that extra1 and extra2
are set as expected for the nop operation.
Note:
To use this patch also the corresponding changes to the client library
liburing are required. A different patch series is sent out for this.
Changes:
V2: - added support for CQE32 in the /proc filesystem entry output function
- the definition of the io_uring_cqe_extra field has been changed
to avoid warning with the /proc changes.
Stefan Roesch (12):
io_uring: support CQE32 in io_uring_cqe
io_uring: wire up inline completion path for CQE32
io_uring: change ring size calculation for CQE32
io_uring: add CQE32 setup processing
io_uring: add CQE32 completion processing
io_uring: modify io_get_cqe for CQE32
io_uring: flush completions for CQE32
io_uring: overflow processing for CQE32
io_uring: add tracing for additional CQE32 fields
io_uring: support CQE32 in /proc info
io_uring: enable CQE32
io_uring: support CQE32 for nop operation
fs/io_uring.c | 224 +++++++++++++++++++++++++++-----
include/trace/events/io_uring.h | 18 ++-
include/uapi/linux/io_uring.h | 12 ++
3 files changed, 220 insertions(+), 34 deletions(-)
base-commit: fd1cf8f1947eb7b009eb79807ec8af0e920fc57b
--
2.30.2
next reply other threads:[~2022-04-20 19:15 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-20 19:14 Stefan Roesch [this message]
2022-04-20 19:14 ` [PATCH v2 01/12] io_uring: support CQE32 in io_uring_cqe Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 02/12] io_uring: wire up inline completion path for CQE32 Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 03/12] io_uring: change ring size calculation " Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 04/12] io_uring: add CQE32 setup processing Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 05/12] io_uring: add CQE32 completion processing Stefan Roesch
2022-04-22 1:34 ` Kanchan Joshi
2022-04-22 21:39 ` Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 06/12] io_uring: modify io_get_cqe for CQE32 Stefan Roesch
2022-04-22 1:25 ` Kanchan Joshi
2022-04-22 23:59 ` Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 07/12] io_uring: flush completions " Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 08/12] io_uring: overflow processing " Stefan Roesch
2022-04-22 2:15 ` Kanchan Joshi
2022-04-22 21:27 ` Stefan Roesch
2022-04-25 10:31 ` Kanchan Joshi
2022-04-20 19:14 ` [PATCH v2 09/12] io_uring: add tracing for additional CQE32 fields Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 10/12] io_uring: support CQE32 in /proc info Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 11/12] io_uring: enable CQE32 Stefan Roesch
2022-04-20 19:14 ` [PATCH v2 12/12] io_uring: support CQE32 for nop operation Stefan Roesch
2022-04-20 22:51 ` [PATCH v2 00/12] add large CQE support for io-uring Jens Axboe
2022-04-21 18:42 ` Pavel Begunkov
2022-04-21 18:49 ` Stefan Roesch
2022-04-21 18:54 ` Jens Axboe
2022-04-21 18:57 ` Pavel Begunkov
2022-04-21 18:59 ` Jens Axboe
2022-04-22 3:09 ` Kanchan Joshi
2022-04-22 5:06 ` Kanchan Joshi
2022-04-22 21:03 ` Stefan Roesch
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 \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox