From: Aarushi Mehta <mehta.aaru20@gmail.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <fam@euphon.net>,
Sergio Lopez <slp@redhat.com>,
qemu-block@nongnu.org, Markus Armbruster <armbru@redhat.com>,
Maxim Levitsky <mlevitsk@redhat.com>,
saket.sinha89@gmail.com, Max Reitz <mreitz@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Stefan Hajnoczi <stefan@redhat.com>,
Julia Suvorova <jusual@mail.ru>,
Aarushi Mehta <mehta.aaru20@gmail.com>
Subject: [Qemu-devel] [PATCH v8 00/16] Add support for io_uring
Date: Tue, 30 Jul 2019 23:04:25 +0530 [thread overview]
Message-ID: <20190730173441.26486-1-mehta.aaru20@gmail.com> (raw)
This patch series adds support for the newly developed io_uring Linux AIO
interface. Linux io_uring is faster than Linux's AIO asynchronous I/O code,
offers efficient buffered asynchronous I/O support, the ability to do I/O
without performing a system call via polled I/O, and other efficiency enhancements.
Testing it requires a host kernel (5.1+) and the liburing library.
Use the option -drive aio=io_uring to enable it.
Benchmarks for the system at https://github.com/rooshm/benchmarks
io_uring has similar performance as libaio but supports cache=writeback.
Further performance enhancement will be implemented
There is currently an -EIO output when guests are booted from io_uring on ext4,
the error is reported upstream.
https://lore.kernel.org/linux-block/20190723080701.GA3198@stefanha-x1.localdomain/
v8:
- adds fd_registration
v7:
- completes io-tests options
- misc fixes
v6:
- add slow path for short-read
- hooks up fsync
- enables qemu-iotests with aio options
- adds bdrv_parse_aio
v5:
- Adds completion polling
- Extends qemu-io
- Adds qemu-iotest
v4:
- Add error handling
- Add trace events
- Remove aio submission based code
Aarushi Mehta (16):
configure: permit use of io_uring
qapi/block-core: add option for io_uring
block/block: add BDRV flag for io_uring
block/io_uring: implements interfaces for io_uring
stubs: add stubs for io_uring interface
util/async: add aio interfaces for io_uring
blockdev: adds bdrv_parse_aio to use io_uring
block/file-posix.c: extend to use io_uring
block: add trace events for io_uring
block/io_uring: adds userspace completion polling
qemu-io: adds option to use aio engine
qemu-img: adds option to use aio engine for benchmarking
qemu-nbd: adds option for aio engines
tests/qemu-iotests: enable testing with aio options
tests/qemu-iotests: use AIOMODE with various tests
block/io_uring: adds fd registration
MAINTAINERS | 8 +
block.c | 22 ++
block/Makefile.objs | 3 +
block/file-posix.c | 99 +++++--
block/io_uring.c | 522 ++++++++++++++++++++++++++++++++++
block/trace-events | 13 +
blockdev.c | 12 +-
configure | 27 ++
include/block/aio.h | 16 +-
include/block/block.h | 2 +
include/block/raw-aio.h | 12 +
qapi/block-core.json | 4 +-
qemu-img-cmds.hx | 2 +-
qemu-img.c | 11 +-
qemu-img.texi | 5 +-
qemu-io.c | 25 +-
qemu-nbd.c | 12 +-
qemu-nbd.texi | 4 +-
stubs/Makefile.objs | 1 +
stubs/io_uring.c | 32 +++
tests/qemu-iotests/028 | 3 +-
tests/qemu-iotests/058 | 2 +-
tests/qemu-iotests/089 | 4 +-
tests/qemu-iotests/091 | 7 +-
tests/qemu-iotests/109 | 3 +-
tests/qemu-iotests/147 | 5 +-
tests/qemu-iotests/181 | 10 +-
tests/qemu-iotests/183 | 7 +-
tests/qemu-iotests/185 | 17 +-
tests/qemu-iotests/200 | 3 +-
tests/qemu-iotests/201 | 10 +-
tests/qemu-iotests/check | 15 +-
tests/qemu-iotests/common.rc | 14 +
tests/qemu-iotests/iotests.py | 9 +-
util/async.c | 36 +++
35 files changed, 899 insertions(+), 78 deletions(-)
create mode 100644 block/io_uring.c
create mode 100644 stubs/io_uring.c
--
2.21.0
next reply other threads:[~2019-07-30 17:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-30 17:34 Aarushi Mehta [this message]
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 01/16] configure: permit use of io_uring Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 02/16] qapi/block-core: add option for io_uring Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 03/16] block/block: add BDRV flag " Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 04/16] block/io_uring: implements interfaces " Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 05/16] stubs: add stubs for io_uring interface Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 06/16] util/async: add aio interfaces for io_uring Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 07/16] blockdev: adds bdrv_parse_aio to use io_uring Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 08/16] block/file-posix.c: extend " Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 09/16] block: add trace events for io_uring Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 10/16] block/io_uring: adds userspace completion polling Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 11/16] qemu-io: adds option to use aio engine Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 12/16] qemu-img: adds option to use aio engine for benchmarking Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 13/16] qemu-nbd: adds option for aio engines Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 14/16] tests/qemu-iotests: enable testing with aio options Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 15/16] tests/qemu-iotests: use AIOMODE with various tests Aarushi Mehta
2019-07-30 17:34 ` [Qemu-devel] [PATCH v8 16/16] block/io_uring: adds fd registration Aarushi Mehta
2019-07-31 10:26 ` Stefan Hajnoczi
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=20190730173441.26486-1-mehta.aaru20@gmail.com \
--to=mehta.aaru20@gmail.com \
--cc=armbru@redhat.com \
--cc=fam@euphon.net \
--cc=jusual@mail.ru \
--cc=kwolf@redhat.com \
--cc=mlevitsk@redhat.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=saket.sinha89@gmail.com \
--cc=slp@redhat.com \
--cc=stefan@redhat.com \
--cc=stefanha@redhat.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.