[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 09/15] block: Support inactive nodes in blk_insert_bs()
From: |
Kevin Wolf |
Subject: |
[PATCH v2 09/15] block: Support inactive nodes in blk_insert_bs() |
Date: |
Thu, 30 Jan 2025 18:12:40 +0100 |
Device models have a relatively complex way to set up their block
backends, in which blk_attach_dev() sets blk->disable_perm = true.
We want to support inactive images in exports, too, so that
qemu-storage-daemon can be used with migration. Because they don't use
blk_attach_dev(), they need another way to set this flag. The most
convenient is to do this automatically when an inactive node is attached
to a BlockBackend that can be inactivated.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
block/block-backend.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/block/block-backend.c b/block/block-backend.c
index cc6f58ae78..9288f7e1c6 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -900,14 +900,24 @@ void blk_remove_bs(BlockBackend *blk)
int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp)
{
ThrottleGroupMember *tgm = &blk->public.throttle_group_member;
+ uint64_t perm, shared_perm;
GLOBAL_STATE_CODE();
bdrv_ref(bs);
bdrv_graph_wrlock();
+
+ if ((bs->open_flags & BDRV_O_INACTIVE) && blk_can_inactivate(blk)) {
+ blk->disable_perm = true;
+ perm = 0;
+ shared_perm = BLK_PERM_ALL;
+ } else {
+ perm = blk->perm;
+ shared_perm = blk->shared_perm;
+ }
+
blk->root = bdrv_root_attach_child(bs, "root", &child_root,
BDRV_CHILD_FILTERED |
BDRV_CHILD_PRIMARY,
- blk->perm, blk->shared_perm,
- blk, errp);
+ perm, shared_perm, blk, errp);
bdrv_graph_wrunlock();
if (blk->root == NULL) {
return -EPERM;
--
2.48.1
- [PATCH v2 04/15] block: Don't attach inactive child to active node, (continued)
- [PATCH v2 04/15] block: Don't attach inactive child to active node, Kevin Wolf, 2025/01/30
- [PATCH v2 06/15] block: Fix crash on block_resize on inactive node, Kevin Wolf, 2025/01/30
- [PATCH v2 05/15] block: Allow inactivating already inactive nodes, Kevin Wolf, 2025/01/30
- [PATCH v2 07/15] block: Add option to create inactive nodes, Kevin Wolf, 2025/01/30
- [PATCH v2 08/15] block: Add blockdev-set-active QMP command, Kevin Wolf, 2025/01/30
- [PATCH v2 09/15] block: Support inactive nodes in blk_insert_bs(),
Kevin Wolf <=