mbox series

[v3,0/6] aio-posix: split poll check from ready handler

Message ID 20211207132336.36627-1-stefanha@redhat.com (mailing list archive)
Headers show
Series aio-posix: split poll check from ready handler | expand

Message

Stefan Hajnoczi Dec. 7, 2021, 1:23 p.m. UTC
v3:
- Fixed FUSE export aio_set_fd_handler() call that I missed and double-checked
  for any other missing call sites using Coccinelle [Rich]
v2:
- Cleaned up unused return values in nvme and virtio-blk [Stefano]
- Documented try_poll_mode() ready_list argument [Stefano]
- Unified virtio-blk/scsi dataplane and non-dataplane virtqueue handlers [Stefano]

The first patch improves AioContext's adaptive polling execution time
measurement. This can result in better performance because the algorithm makes
better decisions about when to poll versus when to fall back to file descriptor
monitoring.

The remaining patches unify the virtio-blk and virtio-scsi dataplane and
non-dataplane virtqueue handlers. This became possible because the dataplane
handler function now has the same function signature as the non-dataplane
handler function. Stefano Garzarella prompted me to make this refactoring.

Stefan Hajnoczi (6):
  aio-posix: split poll check from ready handler
  virtio: get rid of VirtIOHandleAIOOutput
  virtio-blk: drop unused virtio_blk_handle_vq() return value
  virtio-scsi: prepare virtio_scsi_handle_cmd for dataplane
  virtio: use ->handle_output() instead of ->handle_aio_output()
  virtio: unify dataplane and non-dataplane ->handle_output()

 include/block/aio.h             |  4 +-
 include/hw/virtio/virtio-blk.h  |  2 +-
 include/hw/virtio/virtio.h      |  5 +-
 util/aio-posix.h                |  1 +
 block/curl.c                    | 11 ++--
 block/export/fuse.c             |  4 +-
 block/io_uring.c                | 19 ++++---
 block/iscsi.c                   |  4 +-
 block/linux-aio.c               | 16 +++---
 block/nfs.c                     |  6 +--
 block/nvme.c                    | 51 ++++++++++++-------
 block/ssh.c                     |  4 +-
 block/win32-aio.c               |  4 +-
 hw/block/dataplane/virtio-blk.c | 16 +-----
 hw/block/virtio-blk.c           | 14 ++----
 hw/scsi/virtio-scsi-dataplane.c | 60 +++-------------------
 hw/scsi/virtio-scsi.c           |  2 +-
 hw/virtio/virtio.c              | 73 +++++++++------------------
 hw/xen/xen-bus.c                |  6 +--
 io/channel-command.c            |  6 ++-
 io/channel-file.c               |  3 +-
 io/channel-socket.c             |  3 +-
 migration/rdma.c                |  8 +--
 tests/unit/test-aio.c           |  4 +-
 util/aio-posix.c                | 89 +++++++++++++++++++++++++--------
 util/aio-win32.c                |  4 +-
 util/async.c                    | 10 +++-
 util/main-loop.c                |  4 +-
 util/qemu-coroutine-io.c        |  5 +-
 util/vhost-user-server.c        | 11 ++--
 30 files changed, 219 insertions(+), 230 deletions(-)

Comments

Stefano Garzarella Dec. 9, 2021, 10:16 a.m. UTC | #1
On Tue, Dec 07, 2021 at 01:23:30PM +0000, Stefan Hajnoczi wrote:
>v3:
>- Fixed FUSE export aio_set_fd_handler() call that I missed and double-checked
>  for any other missing call sites using Coccinelle [Rich]
>v2:
>- Cleaned up unused return values in nvme and virtio-blk [Stefano]
>- Documented try_poll_mode() ready_list argument [Stefano]
>- Unified virtio-blk/scsi dataplane and non-dataplane virtqueue handlers [Stefano]
>
>The first patch improves AioContext's adaptive polling execution time
>measurement. This can result in better performance because the algorithm makes
>better decisions about when to poll versus when to fall back to file descriptor
>monitoring.
>
>The remaining patches unify the virtio-blk and virtio-scsi dataplane and
>non-dataplane virtqueue handlers. This became possible because the dataplane
>handler function now has the same function signature as the non-dataplane
>handler function. Stefano Garzarella prompted me to make this refactoring.

