summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorAlberto Garcia2017-08-07 14:36:58 +0200
committerKevin Wolf2017-08-08 14:37:00 +0200
commit795be0621a643f3d103d112dfcbddee2992f5035 (patch)
tree717a243713c10e5f44c81a15feb98c14bf17493b /block
parentqemu-iotests/109: Fix lock race condition (diff)
downloadqemu-795be0621a643f3d103d112dfcbddee2992f5035.tar.gz
qemu-795be0621a643f3d103d112dfcbddee2992f5035.tar.xz
qemu-795be0621a643f3d103d112dfcbddee2992f5035.zip
quorum: Set sectors-count to 0 when reporting a flush error
The QUORUM_REPORT_BAD event has fields to report the sector in which the error was detected and the number of affected sectors starting from that one. This is important for read and write errors, but not for flush errors. For flush errors the current code reports the total size of the disk image. That is however not useful information in this case. Moreover, the bdrv_getlength() call can fail, and there's no good way of handling that failure. Since we're reporting useless information and we cannot even guarantee to do it in a consistent way, this patch changes the code to report 0 instead in all cases. Reported-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/quorum.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/block/quorum.c b/block/quorum.c
index 55ba916655..d04da4f430 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -785,8 +785,7 @@ static coroutine_fn int quorum_co_flush(BlockDriverState *bs)
for (i = 0; i < s->num_children; i++) {
result = bdrv_co_flush(s->children[i]->bs);
if (result) {
- quorum_report_bad(QUORUM_OP_TYPE_FLUSH, 0,
- bdrv_getlength(s->children[i]->bs),
+ quorum_report_bad(QUORUM_OP_TYPE_FLUSH, 0, 0,
s->children[i]->bs->node_name, result);
result_value.l = result;
quorum_count_vote(&error_votes, &result_value, i);