Revert "block: Pass BdrvChild ** to replace_child_noperm"

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 be64bbb0149748f3999c49b13976aafb8330ea86.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20220726201134.924743-13-vsementsov@yandex-team.ru>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2022-07-26 23:11:31 +03:00 committed by Kevin Wolf
parent a2c37a3042
commit 544acc7d1e

23
block.c
View File

@ -90,7 +90,7 @@ static BlockDriverState *bdrv_open_inherit(const char *filename,
static bool bdrv_recurse_has_child(BlockDriverState *bs, static bool bdrv_recurse_has_child(BlockDriverState *bs,
BlockDriverState *child); BlockDriverState *child);
static void bdrv_replace_child_noperm(BdrvChild **child, static void bdrv_replace_child_noperm(BdrvChild *child,
BlockDriverState *new_bs); BlockDriverState *new_bs);
static void bdrv_remove_file_or_backing_child(BlockDriverState *bs, static void bdrv_remove_file_or_backing_child(BlockDriverState *bs,
BdrvChild *child, BdrvChild *child,
@ -2359,7 +2359,7 @@ static void bdrv_replace_child_abort(void *opaque)
GLOBAL_STATE_CODE(); GLOBAL_STATE_CODE();
/* old_bs reference is transparently moved from @s to @s->child */ /* old_bs reference is transparently moved from @s to @s->child */
bdrv_replace_child_noperm(&s->child, s->old_bs); bdrv_replace_child_noperm(s->child, s->old_bs);
bdrv_unref(new_bs); bdrv_unref(new_bs);
} }
@ -2389,7 +2389,7 @@ static void bdrv_replace_child_tran(BdrvChild *child, BlockDriverState *new_bs,
if (new_bs) { if (new_bs) {
bdrv_ref(new_bs); bdrv_ref(new_bs);
} }
bdrv_replace_child_noperm(&child, new_bs); bdrv_replace_child_noperm(child, new_bs);
/* old_bs reference is transparently moved from @child to @s */ /* old_bs reference is transparently moved from @child to @s */
} }
@ -2771,10 +2771,9 @@ uint64_t bdrv_qapi_perm_to_blk_perm(BlockPermission qapi_perm)
return permissions[qapi_perm]; return permissions[qapi_perm];
} }
static void bdrv_replace_child_noperm(BdrvChild **childp, static void bdrv_replace_child_noperm(BdrvChild *child,
BlockDriverState *new_bs) BlockDriverState *new_bs)
{ {
BdrvChild *child = *childp;
BlockDriverState *old_bs = child->bs; BlockDriverState *old_bs = child->bs;
int new_bs_quiesce_counter; int new_bs_quiesce_counter;
int drain_saldo; int drain_saldo;
@ -2872,7 +2871,7 @@ static void bdrv_attach_child_common_abort(void *opaque)
BlockDriverState *bs = child->bs; BlockDriverState *bs = child->bs;
GLOBAL_STATE_CODE(); GLOBAL_STATE_CODE();
bdrv_replace_child_noperm(s->child, NULL); bdrv_replace_child_noperm(child, NULL);
if (bdrv_get_aio_context(bs) != s->old_child_ctx) { if (bdrv_get_aio_context(bs) != s->old_child_ctx) {
bdrv_try_set_aio_context(bs, s->old_child_ctx, &error_abort); bdrv_try_set_aio_context(bs, s->old_child_ctx, &error_abort);
@ -2973,7 +2972,7 @@ static int bdrv_attach_child_common(BlockDriverState *child_bs,
} }
bdrv_ref(child_bs); bdrv_ref(child_bs);
bdrv_replace_child_noperm(&new_child, child_bs); bdrv_replace_child_noperm(new_child, child_bs);
*child = new_child; *child = new_child;
@ -3029,13 +3028,13 @@ static int bdrv_attach_child_noperm(BlockDriverState *parent_bs,
return 0; return 0;
} }
static void bdrv_detach_child(BdrvChild **childp) static void bdrv_detach_child(BdrvChild *child)
{ {
BlockDriverState *old_bs = (*childp)->bs; BlockDriverState *old_bs = child->bs;
GLOBAL_STATE_CODE(); GLOBAL_STATE_CODE();
bdrv_replace_child_noperm(childp, NULL); bdrv_replace_child_noperm(child, NULL);
bdrv_child_free(*childp); bdrv_child_free(child);
if (old_bs) { if (old_bs) {
/* /*
@ -3147,7 +3146,7 @@ void bdrv_root_unref_child(BdrvChild *child)
GLOBAL_STATE_CODE(); GLOBAL_STATE_CODE();
child_bs = child->bs; child_bs = child->bs;
bdrv_detach_child(&child); bdrv_detach_child(child);
bdrv_unref(child_bs); bdrv_unref(child_bs);
} }