[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 09/16] block: Support inactive nodes in blk_insert_bs()
From: |
Kevin Wolf |
Subject: |
[PATCH v3 09/16] block: Support inactive nodes in blk_insert_bs() |
Date: |
Tue, 4 Feb 2025 22:14:00 +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>
Acked-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@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 v3 00/16] block: Managing inactive nodes (QSD migration), Kevin Wolf, 2025/02/04
- [PATCH v3 01/16] block: Add 'active' field to BlockDeviceInfo, Kevin Wolf, 2025/02/04
- [PATCH v3 02/16] block: Allow inactivating already inactive nodes, Kevin Wolf, 2025/02/04
- [PATCH v3 03/16] block: Inactivate external snapshot overlays when necessary, Kevin Wolf, 2025/02/04
- [PATCH v3 06/16] block: Fix crash on block_resize on inactive node, Kevin Wolf, 2025/02/04
- [PATCH v3 04/16] migration/block-active: Remove global active flag, Kevin Wolf, 2025/02/04
- [PATCH v3 05/16] block: Don't attach inactive child to active node, Kevin Wolf, 2025/02/04
- [PATCH v3 08/16] block: Add blockdev-set-active QMP command, Kevin Wolf, 2025/02/04
- [PATCH v3 09/16] block: Support inactive nodes in blk_insert_bs(),
Kevin Wolf <=
- [PATCH v3 07/16] block: Add option to create inactive nodes, Kevin Wolf, 2025/02/04
- [PATCH v3 10/16] block/export: Don't ignore image activation error in blk_exp_add(), Kevin Wolf, 2025/02/04
- [PATCH v3 11/16] block: Drain nodes before inactivating them, Kevin Wolf, 2025/02/04
- [PATCH v3 13/16] nbd/server: Support inactive nodes, Kevin Wolf, 2025/02/04
- [PATCH v3 12/16] block/export: Add option to allow export of inactive nodes, Kevin Wolf, 2025/02/04
- [PATCH v3 14/16] iotests: Add filter_qtest(), Kevin Wolf, 2025/02/04
- [PATCH v3 15/16] iotests: Add qsd-migrate case, Kevin Wolf, 2025/02/04