|
 |
cfddb1 |
From 0c16442f2d93f32a229b87d2672e2dc8025ec704 Mon Sep 17 00:00:00 2001
|
|
 |
cfddb1 |
From: Jan Friesse <jfriesse@redhat.com>
|
|
 |
cfddb1 |
Date: Wed, 4 Mar 2020 11:42:15 +0100
|
|
 |
cfddb1 |
Subject: [PATCH] votequorum: Change check of expected_votes
|
|
 |
cfddb1 |
|
|
 |
cfddb1 |
Previously value of new expected_votes was checked so newly computed
|
|
 |
cfddb1 |
quorum value was in the interval <total_votes / 2, total_votes>. The
|
|
 |
cfddb1 |
upper range prevented the cluster to become unquorate, but bottom check
|
|
 |
cfddb1 |
was almost useless because it allowed to change expected_votes so it is
|
|
 |
cfddb1 |
smaller than total_votes.
|
|
 |
cfddb1 |
|
|
 |
cfddb1 |
Solution is to check if expected_votes is bigger or equal to total_votes
|
|
 |
cfddb1 |
and for quorate cluster only check if cluster doesn't become unquorate
|
|
 |
cfddb1 |
(for unquorate cluster one can set upper range freely - as it is
|
|
 |
cfddb1 |
perfectly possible when using config file)
|
|
 |
cfddb1 |
|
|
 |
cfddb1 |
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
|
|
 |
cfddb1 |
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
|
|
 |
cfddb1 |
---
|
|
 |
cfddb1 |
exec/votequorum.c | 10 +++++++---
|
|
 |
cfddb1 |
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
 |
cfddb1 |
|
|
 |
cfddb1 |
diff --git a/exec/votequorum.c b/exec/votequorum.c
|
|
 |
cfddb1 |
index 52424fa..b152425 100644
|
|
 |
cfddb1 |
--- a/exec/votequorum.c
|
|
 |
cfddb1 |
+++ b/exec/votequorum.c
|
|
 |
cfddb1 |
@@ -1,5 +1,5 @@
|
|
 |
cfddb1 |
/*
|
|
 |
cfddb1 |
- * Copyright (c) 2009-2015 Red Hat, Inc.
|
|
 |
cfddb1 |
+ * Copyright (c) 2009-2020 Red Hat, Inc.
|
|
 |
cfddb1 |
*
|
|
 |
cfddb1 |
* All rights reserved.
|
|
 |
cfddb1 |
*
|
|
 |
cfddb1 |
@@ -2688,8 +2688,12 @@ static void message_handler_req_lib_votequorum_setexpected (void *conn, const vo
|
|
 |
cfddb1 |
*/
|
|
 |
cfddb1 |
newquorum = calculate_quorum(1, req_lib_votequorum_setexpected->expected_votes, &total_votes);
|
|
 |
cfddb1 |
allow_downscale = allow_downscale_status;
|
|
 |
cfddb1 |
- if (newquorum < total_votes / 2 ||
|
|
 |
cfddb1 |
- newquorum > total_votes) {
|
|
 |
cfddb1 |
+ /*
|
|
 |
cfddb1 |
+ * Setting expected_votes < total_votes doesn't make sense.
|
|
 |
cfddb1 |
+ * For quorate cluster prevent cluster to become unquorate.
|
|
 |
cfddb1 |
+ */
|
|
 |
cfddb1 |
+ if (req_lib_votequorum_setexpected->expected_votes < total_votes ||
|
|
 |
cfddb1 |
+ (cluster_is_quorate && (newquorum > total_votes))) {
|
|
 |
cfddb1 |
error = CS_ERR_INVALID_PARAM;
|
|
 |
cfddb1 |
goto error_exit;
|
|
 |
cfddb1 |
}
|
|
 |
cfddb1 |
--
|
|
 |
cfddb1 |
1.8.3.1
|
|
 |
cfddb1 |
|