qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 00/21] Graph locking part 4 (node management)


From: Stefan Hajnoczi
Subject: Re: [PATCH v2 00/21] Graph locking part 4 (node management)
Date: Tue, 12 Sep 2023 12:49:45 -0400

On Mon, Sep 11, 2023 at 11:45:59AM +0200, Kevin Wolf wrote:
> The previous parts of the graph locking changes focussed mostly on the
> BlockDriver side and taking reader locks while performing I/O. This
> series focusses more on the functions managing the graph structure, i.e
> adding, removing and replacing nodes and updating their permissions.
> 
> Many of these places actually need to take the writer lock to avoid
> readers seeing an inconsistent half-updated graph state. Therefore
> taking the writer lock is now moved from the very low-level function
> bdrv_replace_child_noperm() into its more high level callers.
> 
> v2:
> - Patch 5: Improved comments, added one for bdrv_schedule_unref()
> 
> Kevin Wolf (21):
>   block: Remove unused BlockReopenQueueEntry.perms_checked
>   preallocate: Factor out preallocate_truncate_to_real_size()
>   preallocate: Don't poll during permission updates
>   block: Take AioContext lock for bdrv_append() more consistently
>   block: Introduce bdrv_schedule_unref()
>   block-coroutine-wrapper: Add no_co_wrapper_bdrv_wrlock functions
>   block-coroutine-wrapper: Allow arbitrary parameter names
>   block: Mark bdrv_replace_child_noperm() GRAPH_WRLOCK
>   block: Mark bdrv_replace_child_tran() GRAPH_WRLOCK
>   block: Mark bdrv_attach_child_common() GRAPH_WRLOCK
>   block: Call transaction callbacks with lock held
>   block: Mark bdrv_attach_child() GRAPH_WRLOCK
>   block: Mark bdrv_parent_perms_conflict() and callers GRAPH_RDLOCK
>   block: Mark bdrv_get_cumulative_perm() and callers GRAPH_RDLOCK
>   block: Mark bdrv_child_perm() GRAPH_RDLOCK
>   block: Mark bdrv_parent_cb_change_media() GRAPH_RDLOCK
>   block: Take graph rdlock in bdrv_drop_intermediate()
>   block: Take graph rdlock in bdrv_change_aio_context()
>   block: Mark bdrv_root_unref_child() GRAPH_WRLOCK
>   block: Mark bdrv_unref_child() GRAPH_WRLOCK
>   block: Mark bdrv_add/del_child() and caller GRAPH_WRLOCK
> 
>  include/block/block-common.h                |   4 +
>  include/block/block-global-state.h          |  30 +-
>  include/block/block_int-common.h            |  34 +-
>  include/block/block_int-global-state.h      |  14 +-
>  include/sysemu/block-backend-global-state.h |   4 +-
>  block.c                                     | 348 ++++++++++++++------
>  block/blklogwrites.c                        |   4 +
>  block/blkverify.c                           |   2 +
>  block/block-backend.c                       |  29 +-
>  block/copy-before-write.c                   |  10 +-
>  block/crypto.c                              |   6 +-
>  block/graph-lock.c                          |  26 +-
>  block/mirror.c                              |   8 +
>  block/preallocate.c                         | 133 +++++---
>  block/qcow2.c                               |   4 +-
>  block/quorum.c                              |  23 +-
>  block/replication.c                         |   9 +
>  block/snapshot.c                            |   2 +
>  block/stream.c                              |  20 +-
>  block/vmdk.c                                |  13 +
>  blockdev.c                                  |  23 +-
>  blockjob.c                                  |   2 +
>  tests/unit/test-bdrv-drain.c                |  23 +-
>  tests/unit/test-bdrv-graph-mod.c            |  20 ++
>  tests/unit/test-block-iothread.c            |   3 +
>  scripts/block-coroutine-wrapper.py          |  18 +-
>  tests/qemu-iotests/051.pc.out               |   6 +-
>  27 files changed, 591 insertions(+), 227 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Attachment: signature.asc
Description: PGP signature


reply via email to

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