summaryrefslogtreecommitdiffstats
path: root/block.c
diff options
context:
space:
mode:
authorVladimir Sementsov-Ogievskiy2022-07-26 22:11:30 +0200
committerKevin Wolf2022-10-27 20:14:11 +0200
commita2c37a30422328fe2391bd1ff342f8941c7681bc (patch)
tree775647b473ee54b01640facae7412bfcf7158f43 /block.c
parentRevert "block: Let replace_child_tran keep indirect pointer" (diff)
downloadqemu-a2c37a30422328fe2391bd1ff342f8941c7681bc.tar.gz
qemu-a2c37a30422328fe2391bd1ff342f8941c7681bc.tar.xz
qemu-a2c37a30422328fe2391bd1ff342f8941c7681bc.zip
Revert "block: Restructure remove_file_or_backing_child()"
That's a preparation to previously reverted "block: Let replace_child_noperm free children". Drop it too, we don't need it for a new approach. This reverts commit 562bda8bb41879eeda0bd484dd3d55134579b28e. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Hanna Reitz <hreitz@redhat.com> Message-Id: <20220726201134.924743-12-vsementsov@yandex-team.ru> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block.c')
-rw-r--r--block.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/block.c b/block.c
index 196d1cf665..2f80b7e094 100644
--- a/block.c
+++ b/block.c
@@ -5055,33 +5055,30 @@ static void bdrv_remove_file_or_backing_child(BlockDriverState *bs,
BdrvChild *child,
Transaction *tran)
{
- BdrvChild **childp;
BdrvRemoveFilterOrCowChild *s;
+ assert(child == bs->backing || child == bs->file);
+
if (!child) {
return;
}
- if (child == bs->backing) {
- childp = &bs->backing;
- } else if (child == bs->file) {
- childp = &bs->file;
- } else {
- g_assert_not_reached();
- }
-
if (child->bs) {
- bdrv_replace_child_tran(*childp, NULL, tran);
+ bdrv_replace_child_tran(child, NULL, tran);
}
s = g_new(BdrvRemoveFilterOrCowChild, 1);
*s = (BdrvRemoveFilterOrCowChild) {
.child = child,
- .is_backing = (childp == &bs->backing),
+ .is_backing = (child == bs->backing),
};
tran_add(tran, &bdrv_remove_filter_or_cow_child_drv, s);
- *childp = NULL;
+ if (s->is_backing) {
+ bs->backing = NULL;
+ } else {
+ bs->file = NULL;
+ }
}
/*