qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 17/36] quorum: Forbid adding children in blkverify mode
Date: Mon,  5 Nov 2018 17:37:25 +0100	[thread overview]
Message-ID: <20181105163744.25139-18-kwolf@redhat.com> (raw)
In-Reply-To: <20181105163744.25139-1-kwolf@redhat.com>

From: Alberto Garcia <berto@igalia.com>

The blkverify mode of Quorum only works when the number of children is
exactly two, so any attempt to add a new one must return an error.

quorum_del_child() on the other hand doesn't need any additional check
because decreasing the number of children would make it go under the
vote threshold.

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reported-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/quorum.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/block/quorum.c b/block/quorum.c
index 6188ff6666..16b3c8067c 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -992,6 +992,11 @@ static void quorum_add_child(BlockDriverState *bs, BlockDriverState *child_bs,
     char indexstr[32];
     int ret;
 
+    if (s->is_blkverify) {
+        error_setg(errp, "Cannot add a child to a quorum in blkverify mode");
+        return;
+    }
+
     assert(s->num_children <= INT_MAX / sizeof(BdrvChild *));
     if (s->num_children == INT_MAX / sizeof(BdrvChild *) ||
         s->next_child_index == UINT_MAX) {
@@ -1046,6 +1051,9 @@ static void quorum_del_child(BlockDriverState *bs, BdrvChild *child,
         return;
     }
 
+    /* We know now that num_children > threshold, so blkverify must be false */
+    assert(!s->is_blkverify);
+
     bdrv_drained_begin(bs);
 
     /* We can safely remove this child now */
-- 
2.19.1

  parent reply	other threads:[~2018-11-05 16:45 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-05 16:37 [Qemu-devel] [PULL 00/36] Block layer patches Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 01/36] block/vvfat: Fix crash when reporting error about too many files in directory Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 02/36] block: replace "discard" literal with BDRV_OPT_DISCARD macro Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 03/36] qemu-io-cmds: Fix two format strings Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 04/36] block/qcow2: Don't take address of fields in packed structs Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 05/36] block/qcow: " Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 06/36] block/qcow2-bitmap: " Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 07/36] crypto: initialize sector size even when opening with no IO flag Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 08/36] qcow2: Get the request alignment for encrypted images from QCryptoBlock Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 09/36] block: change some function return type to bool Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 10/36] iotests: make 083 specific to raw Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 11/36] vpc: Don't leak opts in vpc_open() Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 12/36] block/vhdx: Don't take address of fields in packed structs Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 13/36] block/vdi: " Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 14/36] quorum: Remove quorum_err() Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 15/36] quorum: Return an error if the blkverify mode has invalid settings Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 16/36] iotest: Test the blkverify mode of the Quorum driver Kevin Wolf
2018-11-05 16:37 ` Kevin Wolf [this message]
2018-11-05 16:37 ` [Qemu-devel] [PULL 18/36] iotest: Test x-blockdev-change on a Quorum Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 19/36] block: Update flags in bdrv_set_read_only() Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 20/36] block: Add auto-read-only option Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 21/36] rbd: Close image in qemu_rbd_open() error path Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 22/36] block: Require auto-read-only for existing fallbacks Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 23/36] nbd: Support auto-read-only option Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 24/36] file-posix: " Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 25/36] curl: " Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 26/36] gluster: " Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 27/36] iscsi: " Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 28/36] block: Make auto-read-only=on default for -drive Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 29/36] qemu-iotests: Test auto-read-only with -drive and -blockdev Kevin Wolf
2018-11-15 20:39   ` Eric Blake
2018-11-05 16:37 ` [Qemu-devel] [PULL 30/36] option: Make option help nicer to read Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 31/36] chardev: Indent list of chardevs Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 32/36] qdev-monitor: Make device options help nicer Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 33/36] object: Make option help nicer to read Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 34/36] fw_cfg: Drop newline in @file description Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 35/36] vdi: Use a literal number of bytes for DEFAULT_CLUSTER_SIZE Kevin Wolf
2018-11-05 16:37 ` [Qemu-devel] [PULL 36/36] include: Add a comment to explain the origin of sizes' lookup table Kevin Wolf
2018-11-05 18:58 ` [Qemu-devel] [PULL 00/36] Block layer patches Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181105163744.25139-18-kwolf@redhat.com \
    --to=kwolf@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).