[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 4/5] replication: Assert that children are writable
From: |
Lukas Straub |
Subject: |
[PATCH v5 4/5] replication: Assert that children are writable |
Date: |
Mon, 12 Jul 2021 13:54:09 +0200 |
Assert that the children are writable where it's needed.
While there is no test-case for the
BLOCK_REPLICATION_FAILOVER_FAILED state, this at least ensures that
s->secondary_disk is always writable in case replication might go
into that state.
Signed-off-by: Lukas Straub <lukasstraub2@web.de>
---
block/replication.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/block/replication.c b/block/replication.c
index b74192f795..772bb63374 100644
--- a/block/replication.c
+++ b/block/replication.c
@@ -261,6 +261,13 @@ static coroutine_fn int
replication_co_writev(BlockDriverState *bs,
int64_t n;
assert(!flags);
+ assert(top->perm & BLK_PERM_WRITE);
+ if (s->mode == REPLICATION_MODE_SECONDARY &&
+ s->stage != BLOCK_REPLICATION_NONE &&
+ s->stage != BLOCK_REPLICATION_DONE) {
+ assert(base->perm & BLK_PERM_WRITE);
+ }
+
ret = replication_get_io_status(s);
if (ret < 0) {
goto out;
@@ -318,6 +325,9 @@ static void secondary_do_checkpoint(BlockDriverState *bs,
Error **errp)
Error *local_err = NULL;
int ret;
+ assert(active_disk->perm & BLK_PERM_WRITE);
+ assert(s->hidden_disk->perm & BLK_PERM_WRITE);
+
if (!s->backup_job) {
error_setg(errp, "Backup job was cancelled unexpectedly");
return;
--
2.20.1
pgpjIG29qDDE1.pgp
Description: OpenPGP digital signature