From: Alberto Garcia Date: Wed, 17 Oct 2018 14:33:50 +0000 (+0300) Subject: quorum: Return an error if the blkverify mode has invalid settings X-Git-Tag: v3.1.0-rc0~8^2~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=83aedca872b5c2bacf9fd35f62cf96479fbf062e;p=thirdparty%2Fqemu.git quorum: Return an error if the blkverify mode has invalid settings The blkverify mode of Quorum can only be enabled if the number of children is exactly two and the value of vote-threshold is also two. If the user tries to enable it but the other settings are incorrect then QEMU simply prints an error message to stderr and carries on disabling the blkverify setting. This patch makes quorum_open() fail and return an error in this case. Signed-off-by: Alberto Garcia Reported-by: Markus Armbruster Signed-off-by: Kevin Wolf --- diff --git a/block/quorum.c b/block/quorum.c index b1b777baef0..6188ff6666f 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -912,13 +912,12 @@ static int quorum_open(BlockDriverState *bs, QDict *options, int flags, s->read_pattern = ret; if (s->read_pattern == QUORUM_READ_PATTERN_QUORUM) { - /* is the driver in blkverify mode */ - if (qemu_opt_get_bool(opts, QUORUM_OPT_BLKVERIFY, false) && - s->num_children == 2 && s->threshold == 2) { - s->is_blkverify = true; - } else if (qemu_opt_get_bool(opts, QUORUM_OPT_BLKVERIFY, false)) { - fprintf(stderr, "blkverify mode is set by setting blkverify=on " - "and using two files with vote_threshold=2\n"); + s->is_blkverify = qemu_opt_get_bool(opts, QUORUM_OPT_BLKVERIFY, false); + if (s->is_blkverify && (s->num_children != 2 || s->threshold != 2)) { + error_setg(&local_err, "blkverify=on can only be set if there are " + "exactly two files and vote-threshold is 2"); + ret = -EINVAL; + goto exit; } s->rewrite_corrupted = qemu_opt_get_bool(opts, QUORUM_OPT_REWRITE,