aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>2021-08-24 11:38:24 +0300
committerHanna Reitz <hreitz@redhat.com>2021-09-01 12:57:31 +0200
commited089506eeb44fd7f7f385a9172e51b198ae489d (patch)
treefc460516ab9e37c862f4781d8e72cb647bea2ea1
parentbd8f4c42c8547a74b0f92dc17af93c3247c69f18 (diff)
downloadqemu-ed089506eeb44fd7f7f385a9172e51b198ae489d.zip
qemu-ed089506eeb44fd7f7f385a9172e51b198ae489d.tar.gz
qemu-ed089506eeb44fd7f7f385a9172e51b198ae489d.tar.bz2
block: introduce blk_replace_bs
Add function to change bs inside blk. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20210824083856.17408-3-vsementsov@virtuozzo.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
-rw-r--r--block/block-backend.c8
-rw-r--r--include/sysemu/block-backend.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/block/block-backend.c b/block/block-backend.c
index deb55c2..6140d13 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -870,6 +870,14 @@ int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp)
}
/*
+ * Change BlockDriverState associated with @blk.
+ */
+int blk_replace_bs(BlockBackend *blk, BlockDriverState *new_bs, Error **errp)
+{
+ return bdrv_replace_child_bs(blk->root, new_bs, errp);
+}
+
+/*
* Sets the permission bitmasks that the user of the BlockBackend needs.
*/
int blk_set_perm(BlockBackend *blk, uint64_t perm, uint64_t shared_perm,
diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
index 9ac5f7b..29d4fdb 100644
--- a/include/sysemu/block-backend.h
+++ b/include/sysemu/block-backend.h
@@ -102,6 +102,7 @@ BlockBackend *blk_by_public(BlockBackendPublic *public);
BlockDriverState *blk_bs(BlockBackend *blk);
void blk_remove_bs(BlockBackend *blk);
int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp);
+int blk_replace_bs(BlockBackend *blk, BlockDriverState *new_bs, Error **errp);
bool bdrv_has_blk(BlockDriverState *bs);
bool bdrv_is_root_node(BlockDriverState *bs);
int blk_set_perm(BlockBackend *blk, uint64_t perm, uint64_t shared_perm,