diff options
author | Max Reitz | 2020-11-13 22:17:16 +0100 |
---|---|---|
committer | Kevin Wolf | 2020-11-17 12:38:28 +0100 |
commit | 9ca5b0e8427789438f5f8e8b6cc76bc8eb76c941 (patch) | |
tree | c8fd4c9db67799e7b835583c8f061f347b731a65 /block | |
parent | io_uring: do not use pointer after free (diff) | |
download | qemu-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.c | 5 |
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 |