[PULL 00/22] Block layer patches

There is a newer version of this series
include/block/aio.h                         |   5 +-
include/block/raw-aio.h                     |   8 +-
include/hw/scsi/scsi.h                      |   8 +-
include/hw/virtio/iothread-vq-mapping.h     |  45 +++
include/hw/virtio/virtio-scsi.h             |  15 +-
include/system/block-backend-global-state.h |   1 -
include/system/dma.h                        |   3 +-
util/aio-posix.h                            |   1 +
block/block-backend.c                       |  12 -
block/file-posix.c                          |  26 +-
block/io.c                                  |   4 +
block/io_uring.c                            |  13 +-
block/linux-aio.c                           |  24 +-
block/snapshot.c                            |   1 +
hw/block/virtio-blk.c                       | 132 +-------
hw/ide/core.c                               |   3 +-
hw/ide/macio.c                              |   3 +-
hw/scsi/scsi-bus.c                          | 121 +++++--
hw/scsi/scsi-disk.c                         |  24 +-
hw/scsi/virtio-scsi-dataplane.c             | 103 ++++--
hw/scsi/virtio-scsi.c                       | 502 ++++++++++++++++------------
hw/virtio/iothread-vq-mapping.c             | 131 ++++++++
system/dma-helpers.c                        |   8 +-
util/aio-posix.c                            | 114 ++++---
util/async.c                                |   1 -
hw/virtio/meson.build                       |   1 +
meson.build                                 |   4 +
tests/qemu-iotests/tests/qsd-migrate        |   2 +-
28 files changed, 803 insertions(+), 512 deletions(-)
create mode 100644 include/hw/virtio/iothread-vq-mapping.h
create mode 100644 hw/virtio/iothread-vq-mapping.c
[PULL 00/22] Block layer patches
Posted by Kevin Wolf 3 weeks ago
The following changes since commit 825b96dbcee23d134b691fc75618b59c5f53da32:

  Merge tag 'migration-20250310-pull-request' of https://gitlab.com/farosas/qemu into staging (2025-03-11 09:32:07 +0800)

are available in the Git repository at:

  https://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to a93c04f3cbe690877b3297a9df4767aa811fcd97:

  virtio-scsi: only expose cmd vqs via iothread-vq-mapping (2025-03-11 15:49:22 +0100)

----------------------------------------------------------------
Block layer patches

- virtio-scsi: add iothread-vq-mapping parameter
- Improve writethrough performance
- Fix missing zero init in bdrv_snapshot_goto()
- Code cleanup and iotests fixes

----------------------------------------------------------------
Kevin Wolf (8):
      block: Remove unused blk_op_is_blocked()
      block: Zero block driver state before reopening
      file-posix: Support FUA writes
      block/io: Ignore FUA with cache.no-flush=on
      aio: Create AioPolledEvent
      aio-posix: Factor out adjust_polling_time()
      aio-posix: Separate AioPolledEvent per AioHandler
      aio-posix: Adjust polling time also for new handlers

Stefan Hajnoczi (13):
      scsi-disk: drop unused SCSIDiskState->bh field
      dma: use current AioContext for dma_blk_io()
      scsi: track per-SCSIRequest AioContext
      scsi: introduce requests_lock
      virtio-scsi: introduce event and ctrl virtqueue locks
      virtio-scsi: protect events_dropped field
      virtio-scsi: perform TMFs in appropriate AioContexts
      virtio-blk: extract cleanup_iothread_vq_mapping() function
      virtio-blk: tidy up iothread_vq_mapping functions
      virtio: extract iothread-vq-mapping.h API
      virtio-scsi: add iothread-vq-mapping parameter
      virtio-scsi: handle ctrl virtqueue in main loop
      virtio-scsi: only expose cmd vqs via iothread-vq-mapping

Thomas Huth (1):
      iotests: Limit qsd-migrate to working formats

 include/block/aio.h                         |   5 +-
 include/block/raw-aio.h                     |   8 +-
 include/hw/scsi/scsi.h                      |   8 +-
 include/hw/virtio/iothread-vq-mapping.h     |  45 +++
 include/hw/virtio/virtio-scsi.h             |  15 +-
 include/system/block-backend-global-state.h |   1 -
 include/system/dma.h                        |   3 +-
 util/aio-posix.h                            |   1 +
 block/block-backend.c                       |  12 -
 block/file-posix.c                          |  26 +-
 block/io.c                                  |   4 +
 block/io_uring.c                            |  13 +-
 block/linux-aio.c                           |  24 +-
 block/snapshot.c                            |   1 +
 hw/block/virtio-blk.c                       | 132 +-------
 hw/ide/core.c                               |   3 +-
 hw/ide/macio.c                              |   3 +-
 hw/scsi/scsi-bus.c                          | 121 +++++--
 hw/scsi/scsi-disk.c                         |  24 +-
 hw/scsi/virtio-scsi-dataplane.c             | 103 ++++--
 hw/scsi/virtio-scsi.c                       | 502 ++++++++++++++++------------
 hw/virtio/iothread-vq-mapping.c             | 131 ++++++++
 system/dma-helpers.c                        |   8 +-
 util/aio-posix.c                            | 114 ++++---
 util/async.c                                |   1 -
 hw/virtio/meson.build                       |   1 +
 meson.build                                 |   4 +
 tests/qemu-iotests/tests/qsd-migrate        |   2 +-
 28 files changed, 803 insertions(+), 512 deletions(-)
 create mode 100644 include/hw/virtio/iothread-vq-mapping.h
 create mode 100644 hw/virtio/iothread-vq-mapping.c
