[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 15/24] block: Mark bdrv_replace_node_common() GRAPH_WRLOCK
From: |
Eric Blake |
Subject: |
Re: [PATCH 15/24] block: Mark bdrv_replace_node_common() GRAPH_WRLOCK |
Date: |
Fri, 27 Oct 2023 16:27:11 -0500 |
User-agent: |
NeoMutt/20231023 |
On Fri, Oct 27, 2023 at 05:53:24PM +0200, Kevin Wolf wrote:
> Instead of taking the writer lock internally, require callers to already
> hold it when calling bdrv_replace_node_common(). Basically everthing in
> the function needs the lock and its callers may already want to hold the
> graph lock and so wouldn't be able to call functions that take it
> internally.
>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
> block.c | 68 ++++++++++++++++++++++++++++++++++++---------------------
> 1 file changed, 43 insertions(+), 25 deletions(-)
>
> diff --git a/block.c b/block.c
> index dc43e36f69..c7409cf658 100644
> --- a/block.c
> +++ b/block.c
> @@ -5412,6 +5412,9 @@ bdrv_replace_node_noperm(BlockDriverState *from,
> }
>
> /*
> + * Switch all parents of @from to point to @to instead. @from and @to must
> be in
> + * the same AioContext and both must be drained.
> + *
> * With auto_skip=true bdrv_replace_node_common skips updating from parents
> * if it creates a parent-child relation loop or if parent is block-job.
Useful doc addition, even though the commit message doesn't mention
it. I see no problem with keeping it.
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization: qemu.org | libguestfs.org
- [PATCH 13/24] block: Mark bdrv_set_backing_hd_drained() GRAPH_WRLOCK, (continued)
- [PATCH 13/24] block: Mark bdrv_set_backing_hd_drained() GRAPH_WRLOCK, Kevin Wolf, 2023/10/27
- [PATCH 11/24] block: Mark bdrv_filter_child() and callers GRAPH_RDLOCK, Kevin Wolf, 2023/10/27
- [PATCH 03/24] block: Mark bdrv_filter_bs() and callers GRAPH_RDLOCK, Kevin Wolf, 2023/10/27
- [PATCH 05/24] block: Mark block_job_add_bdrv() GRAPH_WRLOCK, Kevin Wolf, 2023/10/27
- [PATCH 15/24] block: Mark bdrv_replace_node_common() GRAPH_WRLOCK, Kevin Wolf, 2023/10/27
- Re: [PATCH 15/24] block: Mark bdrv_replace_node_common() GRAPH_WRLOCK,
Eric Blake <=
- [PATCH 10/24] block: Mark bdrv_chain_contains() and callers GRAPH_RDLOCK, Kevin Wolf, 2023/10/27
- [PATCH 09/24] block: Mark bdrv_(un)freeze_backing_chain() and callers GRAPH_RDLOCK, Kevin Wolf, 2023/10/27
- [PATCH 14/24] block: Inline bdrv_set_backing_noperm(), Kevin Wolf, 2023/10/27
- [PATCH 04/24] block: Mark bdrv_root_attach_child() GRAPH_WRLOCK, Kevin Wolf, 2023/10/27
- [PATCH 21/24] qcow2: Take locks for accessing bs->file, Kevin Wolf, 2023/10/27