[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 8/8] block: fix external snapshot abort permission er
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 8/8] block: fix external snapshot abort permission error |
Date: |
Wed, 7 Jun 2017 19:50:19 +0200 |
From: Jeff Cody <address@hidden>
In external_snapshot_abort(), we try to undo what was done in
external_snapshot_prepare() calling bdrv_replace_node() to swap the
nodes back. However, we receive a permissions error as writers are
blocked on the old node, which is now the new node backing file.
An easy fix (initially suggested by Kevin Wolf) is to call
bdrv_set_backing_hd() on the new node, to set the backing node to NULL.
Signed-off-by: Jeff Cody <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
blockdev.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/blockdev.c b/blockdev.c
index 892d768..6472548 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1803,7 +1803,11 @@ static void external_snapshot_abort(BlkActionState
*common)
DO_UPCAST(ExternalSnapshotState, common, common);
if (state->new_bs) {
if (state->overlay_appended) {
+ bdrv_ref(state->old_bs); /* we can't let bdrv_set_backind_hd()
+ close state->old_bs; we need it */
+ bdrv_set_backing_hd(state->new_bs, NULL, &error_abort);
bdrv_replace_node(state->new_bs, state->old_bs, &error_abort);
+ bdrv_unref(state->old_bs); /* bdrv_replace_node() ref'ed old_bs */
}
}
}
--
1.8.3.1
- [Qemu-block] [PULL 0/8] Block layer patches, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 1/8] block: Fix anonymous BBs in blk_root_inactivate(), Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 2/8] migration: Inactivate images after .save_live_complete_precopy(), Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 3/8] migration/block: Clean up BBs in block_save_complete(), Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 4/8] qemu-iotests: Block migration test, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 5/8] commit: Fix use after free in completion, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 7/8] block/qcow.c: Fix memory leak in qcow_create(), Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 6/8] qemu-iotests: Test automatic commit job cancel on hot unplug, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 8/8] block: fix external snapshot abort permission error,
Kevin Wolf <=
- Re: [Qemu-block] [Qemu-devel] [PULL 0/8] Block layer patches, Peter Maydell, 2017/06/12