Great clean up! Thanks for doing this, everything LGTM:

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Stefan Hajnoczi Dec. 13, 2021, 4:01 p.m. UTC | #2
On Tue, Dec 07, 2021 at 01:23:30PM +0000, Stefan Hajnoczi wrote:
> v3:
> - Fixed FUSE export aio_set_fd_handler() call that I missed and double-checked
>   for any other missing call sites using Coccinelle [Rich]
> v2:
> - Cleaned up unused return values in nvme and virtio-blk [Stefano]
> - Documented try_poll_mode() ready_list argument [Stefano]
> - Unified virtio-blk/scsi dataplane and non-dataplane virtqueue handlers [Stefano]
> 
> The first patch improves AioContext's adaptive polling execution time
> measurement. This can result in better performance because the algorithm makes
> better decisions about when to poll versus when to fall back to file descriptor
> monitoring.
> 
> The remaining patches unify the virtio-blk and virtio-scsi dataplane and
> non-dataplane virtqueue handlers. This became possible because the dataplane
> handler function now has the same function signature as the non-dataplane
> handler function. Stefano Garzarella prompted me to make this refactoring.
> 
> Stefan Hajnoczi (6):
>   aio-posix: split poll check from ready handler
>   virtio: get rid of VirtIOHandleAIOOutput
>   virtio-blk: drop unused virtio_blk_handle_vq() return value
>   virtio-scsi: prepare virtio_scsi_handle_cmd for dataplane
>   virtio: use ->handle_output() instead of ->handle_aio_output()
>   virtio: unify dataplane and non-dataplane ->handle_output()
> 
>  include/block/aio.h             |  4 +-
>  include/hw/virtio/virtio-blk.h  |  2 +-
>  include/hw/virtio/virtio.h      |  5 +-
>  util/aio-posix.h                |  1 +
>  block/curl.c                    | 11 ++--
>  block/export/fuse.c             |  4 +-
>  block/io_uring.c                | 19 ++++---
>  block/iscsi.c                   |  4 +-
>  block/linux-aio.c               | 16 +++---
>  block/nfs.c                     |  6 +--
>  block/nvme.c                    | 51 ++++++++++++-------
>  block/ssh.c                     |  4 +-
>  block/win32-aio.c               |  4 +-
>  hw/block/dataplane/virtio-blk.c | 16 +-----
>  hw/block/virtio-blk.c           | 14 ++----
>  hw/scsi/virtio-scsi-dataplane.c | 60 +++-------------------
>  hw/scsi/virtio-scsi.c           |  2 +-
>  hw/virtio/virtio.c              | 73 +++++++++------------------
>  hw/xen/xen-bus.c                |  6 +--
>  io/channel-command.c            |  6 ++-
>  io/channel-file.c               |  3 +-
>  io/channel-socket.c             |  3 +-
>  migration/rdma.c                |  8 +--
>  tests/unit/test-aio.c           |  4 +-
>  util/aio-posix.c                | 89 +++++++++++++++++++++++++--------
>  util/aio-win32.c                |  4 +-
>  util/async.c                    | 10 +++-
>  util/main-loop.c                |  4 +-
>  util/qemu-coroutine-io.c        |  5 +-
>  util/vhost-user-server.c        | 11 ++--
>  30 files changed, 219 insertions(+), 230 deletions(-)
> 
> -- 
> 2.33.1
> 
> 

Thanks, applied to my block-next tree:
https://gitlab.com/stefanha/qemu/commits/block-next

Stefan