[PULL,11/51] replication: Avoid blk_make_empty() on read-only child
diff mbox series

Message ID 20200515124521.335403-12-kwolf@redhat.com
State New
Headers show
Series
  • [PULL,01/51] iotests/109: Don't mirror with mismatched size
Related show

Commit Message

Kevin Wolf May 15, 2020, 12:44 p.m. UTC
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>
---
 block/replication.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

Patch
diff mbox series

diff --git a/block/replication.c b/block/replication.c
index c03980a192..eb480a8e08 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;
     }
 }