Re: [PULL 00/22] Block layer patches
Posted by Stefan Hajnoczi 2 weeks, 6 days ago
On Wed, Mar 12, 2025 at 12:06 AM Kevin Wolf <kwolf@redhat.com> wrote:
>
> The following changes since commit 825b96dbcee23d134b691fc75618b59c5f53da32:
>
>   Merge tag 'migration-20250310-pull-request' of https://gitlab.com/farosas/qemu into staging (2025-03-11 09:32:07 +0800)
>
> are available in the Git repository at:
>
>   https://repo.or.cz/qemu/kevin.git tags/for-upstream
>
> for you to fetch changes up to a93c04f3cbe690877b3297a9df4767aa811fcd97:
>
>   virtio-scsi: only expose cmd vqs via iothread-vq-mapping (2025-03-11 15:49:22 +0100)
>
> ----------------------------------------------------------------
> Block layer patches
>
> - virtio-scsi: add iothread-vq-mapping parameter
> - Improve writethrough performance
> - Fix missing zero init in bdrv_snapshot_goto()
> - Code cleanup and iotests fixes

The following CI failures came up:
1. laio_has_fua() is missing on some host OSes:
https://gitlab.com/qemu-project/qemu/-/jobs/9380928997#L3369
2. io_uring_prep_writev2() without #ifdef HAVE_IO_PREP_PWRITEV2:
https://gitlab.com/qemu-project/qemu/-/jobs/9380928883#L2515
3. qemu-iotests 051:
https://gitlab.com/qemu-project/qemu/-/jobs/9380928853#L4519

Please send a v2 pull request. Thanks!

Stefan

>
> ----------------------------------------------------------------
> Kevin Wolf (8):
>       block: Remove unused blk_op_is_blocked()
>       block: Zero block driver state before reopening
>       file-posix: Support FUA writes
>       block/io: Ignore FUA with cache.no-flush=on
>       aio: Create AioPolledEvent
>       aio-posix: Factor out adjust_polling_time()
>       aio-posix: Separate AioPolledEvent per AioHandler
>       aio-posix: Adjust polling time also for new handlers
>
> Stefan Hajnoczi (13):
>       scsi-disk: drop unused SCSIDiskState->bh field
>       dma: use current AioContext for dma_blk_io()
>       scsi: track per-SCSIRequest AioContext
>       scsi: introduce requests_lock
>       virtio-scsi: introduce event and ctrl virtqueue locks
>       virtio-scsi: protect events_dropped field
>       virtio-scsi: perform TMFs in appropriate AioContexts
>       virtio-blk: extract cleanup_iothread_vq_mapping() function
>       virtio-blk: tidy up iothread_vq_mapping functions
>       virtio: extract iothread-vq-mapping.h API
>       virtio-scsi: add iothread-vq-mapping parameter
>       virtio-scsi: handle ctrl virtqueue in main loop
>       virtio-scsi: only expose cmd vqs via iothread-vq-mapping
>
> Thomas Huth (1):
>       iotests: Limit qsd-migrate to working formats
>
>  include/block/aio.h                         |   5 +-
>  include/block/raw-aio.h                     |   8 +-
>  include/hw/scsi/scsi.h                      |   8 +-
>  include/hw/virtio/iothread-vq-mapping.h     |  45 +++
>  include/hw/virtio/virtio-scsi.h             |  15 +-
>  include/system/block-backend-global-state.h |   1 -
>  include/system/dma.h                        |   3 +-
>  util/aio-posix.h                            |   1 +
>  block/block-backend.c                       |  12 -
>  block/file-posix.c                          |  26 +-
>  block/io.c                                  |   4 +
>  block/io_uring.c                            |  13 +-
>  block/linux-aio.c                           |  24 +-
>  block/snapshot.c                            |   1 +
>  hw/block/virtio-blk.c                       | 132 +-------
>  hw/ide/core.c                               |   3 +-
>  hw/ide/macio.c                              |   3 +-
>  hw/scsi/scsi-bus.c                          | 121 +++++--
>  hw/scsi/scsi-disk.c                         |  24 +-
>  hw/scsi/virtio-scsi-dataplane.c             | 103 ++++--
>  hw/scsi/virtio-scsi.c                       | 502 ++++++++++++++++------------
>  hw/virtio/iothread-vq-mapping.c             | 131 ++++++++
>  system/dma-helpers.c                        |   8 +-
>  util/aio-posix.c                            | 114 ++++---
>  util/async.c                                |   1 -
>  hw/virtio/meson.build                       |   1 +
>  meson.build                                 |   4 +
>  tests/qemu-iotests/tests/qsd-migrate        |   2 +-
>  28 files changed, 803 insertions(+), 512 deletions(-)
>  create mode 100644 include/hw/virtio/iothread-vq-mapping.h
>  create mode 100644 hw/virtio/iothread-vq-mapping.c
>
>