All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Fam Zheng <fam@euphon.net>, Kevin Wolf <kwolf@redhat.com>,
	qemu-block@nongnu.org, oleksandr@redhat.com,
	Julia Suvorova <jusual@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Max Reitz <mreitz@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Aarushi Mehta <mehta.aaru20@gmail.com>
Subject: Re: [PATCH v3 00/15] io_uring: add Linux io_uring AIO engine
Date: Fri, 10 Jan 2020 09:55:52 +0000	[thread overview]
Message-ID: <20200110095552.GC573283@stefanha-x1.localdomain> (raw)
In-Reply-To: <20191218163228.1613099-1-stefanha@redhat.com>

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

On Wed, Dec 18, 2019 at 04:32:13PM +0000, Stefan Hajnoczi wrote:
> v12:
>  * Reword BlockdevAioOptions QAPI schema commit description [Markus]
>  * Increase QAPI "Since: 4.2" to "Since: 5.0"
>  * Explain rationale for io_uring stubs in commit description [Kevin]
>  * Tried to use file.aio=io_uring instead of BDRV_O_IO_URING but it's really
>    hard to make qemu-iotests work.  Tests build blkdebug: and other graphs so
>    the syntax for io_uring is dependent on the test case.  I scrapped this
>    approach and went back to a global flag.
> 
> v11:
>  * Drop fd registration because it breaks QEMU's file locking and will need to
>    be resolved in a separate patch series
>  * Drop line-wrapping changes that accidentally broke several qemu-iotests
> 
> v10:
>  * Dropped kernel submission queue polling, it requires root and has additional
>    limitations.  It should be benchmarked and considered for inclusion later,
>    maybe even together with kernel side changes.
>  * Add io_uring_register_files() return value to trace_luring_fd_register()
>  * Fix indentation in luring_fd_unregister()
>  * Set s->fd_reg.fd_array to NULL after g_free() to avoid dangling pointers
>  * Simplify fd registration code
>  * Add luring_fd_unregister() and call it from file-posix.c to prevent
>    fd leaks
>  * Add trace_luring_fd_unregister() trace event
>  * Add missing space to qemu-img command-line documentation
>  * Update MAINTAINERS file [Julia]
>  * Rename MAX_EVENTS to MAX_ENTRIES [Julia]
>  * Define ioq_submit() before callers so the prototype isn't necessary [Julia]
>  * Declare variables at the beginning of the block in luring_init() [Julia]
> 
> This patch series is based on Aarushi Mehta's v9 patch series written for
> Google Summer of Code 2019:
> 
>   https://lists.gnu.org/archive/html/qemu-devel/2019-08/msg00179.html
> 
> It adds a new AIO engine that uses the new Linux io_uring API.  This is the
> successor to Linux AIO with a number of improvements:
> 1. Both O_DIRECT and buffered I/O work
> 2. fdatasync(2) is supported (no need for a separate thread pool!)
> 3. True async behavior so the syscall doesn't block (Linux AIO got there to some degree...)
> 4. Advanced performance optimizations are available (file registration, memory
>    buffer registration, completion polling, submission polling).
> 
> Since Aarushi has been busy, I have taken up this patch series.  Booting a
> guest works with -drive aio=io_uring and -drive aio=io_uring,cache=none with a
> raw file on XFS.
> 
> I currently recommend using -drive aio=io_uring only with host block devices
> (like NVMe devices).  As of Linux v5.4-rc1 I still hit kernel bugs when using
> image files on ext4 or XFS.
> 
> Aarushi Mehta (15):
>   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
> 
>  MAINTAINERS                   |   9 +
>  block.c                       |  22 ++
>  block/Makefile.objs           |   3 +
>  block/file-posix.c            |  95 ++++++--
>  block/io_uring.c              | 433 ++++++++++++++++++++++++++++++++++
>  block/trace-events            |  12 +
>  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              |   4 +-
>  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        |   2 +-
>  tests/qemu-iotests/058        |   2 +-
>  tests/qemu-iotests/089        |   4 +-
>  tests/qemu-iotests/091        |   4 +-
>  tests/qemu-iotests/109        |   2 +-
>  tests/qemu-iotests/147        |   5 +-
>  tests/qemu-iotests/181        |   8 +-
>  tests/qemu-iotests/183        |   4 +-
>  tests/qemu-iotests/185        |  10 +-
>  tests/qemu-iotests/200        |   2 +-
>  tests/qemu-iotests/201        |   8 +-
>  tests/qemu-iotests/check      |  15 +-
>  tests/qemu-iotests/common.rc  |  14 ++
>  tests/qemu-iotests/iotests.py |  12 +-
>  util/async.c                  |  36 +++
>  35 files changed, 793 insertions(+), 76 deletions(-)
>  create mode 100644 block/io_uring.c
>  create mode 100644 stubs/io_uring.c

Ping?  Any further comments?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  parent reply	other threads:[~2020-01-10  9:58 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-18 16:32 [PATCH v3 00/15] io_uring: add Linux io_uring AIO engine Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 01/15] configure: permit use of io_uring Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 02/15] qapi/block-core: add option for io_uring Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 03/15] block/block: add BDRV flag " Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 04/15] block/io_uring: implements interfaces " Stefan Hajnoczi
2020-01-13 11:24   ` Stefano Garzarella
2020-01-14 10:40     ` Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 05/15] stubs: add stubs for io_uring interface Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 06/15] util/async: add aio interfaces for io_uring Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 07/15] blockdev: adds bdrv_parse_aio to use io_uring Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 08/15] block/file-posix.c: extend " Stefan Hajnoczi
2020-01-13 11:49   ` Stefano Garzarella
2020-01-14 10:37     ` Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 09/15] block: add trace events for io_uring Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 10/15] block/io_uring: adds userspace completion polling Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 11/15] qemu-io: adds option to use aio engine Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 12/15] qemu-img: adds option to use aio engine for benchmarking Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 13/15] qemu-nbd: adds option for aio engines Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 14/15] tests/qemu-iotests: enable testing with aio options Stefan Hajnoczi
2019-12-18 16:32 ` [PATCH v3 15/15] tests/qemu-iotests: use AIOMODE with various tests Stefan Hajnoczi
2020-01-10  9:55 ` Stefan Hajnoczi [this message]
2020-01-13 11:58 ` [PATCH v3 00/15] io_uring: add Linux io_uring AIO engine Stefano Garzarella

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=20200110095552.GC573283@stefanha-x1.localdomain \
    --to=stefanha@redhat.com \
    --cc=armbru@redhat.com \
    --cc=fam@euphon.net \
    --cc=jusual@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mehta.aaru20@gmail.com \
    --cc=mreitz@redhat.com \
    --cc=oleksandr@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.