qemu-block
[Top][All Lists]
Advanced

[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(-)
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]