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-kw...@redhat.com> Emanuele --- v6: * use different naming for block-coroutine-wrapper annotations * fix minor typos and patch odering 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 coroutine_wrapper 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 (14): 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: distinguish between bdrv_create running in coroutine and not block: bdrv_create_file is a coroutine_fn block: rename generated_co_wrapper in co_wrapper_mixed block-coroutine-wrapper.py: introduce co_wrapper 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 co_wrapper block/dirty-bitmap: convert coroutine-only functions to co_wrapper block.c | 65 +++---------- block/block-backend.c | 21 +++++ block/block-copy.c | 21 +++-- block/block-gen.h | 11 +-- block/commit.c | 4 +- block/coroutines.h | 4 +- block/crypto.c | 2 +- block/dirty-bitmap.c | 88 +----------------- block/io.c | 58 +++++++++++- 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 +- docs/devel/block-coroutine-wrapper.rst | 6 +- include/block/block-common.h | 20 ++-- include/block/block-copy.h | 5 +- include/block/block-global-state.h | 11 ++- include/block/block-io.h | 69 +++++++++----- include/block/dirty-bitmap.h | 10 +- include/sysemu/block-backend-io.h | 77 +++++++++------- nbd/server.c | 47 +++++----- scripts/block-coroutine-wrapper.py | 122 +++++++++++++++++-------- 28 files changed, 376 insertions(+), 322 deletions(-) -- 2.31.1