[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 00/14] block: Move more functions to coroutines
From: |
Emanuele Giuseppe Esposito |
Subject: |
Re: [PATCH v2 00/14] block: Move more functions to coroutines |
Date: |
Mon, 16 Jan 2023 09:51:22 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 |
Am 13/01/2023 um 21:41 schrieb Kevin Wolf:
> This series converts some IO_CODE() functions to coroutine_fn because
> they access the graph and will need to hold the graph lock in the
> future. IO_CODE() functions can be called from iothreads, so taking the
> graph lock requires the function to run in coroutine context.
>
> Pretty much all of the changes in this series were posted by Emanuele
> before as part of "Protect the block layer with a rwlock: part 3". The
> major difference is that in the old version, the patches did two things
> at once: Converting functions to coroutine_fn, and adding the locking to
> them. This series does only the coroutine conversion. The locking part
> will be in another series which now comes with TSA annotations and makes
> the locking related changes big enough to have separate patches.
>
> v2:
> - In each patch converting a BlockDriver callback to be called in
> coroutine, also immediately rename it and its implementation to
> include co_ in its name, as well as mark the implementations
> coroutine_fn [Vladimir]
> - Moved bdrv_is_inserted() earlier in the series because
> raw_is_inserted() calls raw_getlength(), so it needs to be converted
> first to avoid calling a coroutine_fn from a non-coroutine_fn in an
> intermediate state.
> - The final patch only renames bdrv_load/save_vmstate() any more, which
> was already converted to coroutine_fn earlier.
> - Since pretty much every patch was touched in this, I refrained from
> picking up any Reviewed-by for v1
>
Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
> Emanuele Giuseppe Esposito (14):
> block-coroutine-wrapper: support void functions
> block: Convert bdrv_io_plug() to co_wrapper
> block: Convert bdrv_io_unplug() to co_wrapper
> block: Convert bdrv_is_inserted() to co_wrapper
> block: Rename refresh_total_sectors to bdrv_refresh_total_sectors
> block: Convert bdrv_refresh_total_sectors() to co_wrapper_mixed
> block-backend: use bdrv_getlength instead of blk_getlength
> block: use bdrv_co_refresh_total_sectors when possible
> block: Convert bdrv_get_allocated_file_size() to co_wrapper
> block: Convert bdrv_get_info() to co_wrapper_mixed
> block: Convert bdrv_eject() to co_wrapper
> block: Convert bdrv_lock_medium() to co_wrapper
> block: Convert bdrv_debug_event() to co_wrapper_mixed
> block: Rename bdrv_load/save_vmstate() to bdrv_co_load/save_vmstate()
>
> include/block/block-io.h | 36 +++++++---
> include/block/block_int-common.h | 26 ++++---
> include/block/block_int-io.h | 5 +-
> include/sysemu/block-backend-io.h | 31 +++++++--
> block.c | 82 +++++++++++++---------
> block/blkdebug.c | 11 +--
> block/blkio.c | 15 ++--
> block/blklogwrites.c | 6 +-
> block/blkreplay.c | 6 +-
> block/blkverify.c | 6 +-
> block/block-backend.c | 36 +++++-----
> block/commit.c | 4 +-
> block/copy-on-read.c | 18 ++---
> block/crypto.c | 14 ++--
> block/curl.c | 10 +--
> block/file-posix.c | 107 ++++++++++++++---------------
> block/file-win32.c | 18 +++--
> block/filter-compress.c | 20 +++---
> block/gluster.c | 23 ++++---
> block/io.c | 76 ++++++++++----------
> block/iscsi.c | 17 ++---
> block/mirror.c | 6 +-
> block/nbd.c | 8 +--
> block/nfs.c | 4 +-
> block/null.c | 13 ++--
> block/nvme.c | 14 ++--
> block/preallocate.c | 16 ++---
> block/qcow.c | 5 +-
> block/qcow2-refcount.c | 2 +-
> block/qcow2.c | 17 ++---
> block/qed.c | 11 +--
> block/quorum.c | 8 +--
> block/raw-format.c | 25 +++----
> block/rbd.c | 9 +--
> block/replication.c | 6 +-
> block/ssh.c | 4 +-
> block/throttle.c | 6 +-
> block/vdi.c | 7 +-
> block/vhdx.c | 5 +-
> block/vmdk.c | 14 ++--
> block/vpc.c | 5 +-
> blockdev.c | 8 ++-
> hw/scsi/scsi-disk.c | 5 ++
> tests/unit/test-block-iothread.c | 3 +
> scripts/block-coroutine-wrapper.py | 20 ++++--
> block/meson.build | 1 +
> 46 files changed, 443 insertions(+), 346 deletions(-)
>
- [PATCH v2 05/14] block: Rename refresh_total_sectors to bdrv_refresh_total_sectors, (continued)
- [PATCH v2 05/14] block: Rename refresh_total_sectors to bdrv_refresh_total_sectors, Kevin Wolf, 2023/01/13
- [PATCH v2 06/14] block: Convert bdrv_refresh_total_sectors() to co_wrapper_mixed, Kevin Wolf, 2023/01/13
- [PATCH v2 07/14] block-backend: use bdrv_getlength instead of blk_getlength, Kevin Wolf, 2023/01/13
- [PATCH v2 08/14] block: use bdrv_co_refresh_total_sectors when possible, Kevin Wolf, 2023/01/13
- [PATCH v2 11/14] block: Convert bdrv_eject() to co_wrapper, Kevin Wolf, 2023/01/13
- [PATCH v2 09/14] block: Convert bdrv_get_allocated_file_size() to co_wrapper, Kevin Wolf, 2023/01/13
- [PATCH v2 13/14] block: Convert bdrv_debug_event() to co_wrapper_mixed, Kevin Wolf, 2023/01/13
- [PATCH v2 10/14] block: Convert bdrv_get_info() to co_wrapper_mixed, Kevin Wolf, 2023/01/13
- [PATCH v2 12/14] block: Convert bdrv_lock_medium() to co_wrapper, Kevin Wolf, 2023/01/13
- [PATCH v2 14/14] block: Rename bdrv_load/save_vmstate() to bdrv_co_load/save_vmstate(), Kevin Wolf, 2023/01/13
- Re: [PATCH v2 00/14] block: Move more functions to coroutines,
Emanuele Giuseppe Esposito <=