diff options
Diffstat (limited to 'block/block-backend.c')
-rw-r--r-- | block/block-backend.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/block/block-backend.c b/block/block-backend.c index f6f05ead28..ec21148806 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -889,6 +889,7 @@ void blk_remove_bs(BlockBackend *blk) { ThrottleGroupMember *tgm = &blk->public.throttle_group_member; BdrvChild *root; + AioContext *ctx; GLOBAL_STATE_CODE(); @@ -918,9 +919,10 @@ void blk_remove_bs(BlockBackend *blk) root = blk->root; blk->root = NULL; + ctx = bdrv_get_aio_context(root->bs); bdrv_graph_wrlock(root->bs); bdrv_root_unref_child(root); - bdrv_graph_wrunlock(); + bdrv_graph_wrunlock_ctx(ctx); } /* @@ -931,6 +933,8 @@ void blk_remove_bs(BlockBackend *blk) int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp) { ThrottleGroupMember *tgm = &blk->public.throttle_group_member; + AioContext *ctx = bdrv_get_aio_context(bs); + GLOBAL_STATE_CODE(); bdrv_ref(bs); bdrv_graph_wrlock(bs); @@ -938,7 +942,7 @@ int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp) BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY, blk->perm, blk->shared_perm, blk, errp); - bdrv_graph_wrunlock(); + bdrv_graph_wrunlock_ctx(ctx); if (blk->root == NULL) { return -EPERM; } |