mbox series

[v5,00/15] Still more coroutine and various fixes in block layer

Message ID 20221123114227.85757-1-eesposit@redhat.com (mailing list archive)
Headers show
Series Still more coroutine and various fixes in block layer | expand

Message

Emanuele Giuseppe Esposito Nov. 23, 2022, 11:42 a.m. UTC
This is a dump of all minor coroutine-related fixes found while looking
around and testing various things in the QEMU block layer.

Patches aim to:
- add missing coroutine_fn annotation to the functions
- simplify to avoid the typical "if in coroutine: fn()
  // else create_coroutine(fn)" already present in generated_co_wraper
  functions.
- make sure that if a BlockDriver callback is defined as coroutine_fn, then
  it is always running in a coroutine.

This serie is based on Kevin Wolf's series "block: Simplify drain".

Based-on: <20221108123738.530873-1-kwolf@redhat.com>

Emanuele
---
v5:
* add missing reviewed-by from Paolo
* minor indentation fixes
* use when possible _co_, but do not create new g_c_w. It will be done in
  future series
* introduce QEMU_IN_COROUTINE
* reorder patches
* rebase on kevin block branch + v2 from "block: Simplify drain"

v4:
* use v2 commit messages
* introduce generated_co_wrapper_simple to simplify patches

v3:
* Remove patch 1, base on kevin "drain semplification serie"

v2:
* clarified commit message in patches 2/3/6 on why we add coroutine_fn

Emanuele Giuseppe Esposito (15):
  block-io: introduce coroutine_fn duplicates for
    bdrv_common_block_status_above callers
  block-copy: add missing coroutine_fn annotations
  nbd/server.c: add missing coroutine_fn annotations
  block-backend: replace bdrv_*_above with blk_*_above
  block/vmdk: add missing coroutine_fn annotations
  block: avoid duplicating filename string in bdrv_create
  block: introduce QEMU_IN_COROUTINE macro
  block: distinguish between bdrv_create running in coroutine and not
  block: bdrv_create_file is a coroutine_fn
  block-coroutine-wrapper.py: introduce generated_co_wrapper_simple
  block-coroutine-wrapper.py: default to main loop aiocontext if
    function does not have a BlockDriverState parameter
  block-coroutine-wrapper.py: default to main loop aiocontext if
    function does not have a BlockDriverState parameter
  block-coroutine-wrapper.py: support also basic return types
  block: convert bdrv_create to generated_co_wrapper_simple
  block/dirty-bitmap: convert coroutine-only functions to
    generated_co_wrapper_simple

 block.c                            |  66 ++++------------
 block/block-backend.c              |  21 +++++
 block/block-copy.c                 |  21 ++---
 block/block-gen.h                  |  11 +--
 block/commit.c                     |   4 +-
 block/crypto.c                     |   2 +-
 block/dirty-bitmap.c               |  88 +--------------------
 block/io.c                         |  64 +++++++++++++++-
 block/meson.build                  |   1 +
 block/parallels.c                  |   2 +-
 block/qcow.c                       |   2 +-
 block/qcow2.c                      |   4 +-
 block/qed.c                        |   2 +-
 block/raw-format.c                 |   2 +-
 block/vdi.c                        |   2 +-
 block/vhdx.c                       |   2 +-
 block/vmdk.c                       |  38 +++++-----
 block/vpc.c                        |   2 +-
 include/block/block-common.h       |  17 ++++-
 include/block/block-copy.h         |   5 +-
 include/block/block-global-state.h |  13 +++-
 include/block/block-io.h           |  24 +++++-
 include/block/dirty-bitmap.h       |  10 ++-
 include/sysemu/block-backend-io.h  |   9 +++
 nbd/server.c                       |  47 ++++++------
 scripts/block-coroutine-wrapper.py | 118 ++++++++++++++++++++---------
 26 files changed, 322 insertions(+), 255 deletions(-)