On 06.05.20 14:41, Kevin Wolf wrote: > Am 18.02.2020 um 13:42 hat Max Reitz geschrieben: >> Make bdrv_child_cb_detach() call bdrv_backing_detach() for children with >> a COW role (and drop the reverse call from bdrv_backing_detach()), so it >> can be used for any child (with a proper role set). >> >> Because so far no child has a proper role set, we need a temporary new >> callback for child_backing.detach that ensures bdrv_backing_detach() is >> called for all COW children that do not have their role set yet. >> >> Signed-off-by: Max Reitz >> Reviewed-by: Eric Blake >> --- >> block.c | 15 ++++++++++++++- >> 1 file changed, 14 insertions(+), 1 deletion(-) >> >> diff --git a/block.c b/block.c >> index 3cf1293a7b..0f24546863 100644 >> --- a/block.c >> +++ b/block.c >> @@ -943,6 +943,7 @@ static void bdrv_child_cb_drained_end(BdrvChild *child, >> } >> >> static void bdrv_backing_attach(BdrvChild *c); >> +static void bdrv_backing_detach(BdrvChild *c); > > This series leaves a few static forward declarations behind, and even > in the middle of the code rather than at the top. > > Does anything stop us from adding bdrv_inherited_options() after all the > old functions instead? This will require a temporary forward > declaration, too, but it can go away at the end of the series when there > is only child_of_bds left. Personally, I have nothing against forward declarations, although they probably should reside at the top, yes. I suppose I can indeed just put the whole code after all the current code (i.e., behind child_backing), though. Max