mbox

[PULL,00/33] Block layer patches

Message ID 20231221212339.164439-1-kwolf@redhat.com
State New
Headers show

Pull-request

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

Message

Kevin Wolf Dec. 21, 2023, 9:23 p.m. UTC
The following changes since commit 191710c221f65b1542f6ea7fa4d30dde6e134fd7:

  Merge tag 'pull-request-2023-12-20' of https://gitlab.com/thuth/qemu into staging (2023-12-20 09:40:16 -0500)

are available in the Git repository at:

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

for you to fetch changes up to ec25ed82df474caea009df2ef948bfed4e6d81fd:

  virtio-blk: add iothread-vq-mapping parameter (2023-12-21 22:00:38 +0100)

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

- virtio-blk: Multiqueue support (configurable iothread per queue)
- Made NBD export and hw/scsi thread-safe without AioContext lock
- Fix crash when loading snapshot on inactive node

----------------------------------------------------------------
Kevin Wolf (3):
      block: Fix crash when loading snapshot on inactive node
      vl: Improve error message for conflicting -incoming and -loadvm
      iotests: Basic tests for internal snapshots

Stefan Hajnoczi (30):
      nbd/server: avoid per-NBDRequest nbd_client_get/put()
      nbd/server: only traverse NBDExport->clients from main loop thread
      nbd/server: introduce NBDClient->lock to protect fields
      block/file-posix: set up Linux AIO and io_uring in the current thread
      virtio-blk: add lock to protect s->rq
      virtio-blk: don't lock AioContext in the completion code path
      virtio-blk: don't lock AioContext in the submission code path
      scsi: only access SCSIDevice->requests from one thread
      virtio-scsi: don't lock AioContext around virtio_queue_aio_attach_host_notifier()
      scsi: don't lock AioContext in I/O code path
      dma-helpers: don't lock AioContext in dma_blk_cb()
      virtio-scsi: replace AioContext lock with tmf_bh_lock
      scsi: assert that callbacks run in the correct AioContext
      tests: remove aio_context_acquire() tests
      aio: make aio_context_acquire()/aio_context_release() a no-op
      graph-lock: remove AioContext locking
      block: remove AioContext locking
      block: remove bdrv_co_lock()
      scsi: remove AioContext locking
      aio-wait: draw equivalence between AIO_WAIT_WHILE() and AIO_WAIT_WHILE_UNLOCKED()
      aio: remove aio_context_acquire()/aio_context_release() API
      docs: remove AioContext lock from IOThread docs
      scsi: remove outdated AioContext lock comment
      job: remove outdated AioContext locking comments
      block: remove outdated AioContext locking comments
      block-coroutine-wrapper: use qemu_get_current_aio_context()
      string-output-visitor: show structs as "<omitted>"
      qdev-properties: alias all object class properties
      qdev: add IOThreadVirtQueueMappingList property type
      virtio-blk: add iothread-vq-mapping parameter

 qapi/virtio.json                                   |  29 ++
 docs/devel/multiple-iothreads.txt                  |  47 +--
 hw/block/dataplane/virtio-blk.h                    |   3 +
 include/block/aio-wait.h                           |  16 +-
 include/block/aio.h                                |  17 -
 include/block/block-common.h                       |   3 -
 include/block/block-global-state.h                 |  23 +-
 include/block/block-io.h                           |  12 +-
 include/block/block_int-common.h                   |   2 -
 include/block/graph-lock.h                         |  21 +-
 include/block/snapshot.h                           |   2 -
 include/hw/qdev-properties-system.h                |   5 +
 include/hw/qdev-properties.h                       |   4 +-
 include/hw/scsi/scsi.h                             |   7 +-
 include/hw/virtio/virtio-blk.h                     |   5 +-
 include/hw/virtio/virtio-scsi.h                    |  17 +-
 include/qapi/string-output-visitor.h               |   6 +-
 include/qemu/job.h                                 |  20 --
 block.c                                            | 363 +++------------------
 block/backup.c                                     |   4 +-
 block/blklogwrites.c                               |   8 +-
 block/blkverify.c                                  |   4 +-
 block/block-backend.c                              |  33 +-
 block/commit.c                                     |  16 +-
 block/copy-before-write.c                          |  22 +-
 block/export/export.c                              |  22 +-
 block/export/vhost-user-blk-server.c               |   4 -
 block/file-posix.c                                 |  99 +++---
 block/graph-lock.c                                 |  44 +--
 block/io.c                                         |  45 +--
 block/mirror.c                                     |  41 +--
 block/monitor/bitmap-qmp-cmds.c                    |  20 +-
 block/monitor/block-hmp-cmds.c                     |  29 --
 block/qapi-sysemu.c                                |  27 +-
 block/qapi.c                                       |  18 +-
 block/qcow2.c                                      |   4 +-
 block/quorum.c                                     |   8 +-
 block/raw-format.c                                 |   5 -
 block/replication.c                                |  72 +---
 block/snapshot.c                                   |  30 +-
 block/stream.c                                     |  12 +-
 block/vmdk.c                                       |  20 +-
 block/write-threshold.c                            |   6 -
 blockdev.c                                         | 320 ++++--------------
 blockjob.c                                         |  30 +-
 hw/block/dataplane/virtio-blk.c                    | 165 +++++++---
 hw/block/dataplane/xen-block.c                     |  17 +-
 hw/block/virtio-blk.c                              | 209 +++++++-----
 hw/core/qdev-properties-system.c                   |  55 +++-
 hw/core/qdev-properties.c                          |  18 +-
 hw/scsi/scsi-bus.c                                 | 183 +++++++----
 hw/scsi/scsi-disk.c                                |  67 +---
 hw/scsi/scsi-generic.c                             |  20 +-
 hw/scsi/virtio-scsi-dataplane.c                    |   8 +-
 hw/scsi/virtio-scsi.c                              |  80 ++---
 job.c                                              |  16 -
 migration/block.c                                  |  34 +-
 migration/migration-hmp-cmds.c                     |   3 -
 migration/savevm.c                                 |  22 --
 nbd/server.c                                       | 208 +++++++++---
 net/colo-compare.c                                 |   2 -
 qapi/string-output-visitor.c                       |  16 +
 qemu-img.c                                         |   4 -
 qemu-io.c                                          |  10 +-
 qemu-nbd.c                                         |   2 -
 replay/replay-debugging.c                          |   4 -
 system/dma-helpers.c                               |  10 +-
 system/vl.c                                        |   4 +
 tests/unit/test-aio.c                              |  67 +---
 tests/unit/test-bdrv-drain.c                       |  91 ++----
 tests/unit/test-bdrv-graph-mod.c                   |  26 +-
 tests/unit/test-block-iothread.c                   |  31 --
 tests/unit/test-blockjob.c                         | 137 --------
 tests/unit/test-replication.c                      |  11 -
 util/async.c                                       |  14 -
 util/vhost-user-server.c                           |   3 -
 scripts/block-coroutine-wrapper.py                 |  13 +-
 tests/qemu-iotests/202                             |   2 +-
 tests/qemu-iotests/203                             |   3 +-
 tests/qemu-iotests/tests/qcow2-internal-snapshots  | 170 ++++++++++
 .../tests/qcow2-internal-snapshots.out             | 107 ++++++
 tests/tsan/suppressions.tsan                       |   1 -
 82 files changed, 1337 insertions(+), 2041 deletions(-)
 create mode 100755 tests/qemu-iotests/tests/qcow2-internal-snapshots
 create mode 100644 tests/qemu-iotests/tests/qcow2-internal-snapshots.out