summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMax Reitz2020-11-13 22:17:16 +0100
committerKevin Wolf2020-11-17 12:38:28 +0100
commit9ca5b0e8427789438f5f8e8b6cc76bc8eb76c941 (patch)
treec8fd4c9db67799e7b835583c8f061f347b731a65 /block
parentio_uring: do not use pointer after free (diff)
downloadqemu-9ca5b0e8427789438f5f8e8b6cc76bc8eb76c941.tar.gz
qemu-9ca5b0e8427789438f5f8e8b6cc76bc8eb76c941.tar.xz
qemu-9ca5b0e8427789438f5f8e8b6cc76bc8eb76c941.zip
quorum: Require WRITE perm with rewrite-corrupted
Using rewrite-corrupted means quorum may issue writes to its children just from receiving read requests from its parents. Thus, it must take the WRITE permission when rewrite-corrupted is used. Signed-off-by: Max Reitz <mreitz@redhat.com> Message-Id: <20201113211718.261671-2-mreitz@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/quorum.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/block/quorum.c b/block/quorum.c
index e846a7e892..b10fc2089e 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -1163,7 +1163,12 @@ static void quorum_child_perm(BlockDriverState *bs, BdrvChild *c,
uint64_t perm, uint64_t shared,
uint64_t *nperm, uint64_t *nshared)
{
+ BDRVQuorumState *s = bs->opaque;
+
*nperm = perm & DEFAULT_PERM_PASSTHROUGH;
+ if (s->rewrite_corrupted) {
+ *nperm |= BLK_PERM_WRITE;
+ }
/*
* We cannot share RESIZE or WRITE, as this would make the