diff mbox series

[02/21] block: introduce blk_replace_bs

Message ID 20210517064428.16223-4-vsementsov@virtuozzo.com (mailing list archive)
State New, archived
Headers show
Series block: publish backup-top filter | expand

Commit Message

Vladimir Sementsov-Ogievskiy May 17, 2021, 6:44 a.m. UTC
Add function to change bs inside blk.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
 include/sysemu/block-backend.h | 1 +
 block/block-backend.c          | 8 ++++++++
 2 files changed, 9 insertions(+)

Comments

Max Reitz May 17, 2021, 12:32 p.m. UTC | #1
On 17.05.21 08:44, Vladimir Sementsov-Ogievskiy wrote:
> Add function to change bs inside blk.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>   include/sysemu/block-backend.h | 1 +
>   block/block-backend.c          | 8 ++++++++
>   2 files changed, 9 insertions(+)
> 
> diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
> index 880e903293..aec05ef0a0 100644
> --- a/include/sysemu/block-backend.h
> +++ b/include/sysemu/block-backend.h
> @@ -98,6 +98,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,
> diff --git a/block/block-backend.c b/block/block-backend.c
> index de5496af66..b1abc6f3e6 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)
>       return 0;
>   }
>   
> +/*
> + * 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);
> +}

Reviewed-by: Max Reitz <mreitz@redhat.com>

(Looks indeed like we don’t need to do any of the things that 
blk_insert_bs() and blk_remove_bs() do besides inserting and removing 
the node.)
diff mbox series

Patch

diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
index 880e903293..aec05ef0a0 100644
--- a/include/sysemu/block-backend.h
+++ b/include/sysemu/block-backend.h
@@ -98,6 +98,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,
diff --git a/block/block-backend.c b/block/block-backend.c
index de5496af66..b1abc6f3e6 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)
     return 0;
 }
 
+/*
+ * 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.
  */