[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 17/25] block: Support inactive nodes in blk_insert_bs()
From: |
Kevin Wolf |
Subject: |
[PULL 17/25] block: Support inactive nodes in blk_insert_bs() |
Date: |
Mon, 10 Feb 2025 17:10:26 +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>
Message-ID: <20250204211407.381505-10-kwolf@redhat.com>
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
- [PULL 11/25] block: Inactivate external snapshot overlays when necessary, (continued)
- [PULL 11/25] block: Inactivate external snapshot overlays when necessary, Kevin Wolf, 2025/02/10
- [PULL 10/25] block: Allow inactivating already inactive nodes, Kevin Wolf, 2025/02/10
- [PULL 08/25] block-backend: Fix argument order when calling 'qapi_event_send_block_io_error()', Kevin Wolf, 2025/02/10
- [PULL 09/25] block: Add 'active' field to BlockDeviceInfo, Kevin Wolf, 2025/02/10
- [PULL 07/25] scripts/qemu-gdb: Support coroutine dumps in coredumps, Kevin Wolf, 2025/02/10
- [PULL 12/25] migration/block-active: Remove global active flag, Kevin Wolf, 2025/02/10
- [PULL 13/25] block: Don't attach inactive child to active node, Kevin Wolf, 2025/02/10
- [PULL 14/25] block: Fix crash on block_resize on inactive node, Kevin Wolf, 2025/02/10
- [PULL 18/25] block/export: Don't ignore image activation error in blk_exp_add(), Kevin Wolf, 2025/02/10
- [PULL 20/25] block/export: Add option to allow export of inactive nodes, Kevin Wolf, 2025/02/10
- [PULL 17/25] block: Support inactive nodes in blk_insert_bs(),
Kevin Wolf <=
- [PULL 21/25] nbd/server: Support inactive nodes, Kevin Wolf, 2025/02/10
- [PULL 25/25] block: remove unused BLOCK_OP_TYPE_DATAPLANE, Kevin Wolf, 2025/02/10
- [PULL 16/25] block: Add blockdev-set-active QMP command, Kevin Wolf, 2025/02/10
- [PULL 19/25] block: Drain nodes before inactivating them, Kevin Wolf, 2025/02/10
- [PULL 15/25] block: Add option to create inactive nodes, Kevin Wolf, 2025/02/10
- [PULL 22/25] iotests: Add filter_qtest(), Kevin Wolf, 2025/02/10
- [PULL 23/25] iotests: Add qsd-migrate case, Kevin Wolf, 2025/02/10
- [PULL 24/25] iotests: Add (NBD-based) tests for inactive nodes, Kevin Wolf, 2025/02/10
- Re: [PULL 00/25] Block layer patches, Stefan Hajnoczi, 2025/02/10