aboutsummaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2020-05-15 13:25:44 +0200
committerKevin Wolf <kwolf@redhat.com>2020-05-18 19:05:25 +0200
commit6ecbc6c52672db5c13805735ca02784879ce8285 (patch)
tree64d370422a8241e09dae8997ddffaffdc3e5e4cd /block
parent2d97fde43991829f74e1e258bb82031605bf9bca (diff)
downloadqemu-6ecbc6c52672db5c13805735ca02784879ce8285.zip
qemu-6ecbc6c52672db5c13805735ca02784879ce8285.tar.gz
qemu-6ecbc6c52672db5c13805735ca02784879ce8285.tar.bz2
replication: Avoid blk_make_empty() on read-only child
This is just a bandaid to keep tests/test-replication working after bdrv_make_empty() starts to assert that we're not trying to call it on a read-only child. For the real solution in the future, replication should not steal the BdrvChild from its backing file (this is never correct to do!), but instead have its own child node references, with the appropriate permissions. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/replication.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/block/replication.c b/block/replication.c
index c03980a..eb480a8 100644
--- a/block/replication.c
+++ b/block/replication.c
@@ -343,9 +343,18 @@ static void secondary_do_checkpoint(BDRVReplicationState *s, Error **errp)
return;
}
- ret = s->hidden_disk->bs->drv->bdrv_make_empty(s->hidden_disk->bs);
+ BlockBackend *blk = blk_new(qemu_get_current_aio_context(),
+ BLK_PERM_WRITE, BLK_PERM_ALL);
+ blk_insert_bs(blk, s->hidden_disk->bs, &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ blk_unref(blk);
+ return;
+ }
+
+ ret = blk_make_empty(blk, errp);
+ blk_unref(blk);
if (ret < 0) {
- error_setg(errp, "Cannot make hidden disk empty");
return;
}
}