Start by making the interfaces of analogous non-coroutine and coroutine functions consistent with each other, then implement the non-coroutine ones using generated_co_wrapper.
For the bdrv_pwrite_sync() case, also add the missing bdrv_co_pwrite_sync() function. Changes v2 --> v3: - Add `assert(bytes <= SIZE_MAX)` to bdrv_co_{pread,pwrite}(). Changes v1 --> v2: - Drop unnecessary assignments to ret in vhdx_log_peek_hdr(), vhdx_log_read_sectors(), and vhdx_log_write_sectors(). - Simplify vdi_co_pwritev() return expression. - Add patch making crypto block callbacks return 0 on success. - Clarify in commit message that bdrv_pwrite_zeroes() now calls trace_bdrv_co_pwrite_zeroes() and clears the BDRV_REQ_MAY_UNMAP flag when appropriate, which it didn't previously. - Use _co_ functions in the implementation of bdrv_co_pwrite_sync(). - Add patch converting uses of bdrv_pwrite_sync() into bdrv_co_pwrite_sync() when the callers are already coroutine_fn. - Add patch making qcow2_mark_dirty() use bdrv_pwrite_sync() instead of calling bdrv_pwrite() and bdrv_flush() separately. Alberto Faria (10): block: Add a 'flags' param to bdrv_{pread,pwrite,pwrite_sync}() block: Change bdrv_{pread,pwrite,pwrite_sync}() param order block: Make bdrv_{pread,pwrite}() return 0 on success crypto: Make block callbacks return 0 on success block: Make bdrv_co_pwrite() take a const buffer block: Make 'bytes' param of bdrv_co_{pread,pwrite,preadv,pwritev}() an int64_t block: Implement bdrv_{pread,pwrite,pwrite_zeroes}() using generated_co_wrapper block: Add bdrv_co_pwrite_sync() block: Use bdrv_co_pwrite_sync() when caller is coroutine_fn block/qcow2: Use bdrv_pwrite_sync() in qcow2_mark_dirty() block/blklogwrites.c | 6 +-- block/bochs.c | 10 ++-- block/cloop.c | 12 ++--- block/coroutines.h | 4 +- block/crypto.c | 56 +++++++++++----------- block/dmg.c | 36 +++++++------- block/io.c | 55 ++-------------------- block/parallels-ext.c | 6 +-- block/parallels.c | 12 ++--- block/qcow.c | 41 ++++++++-------- block/qcow2-bitmap.c | 14 +++--- block/qcow2-cache.c | 9 ++-- block/qcow2-cluster.c | 19 ++++---- block/qcow2-refcount.c | 58 ++++++++++++----------- block/qcow2-snapshot.c | 53 ++++++++++----------- block/qcow2.c | 80 ++++++++++++++++---------------- block/qed.c | 13 ++---- block/vdi.c | 16 +++---- block/vhdx-log.c | 23 +++++---- block/vhdx.c | 36 +++++++------- block/vmdk.c | 70 +++++++++++++--------------- block/vpc.c | 23 ++++----- block/vvfat.c | 11 +++-- crypto/block-luks.c | 8 ++-- crypto/block.c | 6 +-- include/block/block-io.h | 22 ++++++--- include/block/block_int-io.h | 8 +++- include/crypto/block.h | 32 ++++++------- tests/unit/test-block-iothread.c | 12 ++--- tests/unit/test-crypto-block.c | 38 +++++++-------- 30 files changed, 374 insertions(+), 415 deletions(-) -- 2.35.3