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 <kw...@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 <ebl...@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. Virtualization: qemu.org | libguestfs.org