diff --git a/.corosync.metadata b/.corosync.metadata index 9920934..9a54be5 100644 --- a/.corosync.metadata +++ b/.corosync.metadata @@ -1 +1 @@ -f3c764a3b7fa805250d2ef35fd1d199b14367bd2 SOURCES/corosync-2.4.0.tar.gz +76eea6fe72f933628b3a6ae88cc437c3e8f770d7 SOURCES/corosync-2.4.3.tar.gz diff --git a/.gitignore b/.gitignore index dd8fafe..116e3b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/corosync-2.4.0.tar.gz +SOURCES/corosync-2.4.3.tar.gz diff --git a/SOURCES/bz1363654-1-Config-Flag-config-uidgid-entries.patch b/SOURCES/bz1363654-1-Config-Flag-config-uidgid-entries.patch deleted file mode 100644 index fa9d90d..0000000 --- a/SOURCES/bz1363654-1-Config-Flag-config-uidgid-entries.patch +++ /dev/null @@ -1,129 +0,0 @@ -From f837f95dfe96d60f2367e900efd4def7a07b2a89 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Wed, 3 Aug 2016 16:51:51 +0200 -Subject: [PATCH] Config: Flag config uidgid entries - -Uidgid entries parsed from configuration files now has prefix -(uidgid.config.) so they are distinguishable from dynamically added -entries. Entries added from config file are pruned on reload if no -longer exists in config file (dynamic one stays unaffected). Also whole -uidgid.config. prefix is made read only. - -This make PCMK work again after configuration reload is called. - -Signed-off-by: Jan Friesse -Reviewed-by: Christine Caulfield ---- - exec/cfg.c | 2 +- - exec/coroparse.c | 8 ++++---- - exec/ipc_glue.c | 8 ++++++++ - exec/main.c | 1 + - man/cmap_keys.8 | 4 +++- - 5 files changed, 17 insertions(+), 6 deletions(-) - -diff --git a/exec/cfg.c b/exec/cfg.c -index 87e49c4..4e62d73 100644 ---- a/exec/cfg.c -+++ b/exec/cfg.c -@@ -703,7 +703,7 @@ static void message_handler_req_exec_cfg_reload_config ( - remove_deleted_entries(temp_map, "totem."); - remove_deleted_entries(temp_map, "nodelist."); - remove_deleted_entries(temp_map, "quorum."); -- remove_deleted_entries(temp_map, "uidgid."); -+ remove_deleted_entries(temp_map, "uidgid.config."); - - /* Remove entries that cannot be changed */ - remove_ro_entries(temp_map); -diff --git a/exec/coroparse.c b/exec/coroparse.c -index 4c1fea9..374ed7d 100644 ---- a/exec/coroparse.c -+++ b/exec/coroparse.c -@@ -794,7 +794,7 @@ static int main_config_parser_cb(const char *path, - *error_string = error_string_response; - return (0); - } -- snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.uid.%u", -+ snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.uid.%u", - uid); - icmap_set_uint8_r(config_map, key_name, 1); - add_as_string = 0; -@@ -804,7 +804,7 @@ static int main_config_parser_cb(const char *path, - *error_string = error_string_response; - return (0); - } -- snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.gid.%u", -+ snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.gid.%u", - gid); - icmap_set_uint8_r(config_map, key_name, 1); - add_as_string = 0; -@@ -1203,7 +1203,7 @@ static int uidgid_config_parser_cb(const char *path, - *error_string = error_string_response; - return (0); - } -- snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.uid.%u", -+ snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.uid.%u", - uid); - icmap_set_uint8_r(config_map, key_name, 1); - } else if (strcmp(path, "uidgid.gid") == 0) { -@@ -1212,7 +1212,7 @@ static int uidgid_config_parser_cb(const char *path, - *error_string = error_string_response; - return (0); - } -- snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.gid.%u", -+ snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.gid.%u", - gid); - icmap_set_uint8_r(config_map, key_name, 1); - } else { -diff --git a/exec/ipc_glue.c b/exec/ipc_glue.c -index 79ee4df..c8cbbf8 100644 ---- a/exec/ipc_glue.c -+++ b/exec/ipc_glue.c -@@ -194,10 +194,18 @@ static int32_t cs_ipcs_connection_accept (qb_ipcs_connection_t *c, uid_t euid, g - if (icmap_get_uint8(key_name, &u8) == CS_OK && u8 == 1) - return 0; - -+ snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.uid.%u", euid); -+ if (icmap_get_uint8(key_name, &u8) == CS_OK && u8 == 1) -+ return 0; -+ - snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.gid.%u", egid); - if (icmap_get_uint8(key_name, &u8) == CS_OK && u8 == 1) - return 0; - -+ snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.gid.%u", egid); -+ if (icmap_get_uint8(key_name, &u8) == CS_OK && u8 == 1) -+ return 0; -+ - log_printf(LOGSYS_LEVEL_ERROR, "Denied connection attempt from %d:%d", euid, egid); - - return -EACCES; -diff --git a/exec/main.c b/exec/main.c -index 54df1b6..82fb808 100644 ---- a/exec/main.c -+++ b/exec/main.c -@@ -1011,6 +1011,7 @@ static void set_icmap_ro_keys_flag (void) - icmap_set_ro_access("runtime.totem.", CS_TRUE, CS_TRUE); - icmap_set_ro_access("runtime.services.", CS_TRUE, CS_TRUE); - icmap_set_ro_access("runtime.config.", CS_TRUE, CS_TRUE); -+ icmap_set_ro_access("uidgid.config.", CS_TRUE, CS_TRUE); - - /* - * Set RO flag for constrete keys of configuration which can't be changed -diff --git a/man/cmap_keys.8 b/man/cmap_keys.8 -index a17147a..7517788 100644 ---- a/man/cmap_keys.8 -+++ b/man/cmap_keys.8 -@@ -275,7 +275,9 @@ State of the client. Can be one of failed, stopped, running and waiting for quor - .TP - uidgid.* - Information about users/groups which are allowed to make IPC connections to --corosync. -+corosync. Entries loaded from configuration file are stored with -+uidgid.config.* prefix and are pruned on configuration file reload. Dynamic -+entries has uidgid.* prefix and a configuration file reload doesn't affect them. - - .TP - quorum.cancel_wait_for_all --- -1.7.1 - diff --git a/SOURCES/bz1367813-1-Man-Fix-corosync-qdevice-net-certutil-link.patch b/SOURCES/bz1367813-1-Man-Fix-corosync-qdevice-net-certutil-link.patch deleted file mode 100644 index 84ed4a0..0000000 --- a/SOURCES/bz1367813-1-Man-Fix-corosync-qdevice-net-certutil-link.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 49a9f722bba13e4b2762151b7b96b1d4196fd5e0 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Tue, 9 Aug 2016 17:03:17 +0200 -Subject: [PATCH] Man: Fix corosync-qdevice-net-certutil link - -Signed-off-by: Jan Friesse ---- - man/corosync-qdevice.8 | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/man/corosync-qdevice.8 b/man/corosync-qdevice.8 -index d84597c..fbeb328 100644 ---- a/man/corosync-qdevice.8 -+++ b/man/corosync-qdevice.8 -@@ -310,7 +310,7 @@ Maximum connection timeout accepted by client in ms. (120000) - Enable test algorithm. (if built with --enable-debug on, otherwise off) - .SH SEE ALSO - .BR corosync-qdevice-tool (8) --.BR corosync-qdevice-certutil (8) -+.BR corosync-qdevice-net-certutil (8) - .BR corosync-qnetd (8) - .BR corosync.conf (5) - .SH AUTHOR --- -1.7.1 - diff --git a/SOURCES/bz1367813-2-man-mention-qdevice-incompatibilites-in-votequorum.5.patch b/SOURCES/bz1367813-2-man-mention-qdevice-incompatibilites-in-votequorum.5.patch deleted file mode 100644 index f2314fc..0000000 --- a/SOURCES/bz1367813-2-man-mention-qdevice-incompatibilites-in-votequorum.5.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 0da1b7446239424b76b1d5eb7c3640afce9b054e Mon Sep 17 00:00:00 2001 -From: Christine Caulfield -Date: Fri, 12 Aug 2016 14:25:39 +0100 -Subject: [PATCH] man: mention qdevice incompatibilites in votequorum.5 - -Signed-off-by: Christine Caulfield ---- - man/votequorum.5 | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/man/votequorum.5 b/man/votequorum.5 -index 43d7c28..ee4814a 100644 ---- a/man/votequorum.5 -+++ b/man/votequorum.5 -@@ -225,7 +225,10 @@ NOTES: In order for the cluster to downgrade automatically from 2 nodes - to a 1 node cluster, the auto_tie_breaker feature must also be enabled (see below). - If auto_tie_breaker is not enabled, and one more failure occours, the - remaining node will not be quorate. LMS does not work with asymmetric voting --schemes, each node must vote 1. -+schemes, each node must vote 1. LMS is also incompatible with quorum devices, -+if last_man_standing is specified in corosync.conf then the quorum device -+will be disabled. -+ - .PP - Example configuration 1: - .nf -@@ -270,7 +273,9 @@ be required to maintain quorum. If a (space-separated) list is given, the - nodes are evaluated in order, so if the first node is present then it will - be used to determine the quorate partition, if that node is not in either - half (ie was not in the cluster before the split) then the second node ID --will be checked for and so on. -+will be checked for and so on. ATB is incompatible with quorum devices - -+if auto_tie_breaker is specified in corosync.conf then the quorum device -+will be disabled. - .PP - Example configuration 1: - .nf --- -1.7.1 - diff --git a/SOURCES/bz1367813-3-Qnetd-LMS-Fix-two-partition-use-case.patch b/SOURCES/bz1367813-3-Qnetd-LMS-Fix-two-partition-use-case.patch deleted file mode 100644 index 1d123be..0000000 --- a/SOURCES/bz1367813-3-Qnetd-LMS-Fix-two-partition-use-case.patch +++ /dev/null @@ -1,81 +0,0 @@ -From b0c850f308d44ddcdf1a1f881c1e1142ad489385 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Tue, 30 Aug 2016 16:57:31 +0200 -Subject: [PATCH] Qnetd LMS: Fix two partition use case - -Solves situation when in 2 node cluster tie-breaker node dies. Because -code contains two bugs, other node got NACK instead of ACK. - -- Algo timer is not stack, so calling abort and schedule in timer -callback without setting reschedule is noop. -- It's needed to check not only what current node thinks about -membership, but also what other nodes thinks. If views diverge -> wait. - -Thanks Christine Caulfield for fixing the English -in the comments somewhat. - -Signed-off-by: Jan Friesse -Reviewed-by: Christine Caulfield ---- - qdevices/qnetd-algo-lms.c | 12 ++++++++++++ - qdevices/qnetd-algo-utils.c | 14 ++++++++++++++ - 2 files changed, 26 insertions(+), 0 deletions(-) - -diff --git a/qdevices/qnetd-algo-lms.c b/qdevices/qnetd-algo-lms.c -index 55a1bb2..cdd86c4 100644 ---- a/qdevices/qnetd-algo-lms.c -+++ b/qdevices/qnetd-algo-lms.c -@@ -361,6 +361,18 @@ qnetd_algo_lms_timer_callback(struct qnetd_client *client, int *reschedule_timer - (*result_vote == TLV_VOTE_ACK || *result_vote == TLV_VOTE_NACK)) { - *send_vote = 1; - } -+ -+ if (ret == TLV_REPLY_ERROR_CODE_NO_ERROR && -+ *result_vote == TLV_VOTE_WAIT_FOR_REPLY) { -+ /* -+ * Reschedule was called in the do_lms_algorithm but algo_timer is -+ * not stack based so there can only be one. So if do_lms aborted -+ * the active timer, and scheduled it again the timer would be aborted -+ * if reschedule_timer was not set. -+ */ -+ *reschedule_timer = 1; -+ } -+ - return ret; - } - -diff --git a/qdevices/qnetd-algo-utils.c b/qdevices/qnetd-algo-utils.c -index 440f81f..e26b40a 100644 ---- a/qdevices/qnetd-algo-utils.c -+++ b/qdevices/qnetd-algo-utils.c -@@ -65,6 +65,19 @@ qnetd_algo_all_ring_ids_match(struct qnetd_client *client, const struct tlv_ring - } - } - -+ if (in_our_partition == 0) { -+ /* -+ * Also try to look from the other side to see if we are -+ * not in the other node's membership list. -+ * Because if so it may mean the membership lists are not equal -+ */ -+ TAILQ_FOREACH(node_info, &other_client->last_membership_node_list, entries) { -+ if (node_info->node_id == client->node_id) { -+ in_our_partition = 1; -+ } -+ } -+ } -+ - /* - * If the other nodes on our side of a partition have a different ring ID then - * we need to wait until they have all caught up before making a decision -@@ -74,6 +87,7 @@ qnetd_algo_all_ring_ids_match(struct qnetd_client *client, const struct tlv_ring - return (-1); /* ring IDs don't match */ - } - } -+ - return (0); - } - --- -1.7.1 - diff --git a/SOURCES/bz1371880-1-libvotequorum-Bump-version.patch b/SOURCES/bz1371880-1-libvotequorum-Bump-version.patch deleted file mode 100644 index 9507962..0000000 --- a/SOURCES/bz1371880-1-libvotequorum-Bump-version.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 96f91f23a6a413535cc2f0e8492e2300373fed40 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Mon, 7 Nov 2016 17:39:12 +0100 -Subject: [PATCH] libvotequorum: Bump version - -Signed-off-by: Jan Friesse ---- - lib/libvotequorum.verso | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/lib/libvotequorum.verso b/lib/libvotequorum.verso -index 66ce77b..ae9a76b 100644 ---- a/lib/libvotequorum.verso -+++ b/lib/libvotequorum.verso -@@ -1 +1 @@ --7.0.0 -+8.0.0 --- -1.7.1 - diff --git a/SOURCES/bz1371880-2-votequorum-Don-t-update-expected_votes-display-if-va.patch b/SOURCES/bz1371880-2-votequorum-Don-t-update-expected_votes-display-if-va.patch deleted file mode 100644 index a7b599c..0000000 --- a/SOURCES/bz1371880-2-votequorum-Don-t-update-expected_votes-display-if-va.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 596433066805af029be1292a37a35ce31307f0bf Mon Sep 17 00:00:00 2001 -From: Christine Caulfield -Date: Tue, 13 Sep 2016 14:28:56 +0100 -Subject: [PATCH] votequorum: Don't update expected_votes display if value is too high - -If expected_votes was set via the library but the calculation -decides it's too high, then an error is correctly returned but -the value is still set in the nodes' expected_votes field and -turns up in the corosync-quorumtool display. - -This patch separates out the quorum calculation from the updating -of expected_votes per node to prevent this from happening. - -Signed-off-by: Christine Caulfield -Reviewed-by: Jan Friesse -(cherry picked from commit bd2e6b5d9d03f2cb208ecccee0f76aeb06dbd1b4) ---- - exec/votequorum.c | 25 ++++++++++++++++++++----- - 1 files changed, 20 insertions(+), 5 deletions(-) - -diff --git a/exec/votequorum.c b/exec/votequorum.c -index 459388f..405350f 100644 ---- a/exec/votequorum.c -+++ b/exec/votequorum.c -@@ -931,11 +931,7 @@ static int calculate_quorum(int allow_decrease, unsigned int max_expected, unsig - node->node_id, node->state, node->votes, node->expected_votes); - - if (node->state == NODESTATE_MEMBER) { -- if (max_expected) { -- node->expected_votes = max_expected; -- } else { -- highest_expected = max(highest_expected, node->expected_votes); -- } -+ highest_expected = max(highest_expected, node->expected_votes); - total_votes += node->votes; - total_nodes++; - } -@@ -986,6 +982,22 @@ static int calculate_quorum(int allow_decrease, unsigned int max_expected, unsig - return newquorum; - } - -+static void update_node_expected_votes(int new_expected_votes) -+{ -+ struct list_head *nodelist; -+ struct cluster_node *node; -+ -+ if (new_expected_votes) { -+ list_iterate(nodelist, &cluster_members_list) { -+ node = list_entry(nodelist, struct cluster_node, list); -+ -+ if (node->state == NODESTATE_MEMBER) { -+ node->expected_votes = new_expected_votes; -+ } -+ } -+ } -+} -+ - static void are_we_quorate(unsigned int total_votes) - { - int quorate; -@@ -1126,6 +1138,8 @@ static void recalculate_quorum(int allow_decrease, int by_current_nodes) - } - - quorum = calculate_quorum(allow_decrease, cluster_members, &total_votes); -+ update_node_expected_votes(cluster_members); -+ - are_we_quorate(total_votes); - - LEAVE(); -@@ -2651,6 +2665,7 @@ static void message_handler_req_lib_votequorum_setexpected (void *conn, const vo - error = CS_ERR_INVALID_PARAM; - goto error_exit; - } -+ update_node_expected_votes(req_lib_votequorum_setexpected->expected_votes); - - votequorum_exec_send_reconfigure(VOTEQUORUM_RECONFIG_PARAM_EXPECTED_VOTES, us->node_id, - req_lib_votequorum_setexpected->expected_votes); --- -1.7.1 - diff --git a/SOURCES/bz1371880-3-votequorum-simplify-reconfigure-message-handling.patch b/SOURCES/bz1371880-3-votequorum-simplify-reconfigure-message-handling.patch deleted file mode 100644 index 10dca2f..0000000 --- a/SOURCES/bz1371880-3-votequorum-simplify-reconfigure-message-handling.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 4a385f2e94c7168dbd92168c54a80ee97a3c2140 Mon Sep 17 00:00:00 2001 -From: Christine Caulfield -Date: Tue, 13 Sep 2016 15:55:58 +0100 -Subject: [PATCH] votequorum: simplify reconfigure message handling - -As we now have update_node_expected_votes(), we can use that -when receiving a new EXPECTED_VOTES value from another node -rather than having our own loop. - -Signed-off-by: Christine Caulfield -(cherry picked from commit c4683be9b0bafec7f288c0201b82c90d0c43d5ce) ---- - exec/votequorum.c | 9 ++------- - 1 files changed, 2 insertions(+), 7 deletions(-) - -diff --git a/exec/votequorum.c b/exec/votequorum.c -index 405350f..f61aa81 100644 ---- a/exec/votequorum.c -+++ b/exec/votequorum.c -@@ -2158,7 +2158,6 @@ static void message_handler_req_exec_votequorum_reconfigure ( - { - const struct req_exec_quorum_reconfigure *req_exec_quorum_reconfigure = message; - struct cluster_node *node; -- struct list_head *nodelist; - - ENTER(); - -@@ -2168,12 +2167,8 @@ static void message_handler_req_exec_votequorum_reconfigure ( - switch(req_exec_quorum_reconfigure->param) - { - case VOTEQUORUM_RECONFIG_PARAM_EXPECTED_VOTES: -- list_iterate(nodelist, &cluster_members_list) { -- node = list_entry(nodelist, struct cluster_node, list); -- if (node->state == NODESTATE_MEMBER) { -- node->expected_votes = req_exec_quorum_reconfigure->value; -- } -- } -+ update_node_expected_votes(req_exec_quorum_reconfigure->value); -+ - votequorum_exec_send_expectedvotes_notification(); - update_ev_barrier(req_exec_quorum_reconfigure->value); - if (ev_tracking) { --- -1.7.1 - diff --git a/SOURCES/bz1371880-4-build-Fix-build-on-RHEL7.3-latest.patch b/SOURCES/bz1371880-4-build-Fix-build-on-RHEL7.3-latest.patch deleted file mode 100644 index b67271b..0000000 --- a/SOURCES/bz1371880-4-build-Fix-build-on-RHEL7.3-latest.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 19e48a6eee20d5f34f79a3b8d4e1c694169c1d7b Mon Sep 17 00:00:00 2001 -From: Fabio M. Di Nitto -Date: Sun, 23 Oct 2016 08:23:52 +0200 -Subject: [PATCH 01/18] [build] Fix build on RHEL7.3 latest - -header inclusion have changed - -Signed-off-by: Fabio M. Di Nitto -(cherry picked from commit e204e871ec4eb705d177598d5c7ae8f0446a280f) ---- - lib/sam.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -diff --git a/lib/sam.c b/lib/sam.c -index 1596ae2..33aa394 100644 ---- a/lib/sam.c -+++ b/lib/sam.c -@@ -46,6 +46,7 @@ - #include - #include - #include -+#include - - #include - #include --- -1.7.1 - diff --git a/SOURCES/bz1434528-1-cfg-Prevents-use-of-uninitialized-buffer.patch b/SOURCES/bz1434528-1-cfg-Prevents-use-of-uninitialized-buffer.patch deleted file mode 100644 index d294e3f..0000000 --- a/SOURCES/bz1434528-1-cfg-Prevents-use-of-uninitialized-buffer.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 52e6ae57ea06d0bef61c5c9250881bef1372ead2 Mon Sep 17 00:00:00 2001 -From: Michael Jones -Date: Mon, 10 Oct 2016 11:18:25 -0500 -Subject: [PATCH] cfg: Prevents use of uninitialized buffer - -Signed-off-by: Michael Jones -Reviewed-by: Jan Friesse -(cherry picked from commit a24d26c46ace663ac69e469f8e415e14cc1a8906) ---- - exec/cfg.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/exec/cfg.c b/exec/cfg.c -index 4e62d73..a5482ad 100644 ---- a/exec/cfg.c -+++ b/exec/cfg.c -@@ -521,8 +521,8 @@ static void message_handler_req_exec_cfg_killnode ( - cs_name_t reason; - - ENTER(); -- log_printf(LOGSYS_LEVEL_DEBUG, "request to kill node %d(us=%d): %s", -- req_exec_cfg_killnode->nodeid, api->totem_nodeid_get(), reason.value); -+ log_printf(LOGSYS_LEVEL_DEBUG, "request to kill node %d(us=%d)", -+ req_exec_cfg_killnode->nodeid, api->totem_nodeid_get()); - if (req_exec_cfg_killnode->nodeid == api->totem_nodeid_get()) { - marshall_from_mar_name_t(&reason, &req_exec_cfg_killnode->reason); - log_printf(LOGSYS_LEVEL_NOTICE, "Killed by node %d: %s", --- -1.7.1 - diff --git a/SOURCES/bz1434528-2-Totempg-remove-duplicate-memcpy-in-mcast_msg-func.patch b/SOURCES/bz1434528-2-Totempg-remove-duplicate-memcpy-in-mcast_msg-func.patch deleted file mode 100644 index 2c7a206..0000000 --- a/SOURCES/bz1434528-2-Totempg-remove-duplicate-memcpy-in-mcast_msg-func.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 4a8e9d80409590cb42732ae3105b5ae71fda52c1 Mon Sep 17 00:00:00 2001 -From: Bin Liu -Date: Fri, 2 Dec 2016 10:37:27 +0800 -Subject: [PATCH] Totempg: remove duplicate memcpy in mcast_msg func - -In function mcast_msg of totempg.c, line 923, there is a memcpy call in -"else" branch, and also another memcpy out of the "else" branch, while -the two calls have the same parameters. It is possibleto remove the memcpy -in "else" branch. - -Signed-off-by: Bin Liu -Reviewed-by: Jan Friesse -(cherry picked from commit 819d66ca1ccaa86ef21fc4112033b38ce3f9af29) ---- - exec/totempg.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -diff --git a/exec/totempg.c b/exec/totempg.c -index 0b46782..05729be 100644 ---- a/exec/totempg.c -+++ b/exec/totempg.c -@@ -934,8 +934,6 @@ static int mcast_msg ( - data_ptr = (unsigned char *)iovec[i].iov_base + copy_base; - else { - data_ptr = fragmentation_data; -- memcpy (&fragmentation_data[fragment_size], -- (unsigned char *)iovec[i].iov_base + copy_base, copy_len); - } - - memcpy (&fragmentation_data[fragment_size], --- -1.7.1 - diff --git a/SOURCES/bz1434528-3-Remove-redundant-header-file-inclusion.patch b/SOURCES/bz1434528-3-Remove-redundant-header-file-inclusion.patch deleted file mode 100644 index f314f05..0000000 --- a/SOURCES/bz1434528-3-Remove-redundant-header-file-inclusion.patch +++ /dev/null @@ -1,183 +0,0 @@ -From d6c7ade277a4a23d84c56d7fde6b60b377a1023b Mon Sep 17 00:00:00 2001 -From: Takeshi MIZUTA -Date: Mon, 5 Dec 2016 01:23:46 +0900 -Subject: [PATCH] Remove redundant header file inclusion - -Signed-off-by: Takeshi MIZUTA -Signed-off-by: Jan Friesse -Reviewed-by: Jan Friesse -(rebased from commit 4939c75629cf9ecb2c03ee28645c9c18c858cfa9) ---- - cts/agents/common_test_agent.c | 1 - - cts/agents/cpg_test_agent.c | 1 - - exec/cmap.c | 1 - - exec/cpg.c | 2 -- - exec/quorum.c | 2 -- - exec/sync.c | 2 -- - exec/vsf_quorum.c | 1 - - qdevices/tlv.c | 1 - - test/cpgbench.c | 1 - - test/cpgbenchzc.c | 2 -- - test/cpghum.c | 1 - - tools/corosync-notifyd.c | 3 --- - 12 files changed, 0 insertions(+), 18 deletions(-) - -diff --git a/cts/agents/common_test_agent.c b/cts/agents/common_test_agent.c -index 67d76c1..e395c31 100644 ---- a/cts/agents/common_test_agent.c -+++ b/cts/agents/common_test_agent.c -@@ -44,7 +44,6 @@ - #include - #include - #include --#include - #include - - #include "common_test_agent.h" -diff --git a/cts/agents/cpg_test_agent.c b/cts/agents/cpg_test_agent.c -index a52f4f0..0837c69 100644 ---- a/cts/agents/cpg_test_agent.c -+++ b/cts/agents/cpg_test_agent.c -@@ -44,7 +44,6 @@ - #include - #include - #include --#include - #include - - #include -diff --git a/exec/cmap.c b/exec/cmap.c -index ba4c798..950a76f 100644 ---- a/exec/cmap.c -+++ b/exec/cmap.c -@@ -39,7 +39,6 @@ - #include - #include - #include --#include - #include - #include - -diff --git a/exec/cpg.c b/exec/cpg.c -index 5bd830f..78ac1e9 100644 ---- a/exec/cpg.c -+++ b/exec/cpg.c -@@ -51,8 +51,6 @@ - #include - #include - #include --#include --#include - #include - #include - #include -diff --git a/exec/quorum.c b/exec/quorum.c -index d4837a2..323a15f 100644 ---- a/exec/quorum.c -+++ b/exec/quorum.c -@@ -46,8 +46,6 @@ - #include - #include - #include --#include --#include - #include - - #include -diff --git a/exec/sync.c b/exec/sync.c -index ea452e6..283634a 100644 ---- a/exec/sync.c -+++ b/exec/sync.c -@@ -45,8 +45,6 @@ - #include - #include - #include --#include --#include - #include - - #include -diff --git a/exec/vsf_quorum.c b/exec/vsf_quorum.c -index e268dea..4bf3b0a 100644 ---- a/exec/vsf_quorum.c -+++ b/exec/vsf_quorum.c -@@ -62,7 +62,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff --git a/qdevices/tlv.c b/qdevices/tlv.c -index a7eae95..5b45869 100644 ---- a/qdevices/tlv.c -+++ b/qdevices/tlv.c -@@ -47,7 +47,6 @@ - #elif defined(__FreeBSD__) || defined(__NetBSD__) - #include - #elif defined(__OpenBSD__) --#include - #define be64toh(x) betoh64(x) - #endif - -diff --git a/test/cpgbench.c b/test/cpgbench.c -index 23fc2b0..059effe 100644 ---- a/test/cpgbench.c -+++ b/test/cpgbench.c -@@ -40,7 +40,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff --git a/test/cpgbenchzc.c b/test/cpgbenchzc.c -index db78289..92f55ee 100644 ---- a/test/cpgbenchzc.c -+++ b/test/cpgbenchzc.c -@@ -40,14 +40,12 @@ - #include - #include - #include --#include - #include - #include - #include - #include - #include - #include --#include - #include - #include - -diff --git a/test/cpghum.c b/test/cpghum.c -index 5772f81..006bf45 100644 ---- a/test/cpghum.c -+++ b/test/cpghum.c -@@ -38,7 +38,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff --git a/tools/corosync-notifyd.c b/tools/corosync-notifyd.c -index 507a248..8f37a30 100644 ---- a/tools/corosync-notifyd.c -+++ b/tools/corosync-notifyd.c -@@ -54,9 +54,6 @@ - #include - #include - --#include --#include -- - #include - #include - #include --- -1.7.1 - diff --git a/SOURCES/bz1434529-1-man-Fix-typos-in-man-page.patch b/SOURCES/bz1434529-1-man-Fix-typos-in-man-page.patch deleted file mode 100644 index 45c532e..0000000 --- a/SOURCES/bz1434529-1-man-Fix-typos-in-man-page.patch +++ /dev/null @@ -1,587 +0,0 @@ -From b642904ea9640bd7a1573a8c0d2c5bcb43a10dfc Mon Sep 17 00:00:00 2001 -From: Takeshi MIZUTA -Date: Sat, 26 Nov 2016 01:12:03 +0900 -Subject: [PATCH] man: Fix typos in man page - -Signed-off-by: Takeshi MIZUTA -Reviewed-by: Jan Friesse -(cherry picked from commit fef5e117aac8362a056a966b453cf2624a1fa9ba) ---- - man/cmap_context_set.3.in | 2 +- - man/cmap_dec.3.in | 2 +- - man/cmap_delete.3.in | 2 +- - man/cmap_dispatch.3.in | 2 +- - man/cmap_get.3.in | 2 +- - man/cmap_inc.3.in | 2 +- - man/cmap_initialize.3.in | 2 +- - man/cmap_iter_finalize.3.in | 2 +- - man/cmap_iter_next.3.in | 4 ++-- - man/cmap_keys.8 | 2 +- - man/cmap_set.3.in | 2 +- - man/cmap_track_add.3.in | 2 +- - man/corosync-notifyd.8 | 2 +- - man/corosync-qdevice.8 | 2 +- - man/corosync.8 | 2 +- - man/corosync.conf.5 | 14 +++++++------- - man/cpg_dispatch.3.in | 2 +- - man/cpg_initialize.3.in | 2 +- - man/cpg_iteration_finalize.3.in | 2 +- - man/cpg_mcast_joined.3.in | 2 +- - man/cpg_model_initialize.3.in | 2 +- - man/cpg_zcb_alloc.3.in | 2 +- - man/cpg_zcb_mcast_joined.3.in | 2 +- - man/ipc_common.sh.errors | 6 +++--- - man/quorum_context_set.3.in | 2 +- - man/quorum_dispatch.3.in | 2 +- - man/quorum_getquorate.3.in | 2 +- - man/sam_data_store.3.in | 2 +- - man/sam_hc_callback_register.3.in | 4 ++-- - man/sam_hc_send.3.in | 4 ++-- - man/sam_overview.8 | 2 +- - man/votequorum.5 | 2 +- - man/votequorum_context_set.3.in | 2 +- - man/votequorum_dispatch.3.in | 2 +- - man/votequorum_finalize.3.in | 2 +- - man/votequorum_initialize.3.in | 2 +- - 36 files changed, 47 insertions(+), 47 deletions(-) - -diff --git a/man/cmap_context_set.3.in b/man/cmap_context_set.3.in -index da1f60c..cacef0d 100644 ---- a/man/cmap_context_set.3.in -+++ b/man/cmap_context_set.3.in -@@ -48,7 +48,7 @@ cmap_context_set (cmap_handle_t \fIhandle\fB, const void *\fIcontext\fB);\fR - .SH DESCRIPTION - .P - The \fBcmap_context_set\fR function is used to store the context variable for cmap instance. --It has no meaning insire libcmap itself and will not be touched by the library. It can -+It has no meaning inside libcmap itself and will not be touched by the library. It can - be retrieved using - .B cmap_context_get(3). - -diff --git a/man/cmap_dec.3.in b/man/cmap_dec.3.in -index 614c96e..c832241 100644 ---- a/man/cmap_dec.3.in -+++ b/man/cmap_dec.3.in -@@ -82,7 +82,7 @@ Overflow/underflow is not detected and it's ignored. - This call returns the CS_OK value if successful. If value or key_name are unspecified, CS_ERR_INVALID_PARAM - is returned. CS_ERR_NOT_EXIST error is returned if key doesn't exist (wasn't created by calling - .B cmap_set(3) --first). Some of keys may be tagged read-only directly in corosync and seting such key will result in -+first). Some of keys may be tagged read-only directly in corosync and setting such key will result in - CS_ERR_ACCESS error. - - .SH "SEE ALSO" -diff --git a/man/cmap_delete.3.in b/man/cmap_delete.3.in -index e2ee07d..a6ae710 100644 ---- a/man/cmap_delete.3.in -+++ b/man/cmap_delete.3.in -@@ -60,7 +60,7 @@ function. - is name of key to delete. - - .SH RETURN VALUE --This call returns the CS_OK value if successful. If key_name is unspecified, CS_ERR_INVALID_PARAM -+This call returns the CS_OK value if successful. If key_name is unspecified, CS_ERR_INVALID_PARAM - is returned. For nonexisting keys, CS_ERR_NOT_EXIST error is returned. Some of keys may be tagged - read-only directly in corosync and deleting such key will result in CS_ERR_ACCESS error. - -diff --git a/man/cmap_dispatch.3.in b/man/cmap_dispatch.3.in -index b791a5e..b4fa2ba 100644 ---- a/man/cmap_dispatch.3.in -+++ b/man/cmap_dispatch.3.in -@@ -50,7 +50,7 @@ The - .B cmap_dispatch - function is used to dispatch configuration changes. - .PP --Each application may have several connections to the CMAP API. Each application -+Each application may have several connections to the CMAP API. Each application - uses the - .I handle - argument to uniquely identify the connection. -diff --git a/man/cmap_get.3.in b/man/cmap_get.3.in -index f3615a6..15c73e6 100644 ---- a/man/cmap_get.3.in -+++ b/man/cmap_get.3.in -@@ -127,7 +127,7 @@ then nothing is stored. Type can be one of: - .PP - \fBCMAP_VALUETYPE_BINARY\fR - Binary data, byte with zero value has no special meaning - --Sortcut functions tests cmap type with it's own type. If type didn't match, CS_ERR_INVALID_PARAM error -+Shortcut functions tests cmap type with it's own type. If type didn't match, CS_ERR_INVALID_PARAM error - is returned. No conversions are done, so for example - .B cmap_get_int16 - is not able to return value with -diff --git a/man/cmap_inc.3.in b/man/cmap_inc.3.in -index 0320065..69ac851 100644 ---- a/man/cmap_inc.3.in -+++ b/man/cmap_inc.3.in -@@ -82,7 +82,7 @@ Overflow/underflow is not detected and it's ignored. - This call returns the CS_OK value if successful. If value or key_name are unspecified, CS_ERR_INVALID_PARAM - is returned. CS_ERR_NOT_EXIST error is returned if key doesn't exist (wasn't created by calling - .B cmap_set(3) --first). Some of keys may be tagged read-only directly in corosync and seting such key will result in -+first). Some of keys may be tagged read-only directly in corosync and setting such key will result in - CS_ERR_ACCESS error. - - .SH "SEE ALSO" -diff --git a/man/cmap_initialize.3.in b/man/cmap_initialize.3.in -index 8bdb017..b6342e9 100644 ---- a/man/cmap_initialize.3.in -+++ b/man/cmap_initialize.3.in -@@ -48,7 +48,7 @@ cmap_initialize \- Initialize CMAP API - .P - The \fBcmap_initialize\fR function is used to initialize a connection to - the Configuration Map API. Each application may have several connections to the CMAP API. --Each application uses the -+Each application uses the - .I handle - argument to uniquely identify the connection. The - .I handle -diff --git a/man/cmap_iter_finalize.3.in b/man/cmap_iter_finalize.3.in -index 51cd590..8b03d01 100644 ---- a/man/cmap_iter_finalize.3.in -+++ b/man/cmap_iter_finalize.3.in -@@ -49,7 +49,7 @@ cmap_iter_finalize (cmap_handle_t \fIhandle\fB, cmap_iter_handle_t \fIiter_handl - .P - The - .B cmap_iter_finalize --function is used to free up memory asociated with iteration obtained by calling of -+function is used to free up memory associated with iteration obtained by calling of - .B cmap_iter_init(3) - function. - The -diff --git a/man/cmap_iter_next.3.in b/man/cmap_iter_next.3.in -index edc29f8..b09a584 100644 ---- a/man/cmap_iter_next.3.in -+++ b/man/cmap_iter_next.3.in -@@ -60,8 +60,8 @@ argument is iterator handle obtained by - .B cmap_iter_init(3) - function. Following key name is stored inside - .I key_name --argument, which must be preallocated by caller and its quaranted maximum size is CMAP_KEYNAME_MAXLEN --(urrently 255). -+argument, which must be preallocated by caller and its guaranteed maximum size is CMAP_KEYNAME_MAXLEN -+(currently 255). - .I value_len - is pointer where length of value is stored, but can be NULL. - .I type -diff --git a/man/cmap_keys.8 b/man/cmap_keys.8 -index 7517788..b0cd721 100644 ---- a/man/cmap_keys.8 -+++ b/man/cmap_keys.8 -@@ -282,7 +282,7 @@ entries has uidgid.* prefix and a configuration file reload doesn't affect them. - .TP - quorum.cancel_wait_for_all - Tells votequorum to cancel waiting for all nodes at cluster startup. Can be used --to unblock quorum if notes are known to be down. for pcs use only. -+to unblock quorum if notes are known to be down. For pcs use only. - - .TP - config.reload_in_progress -diff --git a/man/cmap_set.3.in b/man/cmap_set.3.in -index 8dcb88c..e854cf5 100644 ---- a/man/cmap_set.3.in -+++ b/man/cmap_set.3.in -@@ -119,7 +119,7 @@ which gives type of value. It may be one of: - .SH RETURN VALUE - This call returns the CS_OK value if successful. If value or key_name are unspecified, CS_ERR_INVALID_PARAM - is returned. Too short or too long key_name returns CS_ERR_NAME_TOO_LONG error code. Some of keys may --be tagged read-only directly in corosync and seting such key will result in CS_ERR_ACCESS error. -+be tagged read-only directly in corosync and setting such key will result in CS_ERR_ACCESS error. - - .SH "SEE ALSO" - .BR cmap_get (3), -diff --git a/man/cmap_track_add.3.in b/man/cmap_track_add.3.in -index 0cf9fa8..32b35d0 100644 ---- a/man/cmap_track_add.3.in -+++ b/man/cmap_track_add.3.in -@@ -120,7 +120,7 @@ is \fBCMAP_TRACK_DELETE\fR. - .I old_value - is previous value of key or unset if - .I event --is \fBCMAP_TRACK_ADD\fR or for some special keys set directly by Corosync due to speed optimalizations. -+is \fBCMAP_TRACK_ADD\fR or for some special keys set directly by Corosync due to speed optimizations. - Both - .I new_value - and -diff --git a/man/corosync-notifyd.8 b/man/corosync-notifyd.8 -index 0bb0cfb..822d138 100644 ---- a/man/corosync-notifyd.8 -+++ b/man/corosync-notifyd.8 -@@ -39,7 +39,7 @@ corosync-notifyd \- Listen for important corosync events and send dbus and/or sn - .SH DESCRIPTION - .B corosync-notifyd - uses corosync API to listen for important cluster events and can log them, --generate dbus signals or genterate snmp traps. -+generate dbus signals or generate snmp traps. - .SH OPTIONS - .TP - .B -f -diff --git a/man/corosync-qdevice.8 b/man/corosync-qdevice.8 -index fbeb328..20024af 100644 ---- a/man/corosync-qdevice.8 -+++ b/man/corosync-qdevice.8 -@@ -226,7 +226,7 @@ qnetd server then we return a vote. - If more than one node can see the qnetd server but some nodes can't - see each other then the cluster is divided up into 'partitions' based on - their ring_id and this algorithm returns a vote to the largest active partition or, --if there is more than 1 equal partiton, the partition that contains the tie_breaker -+if there is more than 1 equal partition, the partition that contains the tie_breaker - node (lowest, highest, etc). For LMS to work, the number - of qdevice votes has to be set to default (so just delete - .B quorum.device.votes -diff --git a/man/corosync.8 b/man/corosync.8 -index 41f634f..b5451ad 100644 ---- a/man/corosync.8 -+++ b/man/corosync.8 -@@ -38,7 +38,7 @@ corosync \- The Corosync Cluster Engine. - .B "corosync [\-f] [\-p] [\-r] [\-v]" - .SH DESCRIPTION - .B corosync --Corosync provides clustering infracture such as membership, messaging and quorum. -+Corosync provides clustering infrastructure such as membership, messaging and quorum. - .SH OPTIONS - .TP - .B -f -diff --git a/man/corosync.conf.5 b/man/corosync.conf.5 -index 00a7a38..55b21f2 100644 ---- a/man/corosync.conf.5 -+++ b/man/corosync.conf.5 -@@ -346,7 +346,7 @@ The default is 50 milliseconds. - .TP - send_join - This timeout specifies in milliseconds an upper range between 0 and send_join --to wait before sending a join message. For configurations with less then -+to wait before sending a join message. For configurations with less than - 32 nodes, this parameter is not necessary. For larger rings, this parameter - is necessary to ensure the NIC is not overflowed with join messages on - formation of a new ring. A reasonable value for large rings (128 nodes) would -@@ -362,9 +362,9 @@ achieved before starting a new round of membership configuration. The minimum - value for consensus must be 1.2 * token. This value will be automatically - calculated at 1.2 * token if the user doesn't specify a consensus value. - --For two node clusters, a consensus larger then the join timeout but less then -+For two node clusters, a consensus larger than the join timeout but less than - token is safe. For three node or larger clusters, consensus should be larger --then token. There is an increasing risk of odd membership changes, which stil -+than token. There is an increasing risk of odd membership changes, which still - guarantee virtual synchrony, as node count grows if consensus is less than - token. - -@@ -384,7 +384,7 @@ downcheck - This timeout specifies in milliseconds how long to wait before checking - that a network interface is back up after it has been downed. - --The default is 1000 millseconds. -+The default is 1000 milliseconds. - - .TP - fail_recv_const -@@ -435,7 +435,7 @@ token rotation. If all processors perform equally well, this value could be - large (300), which would introduce higher latency from origination to delivery - for very large rings. To reduce latency in large rings(16+), the defaults are - a safe compromise. If 1 or more slow processor(s) are present among fast --processors, window_size should be no larger then 256000 / netmtu to avoid -+processors, window_size should be no larger than 256000 / netmtu to avoid - overflow of the kernel receive buffers. The user is notified of this by - the display of a retransmit list in the notification logs. There is no loss - of data, but performance is reduced when these errors occur. -@@ -629,7 +629,7 @@ The subsys entry, described below, is mandatory to identify the subsystem. - .TP - subsys - This specifies the subsystem identity (name) for which logging is specified. This is the --name used by a service in the log_init () call. E.g. 'CPG'. This directive is -+name used by a service in the log_init() call. E.g. 'CPG'. This directive is - required. - - .PP -@@ -656,7 +656,7 @@ For UDPU, every node that should be a member of the membership must be specified - Possible options are: - .TP - ringX_addr --This specifies ip address of one of the nodes. X is ring number. -+This specifies IP address of one of the nodes. X is ring number. - - .TP - nodeid -diff --git a/man/cpg_dispatch.3.in b/man/cpg_dispatch.3.in -index f824a3f..a71ca6a 100644 ---- a/man/cpg_dispatch.3.in -+++ b/man/cpg_dispatch.3.in -@@ -44,7 +44,7 @@ The - function is used to dispatch configuration changes or messages from the - closed process groups API. - .PP --Each application may have several connections to the CPG API. Each application -+Each application may have several connections to the CPG API. Each application - uses the - .I handle - argument to uniquely identify the connection. -diff --git a/man/cpg_initialize.3.in b/man/cpg_initialize.3.in -index 5012986..1c866cf 100644 ---- a/man/cpg_initialize.3.in -+++ b/man/cpg_initialize.3.in -@@ -46,7 +46,7 @@ and - .B cpg_model_initialize - should be used in newly written code. - .PP --Each application may have several connections to the CPG API. Each application -+Each application may have several connections to the CPG API. Each application - uses the - .I handle - argument to uniquely identify the connection. The -diff --git a/man/cpg_iteration_finalize.3.in b/man/cpg_iteration_finalize.3.in -index 747d227..49ca64b 100644 ---- a/man/cpg_iteration_finalize.3.in -+++ b/man/cpg_iteration_finalize.3.in -@@ -49,7 +49,7 @@ cpg_iteration_finalize (cpg_iteration_handle_t \fIhandle\fB);\fR - .P - The - .B cpg_iteration_finalize --function is used to free up memory asociated with iteration obtained by calling of -+function is used to free up memory associated with iteration obtained by calling of - .B cpg_iteration_initialize(3) - function. - The -diff --git a/man/cpg_mcast_joined.3.in b/man/cpg_mcast_joined.3.in -index dc02350..3ba44df 100644 ---- a/man/cpg_mcast_joined.3.in -+++ b/man/cpg_mcast_joined.3.in -@@ -31,7 +31,7 @@ - .\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - .\" * THE POSSIBILITY OF SUCH DAMAGE. - .\" */ --.TH CPG_MCAST_JOINED 3 3004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" -+.TH CPG_MCAST_JOINED 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" - .SH NAME - cpg_mcast_joined \- Multicasts to all groups joined to a handle - .SH SYNOPSIS -diff --git a/man/cpg_model_initialize.3.in b/man/cpg_model_initialize.3.in -index 259f77d..76429a5 100644 ---- a/man/cpg_model_initialize.3.in -+++ b/man/cpg_model_initialize.3.in -@@ -45,7 +45,7 @@ The - .B cpg_model_initialize - function is used to initialize a connection to the closed process groups API. - .PP --Each application may have several connections to the CPG API. Each application -+Each application may have several connections to the CPG API. Each application - uses the - .I handle - argument to uniquely identify the connection. The -diff --git a/man/cpg_zcb_alloc.3.in b/man/cpg_zcb_alloc.3.in -index e46da9c..347be2c 100644 ---- a/man/cpg_zcb_alloc.3.in -+++ b/man/cpg_zcb_alloc.3.in -@@ -58,7 +58,7 @@ requests a buffer of size be allocated. - .PP - The - .I buffer --argument is set to the buffer address that is allocated by this operatoin. -+argument is set to the buffer address that is allocated by this operation. - - .SH RETURN VALUE - This call returns the CS_OK value if successful, otherwise an error is returned. -diff --git a/man/cpg_zcb_mcast_joined.3.in b/man/cpg_zcb_mcast_joined.3.in -index 158131c..afb4454 100644 ---- a/man/cpg_zcb_mcast_joined.3.in -+++ b/man/cpg_zcb_mcast_joined.3.in -@@ -31,7 +31,7 @@ - .\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - .\" * THE POSSIBILITY OF SUCH DAMAGE. - .\" */ --.TH CPG_ZCB_MCAST_JOINED 3 3004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" -+.TH CPG_ZCB_MCAST_JOINED 3 2004-08-31 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual" - .SH NAME - cpg_mcast_joined \- Multicasts a zero copy buffer to all groups joined to a handle - .SH SYNOPSIS -diff --git a/man/ipc_common.sh.errors b/man/ipc_common.sh.errors -index 0c73358..55d4510 100644 ---- a/man/ipc_common.sh.errors -+++ b/man/ipc_common.sh.errors -@@ -13,13 +13,13 @@ Permission denied - The connection failed - - .B CS_ERR_INTERRUPT --System call inturrupted by a signal -+System call interrupted by a signal - - .B CS_ERR_NOT_SUPPORTED --The requested protocol/functuality not supported -+The requested protocol/functionality not supported - - .B CS_ERR_MESSAGE_ERROR - Incorrect auth message received - - .B CS_ERR_NO_MEMORY --Not enough memory to completed the requested task -+Not enough memory to complete the requested task -diff --git a/man/quorum_context_set.3.in b/man/quorum_context_set.3.in -index 6a57e92..57fe35c 100644 ---- a/man/quorum_context_set.3.in -+++ b/man/quorum_context_set.3.in -@@ -42,7 +42,7 @@ quorum_context_set \- Sets the context variable for a QUORUM instance - The - .B quorum_context_set - function is used to set the context variable for a quorum instance. It has no --meaning insire libquorum itself and will not be touched by the library. It can -+meaning inside libquorum itself and will not be touched by the library. It can - be retrieved using - .B quorum_context_get(3) - .SH RETURN VALUE -diff --git a/man/quorum_dispatch.3.in b/man/quorum_dispatch.3.in -index 34d9908..319e460 100644 ---- a/man/quorum_dispatch.3.in -+++ b/man/quorum_dispatch.3.in -@@ -43,7 +43,7 @@ The - .B quorum_dispatch - function is used to dispatch configuration changes. - .PP --Each application may have several connections to the quorum API. Each application -+Each application may have several connections to the quorum API. Each application - uses the - .I handle - argument to uniquely identify the connection. -diff --git a/man/quorum_getquorate.3.in b/man/quorum_getquorate.3.in -index ec87486..b1c0c74 100644 ---- a/man/quorum_getquorate.3.in -+++ b/man/quorum_getquorate.3.in -@@ -41,7 +41,7 @@ quorum_getquorate \- Gets the quorate status of the node. - .SH DESCRIPTION - The - .B quorum_getquorate --function is used to retrieve the quorate status of the node. quorate is 0 if the node -+function is used to retrieve the quorate status of the node. Quorate is 0 if the node - is not part of a quorate partition or 1 otherwise. - .SH RETURN VALUE - This call returns the CS_OK value if successful, otherwise an error is returned. -diff --git a/man/sam_data_store.3.in b/man/sam_data_store.3.in -index 6e90651..88ab7aa 100644 ---- a/man/sam_data_store.3.in -+++ b/man/sam_data_store.3.in -@@ -73,7 +73,7 @@ CS_ERR_BAD_HANDLE - component was not initialized by calling \fBsam_initialize(3)\fR or it was finalized. - .TP - CS_ERR_NO_MEMORY --internal malloc/realloc failed because data are too large -+internal malloc/realloc failed because data are too large - .TP - CS_ERR_LIBRARY - some internal error appeared (mostly because communication with parent process failed) -diff --git a/man/sam_hc_callback_register.3.in b/man/sam_hc_callback_register.3.in -index 91be22d..c9f5619 100644 ---- a/man/sam_hc_callback_register.3.in -+++ b/man/sam_hc_callback_register.3.in -@@ -60,7 +60,7 @@ defined as: - .fi - - .P --This function will be regulargly called and must return 0 if the process is -+This function will be regularly called and must return 0 if the process is - functioning normally, or -1 if the process is executing abnormally. When -1 is - returned, the SAM server execute the registered recovery policy. - -@@ -79,7 +79,7 @@ CS_ERR_BAD_HANDLE - SAM was not initialized and registered or health checking is in running state - .TP - CS_ERR_LIBRARY --internal library call failed. This can occur during fork() or pipe () system -+internal library call failed. This can occur during fork() or pipe() system - calls and the errno variable can be read to retrieve more information. - - .SH "SEE ALSO" -diff --git a/man/sam_hc_send.3.in b/man/sam_hc_send.3.in -index c8e9131..dfcf93c 100644 ---- a/man/sam_hc_send.3.in -+++ b/man/sam_hc_send.3.in -@@ -47,8 +47,8 @@ sam_hc_send \- Send health check confirmation - .SH DESCRIPTION - .P - The \fBsam_hc_send\fR function is used to send healthcheck confirmation from --the applicatoin. This function should be called reguarly when configured for --application driven healthchecking, otherwise recovery actoin will be taken. -+the application. This function should be called regularly when configured for -+application driven healthchecking, otherwise recovery action will be taken. - - When using event driven healthchecking, this function should not be used. - -diff --git a/man/sam_overview.8 b/man/sam_overview.8 -index 490dbe4..a0b23b4 100644 ---- a/man/sam_overview.8 -+++ b/man/sam_overview.8 -@@ -153,7 +153,7 @@ keys: - Object is automatically deleted if process exits with stopped health checking. - - .P --Confdb integration with corosync wathdog can be used in implicit and explicit way. -+Confdb integration with corosync watchdog can be used in implicit and explicit way. - - .P - Implicit way is achieved by setting recovery policy to QUIT and let process exit with started health checking. -diff --git a/man/votequorum.5 b/man/votequorum.5 -index ee4814a..fd9590e 100644 ---- a/man/votequorum.5 -+++ b/man/votequorum.5 -@@ -223,7 +223,7 @@ Example chain of events: - .PP - NOTES: In order for the cluster to downgrade automatically from 2 nodes - to a 1 node cluster, the auto_tie_breaker feature must also be enabled (see below). --If auto_tie_breaker is not enabled, and one more failure occours, the -+If auto_tie_breaker is not enabled, and one more failure occurs, the - remaining node will not be quorate. LMS does not work with asymmetric voting - schemes, each node must vote 1. LMS is also incompatible with quorum devices, - if last_man_standing is specified in corosync.conf then the quorum device -diff --git a/man/votequorum_context_set.3.in b/man/votequorum_context_set.3.in -index df3af2b..56c6cf0 100644 ---- a/man/votequorum_context_set.3.in -+++ b/man/votequorum_context_set.3.in -@@ -42,7 +42,7 @@ votequorum_context_set \- Sets the context variable for a VOTEQUORUM instance - The - .B votequorum_context_set - function is used to set the context variable for a votequorum instance. It has no --meaning insire libvotequorum itself and will not be touched by the library. It can -+meaning inside libvotequorum itself and will not be touched by the library. It can - be retrieved using - .B votequorum_context_get(3) - .SH RETURN VALUE -diff --git a/man/votequorum_dispatch.3.in b/man/votequorum_dispatch.3.in -index 38677b4..132c8d1 100644 ---- a/man/votequorum_dispatch.3.in -+++ b/man/votequorum_dispatch.3.in -@@ -43,7 +43,7 @@ The - .B votequorum_dispatch - function is used to dispatch configuration changes. - .PP --Each application may have several connections to the votequorum API. Each application -+Each application may have several connections to the votequorum API. Each application - uses the - .I handle - argument to uniquely identify the connection. -diff --git a/man/votequorum_finalize.3.in b/man/votequorum_finalize.3.in -index 0164f59..50e431f 100644 ---- a/man/votequorum_finalize.3.in -+++ b/man/votequorum_finalize.3.in -@@ -41,7 +41,7 @@ votequorum_finalize \- Terminate a connection to the votequorum service - .SH DESCRIPTION - The - .B votequorum_finalize --function is used to close a connection to the configuration dabatase API. -+function is used to close a connection to the configuration database API. - Once the connection is finalized, the handle may not be used again by applications. - No more callbacks will be dispatched from the - .B votequorum_dispatch -diff --git a/man/votequorum_initialize.3.in b/man/votequorum_initialize.3.in -index 811b3e3..88e1eb1 100644 ---- a/man/votequorum_initialize.3.in -+++ b/man/votequorum_initialize.3.in -@@ -89,7 +89,7 @@ nodes that are included in the sync state - ie only active nodes. No quorum info - because it is not available at that time. - The 'quorum' callback is sent after the cluster state transition has completed and does contain quorum information. - In addition, the nodelist contains a list of all nodes known to votequorum (whether up or down) and their state as well --as information about the quorum device attached (if any). quorum callbacks will not be sent for qdevice up and down -+as information about the quorum device attached (if any). Quorum callbacks will not be sent for qdevice up and down - events unless they affect quorum. - - .PP --- -1.7.1 - diff --git a/SOURCES/bz1434529-2-Fix-typo-Destorying-Destroying.patch b/SOURCES/bz1434529-2-Fix-typo-Destorying-Destroying.patch deleted file mode 100644 index 7d09681..0000000 --- a/SOURCES/bz1434529-2-Fix-typo-Destorying-Destroying.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 117d9e4eb77ef9941fdeaf17ddfd892514da8143 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ferenc=20W=C3=A1gner?= -Date: Sun, 30 Oct 2016 13:33:40 +0100 -Subject: [PATCH] Fix typo: Destorying -> Destroying -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Ferenc Wágner -Reviewed-by: Jan Friesse -(cherry picked from commit 66c6a9b20063a271eadde7cca7a6abda5bc5512e) ---- - qdevices/corosync-qdevice.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/qdevices/corosync-qdevice.c b/qdevices/corosync-qdevice.c -index fd932f1..6b1f7a5 100644 ---- a/qdevices/corosync-qdevice.c -+++ b/qdevices/corosync-qdevice.c -@@ -246,7 +246,7 @@ main(int argc, char * const argv[]) - return (1); - } - -- qdevice_log(LOG_DEBUG, "Destorying qdevice model"); -+ qdevice_log(LOG_DEBUG, "Destroying qdevice model"); - qdevice_model_destroy(&instance); - - qdevice_ipc_destroy(&instance); --- -1.7.1 - diff --git a/SOURCES/bz1434529-3-init-Add-doc-URIs-to-the-systemd-service-files.patch b/SOURCES/bz1434529-3-init-Add-doc-URIs-to-the-systemd-service-files.patch deleted file mode 100644 index 430b5d4..0000000 --- a/SOURCES/bz1434529-3-init-Add-doc-URIs-to-the-systemd-service-files.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 21a728785027483786e41c19f6aff57a95b80aa5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ferenc=20W=C3=A1gner?= -Date: Wed, 18 May 2016 22:59:40 +0200 -Subject: [PATCH] init: Add doc URIs to the systemd service files -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These are used by systemctl help. - -Signed-off-by: Ferenc Wágner -Reviewed-by: Jan Friesse -(cherry picked from commit 8a940f9a18bdcdabef31f796e3572070e72d487b) ---- - init/corosync-notifyd.service.in | 1 + - init/corosync-qdevice.service.in | 1 + - init/corosync-qnetd.service.in | 1 + - init/corosync.service.in | 1 + - 4 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/init/corosync-notifyd.service.in b/init/corosync-notifyd.service.in -index ce576fe..689ab8e 100644 ---- a/init/corosync-notifyd.service.in -+++ b/init/corosync-notifyd.service.in -@@ -1,5 +1,6 @@ - [Unit] - Description=Corosync Dbus and snmp notifier -+Documentation=man:corosync-notifyd - Wants=corosync.service - After=corosync.service - -diff --git a/init/corosync-qdevice.service.in b/init/corosync-qdevice.service.in -index 54bec69..8de4e5b 100644 ---- a/init/corosync-qdevice.service.in -+++ b/init/corosync-qdevice.service.in -@@ -1,5 +1,6 @@ - [Unit] - Description=Corosync Qdevice daemon -+Documentation=man:corosync-qdevice - ConditionKernelCommandLine=!nocluster - Wants=corosync.service - After=corosync.service -diff --git a/init/corosync-qnetd.service.in b/init/corosync-qnetd.service.in -index 8374910..c6cf8c9 100644 ---- a/init/corosync-qnetd.service.in -+++ b/init/corosync-qnetd.service.in -@@ -1,5 +1,6 @@ - [Unit] - Description=Corosync Qdevice Network daemon -+Documentation=man:corosync-qnetd - ConditionKernelCommandLine=!nocluster - Requires=network-online.target - After=network-online.target -diff --git a/init/corosync.service.in b/init/corosync.service.in -index d71a857..12193b1 100644 ---- a/init/corosync.service.in -+++ b/init/corosync.service.in -@@ -1,5 +1,6 @@ - [Unit] - Description=Corosync Cluster Engine -+Documentation=man:corosync man:corosync.conf man:corosync_overview - ConditionKernelCommandLine=!nocluster - Requires=network-online.target - After=network-online.target --- -1.7.1 - diff --git a/SOURCES/bz1434529-4-man-Modify-man-page-according-to-command-usage.patch b/SOURCES/bz1434529-4-man-Modify-man-page-according-to-command-usage.patch deleted file mode 100644 index b2309da..0000000 --- a/SOURCES/bz1434529-4-man-Modify-man-page-according-to-command-usage.patch +++ /dev/null @@ -1,349 +0,0 @@ -From 79898e8cb1715e79b7467b91661b7341e2664550 Mon Sep 17 00:00:00 2001 -From: Takeshi MIZUTA -Date: Thu, 1 Dec 2016 02:45:16 +0900 -Subject: [PATCH] man: Modify man-page according to command usage - -Signed-off-by: Takeshi MIZUTA -Reviewed-by: Jan Friesse -(cherry picked from commit 034553c0808dfcf27441925b05ae095901dee3f4) ---- - exec/main.c | 2 +- - man/corosync-cfgtool.8 | 22 ++++++++-------------- - man/corosync-cmapctl.8 | 2 +- - man/corosync-cpgtool.8 | 8 ++++---- - man/corosync-keygen.8 | 5 ++++- - man/corosync-notifyd.8 | 6 +++--- - man/corosync-quorumtool.8 | 8 +++++++- - man/corosync.8 | 2 +- - tools/corosync-cfgtool.c | 11 +++++++---- - tools/corosync-cmapctl.c | 2 +- - tools/corosync-cpgtool.c | 2 +- - tools/corosync-keygen.c | 5 +++-- - tools/corosync-notifyd.c | 4 ++-- - tools/corosync-quorumtool.c | 7 ++++--- - 14 files changed, 47 insertions(+), 39 deletions(-) - -diff --git a/exec/main.c b/exec/main.c -index 82fb808..ca54a47 100644 ---- a/exec/main.c -+++ b/exec/main.c -@@ -1185,8 +1185,8 @@ int main (int argc, char **argv, char **envp) - "usage:\n"\ - " -f : Start application in foreground.\n"\ - " -p : Do not set process priority.\n"\ -- " -t : Test configuration and exit.\n"\ - " -r : Set round robin realtime scheduling (default).\n"\ -+ " -t : Test configuration and exit.\n"\ - " -v : Display version and SVN revision of Corosync and exit.\n"); - logsys_system_fini(); - return EXIT_FAILURE; -diff --git a/man/corosync-cfgtool.8 b/man/corosync-cfgtool.8 -index 6df8651..b190766 100644 ---- a/man/corosync-cfgtool.8 -+++ b/man/corosync-cfgtool.8 -@@ -35,14 +35,11 @@ - .SH "NAME" - corosync-cfgtool \- An administrative tool for corosync. - .SH "SYNOPSIS" --.B corosync\-cfgtool [\-i] [IP_address] [\-s] [\-r] [\-l] [\-u] [\-H] [service_name] [\-v] [version] [\-k] [nodeid] [\-a] [nodeid] -+.B corosync\-cfgtool [\-i IP_address] [\-s] [\-r] [\-R] [\-k nodeid] [\-a nodeid] [\-h] [\-H] - .SH "DESCRIPTION" - .B corosync\-cfgtool - A tool for displaying and configuring active parameters within corosync. - .SH "OPTIONS" --.TP --.B -h --Print basic usage. - .TP - .B -i - Finds only information about the specified interface IP address. -@@ -56,20 +53,17 @@ to the shell. - Reset redundant ring state cluster wide after a fault to - re-enable redundant ring operation. - .TP --.B -l --Load a service identified by "service_name". --.TP --.B -u --Unload a service identified by "service_name". --.TP --.B -a --Display the IP address(es) of a node. -+.B -R -+Tell all instances of corosync in this cluster to reload corosync.conf. - .TP - .B -k - Kill a node identified by node id. - .TP --.B -R --Tell all instances of corosync in this cluster to reload corosync.conf -+.B -a -+Display the IP address(es) of a node. -+.TP -+.B -h -+Print basic usage. - .TP - .B -H - Shutdown corosync cleanly on this node. -diff --git a/man/corosync-cmapctl.8 b/man/corosync-cmapctl.8 -index 661137c..ed97fad 100644 ---- a/man/corosync-cmapctl.8 -+++ b/man/corosync-cmapctl.8 -@@ -35,7 +35,7 @@ - .SH NAME - corosync-cmapctl: \- A tool for accessing the object database. - .SH DESCRIPTION --usage: corosync\-cmapctl [\-b] [\-dghsTtp] [params...] -+usage: corosync\-cmapctl [\-b] [\-DdghsTt] [\-p filename] [params...] - .HP - \fB\-b\fR show binary values - .SS "Set key:" -diff --git a/man/corosync-cpgtool.8 b/man/corosync-cpgtool.8 -index 8ef32d1..3a62752 100644 ---- a/man/corosync-cpgtool.8 -+++ b/man/corosync-cpgtool.8 -@@ -41,17 +41,17 @@ corosync-cpgtool \- A tool for displaying cpg groups and members. - A tool for displaying cpg groups and members. - .SH OPTIONS - .TP --.B -h --Display this help. --.TP - .B -d - Delimiter between fields. - .TP - .B -e --Don't escape unprintable characters in group name -+Don't escape unprintable characters in group name. - .TP - .B -n - Display only all existing group names. -+.TP -+.B -h -+Display this help. - .SH EXAMPLES - .TP - Display the groups and process that belong to those cpg groups. -diff --git a/man/corosync-keygen.8 b/man/corosync-keygen.8 -index 5aaae93..ed04620 100644 ---- a/man/corosync-keygen.8 -+++ b/man/corosync-keygen.8 -@@ -35,7 +35,7 @@ - .SH NAME - corosync-keygen \- Generate an authentication key for Corosync. - .SH SYNOPSIS --.B "corosync-keygen [\-k ] [\-l]" -+.B "corosync-keygen [\-k ] [\-l] [\-h]" - .SH DESCRIPTION - - If you want to configure corosync to use cryptographic techniques to ensure authenticity -@@ -70,6 +70,9 @@ The default is /etc/corosync/authkey. - Use a less secure random data source that will not require user input to help generate - entropy. This may be useful when this utility is used from a script or hardware random number - generator is not available (f.e. in virtual machine). -+.TP -+.B -h -+Print basic usage. - - .SH EXAMPLES - .TP -diff --git a/man/corosync-notifyd.8 b/man/corosync-notifyd.8 -index 822d138..40d8d79 100644 ---- a/man/corosync-notifyd.8 -+++ b/man/corosync-notifyd.8 -@@ -35,7 +35,7 @@ - .SH NAME - corosync-notifyd \- Listen for important corosync events and send dbus and/or snmp traps. - .SH SYNOPSIS --.B "corosync-notifyd [\-f] [\-l] [\-o] [\-s] [\-m] [manager] [\-d] [-h]" -+.B "corosync-notifyd [\-f] [\-l] [\-o] [\-s] [\-m manager] [\-d] [-h]" - .SH DESCRIPTION - .B corosync-notifyd - uses corosync API to listen for important cluster events and can log them, -@@ -55,13 +55,13 @@ Print events to stdout (turns on -l). - Send SNMP traps on all events. - .TP - .B -m --Set the SNMP manager address. -+Set the SNMP Manager IP address (defaults to localhost). - .TP - .B -d - Send DBUS signals on all events. - .TP - .B -h --Print this help -+Print this help. - .SH EXAMPLES - .br - $ corosync-notifyd -o -diff --git a/man/corosync-quorumtool.8 b/man/corosync-quorumtool.8 -index 9707a70..88264b0 100644 ---- a/man/corosync-quorumtool.8 -+++ b/man/corosync-quorumtool.8 -@@ -35,7 +35,7 @@ - .SH NAME - corosync-quorumtool \- Set and display quorum settings. - .SH SYNOPSIS --.B "corosync-quorumtool [\-s] [\-m] [\-l] [\-p] [\-v votes] [\-n nodeid] [\-e expected] [\-h] [\-i] [\-o ] [\-V]" -+.B "corosync-quorumtool [\-s] [\-m] [\-l] [\-p] [\-v votes] [\-n nodeid] [\-e expected] [\-H] [\-i] [\-o ] [\-f] [\-h] [\-V]" - .SH DESCRIPTION - Display the current state of quorum in the cluster and set vote quorum options. - .SH OPTIONS -@@ -49,6 +49,9 @@ constantly monitor quorum status - .B -l - list nodes - .TP -+.B -p -+when used with -s or -l, generates machine parsable output -+.TP - .B -v - change the number of votes for a node * - .TP -@@ -72,6 +75,9 @@ Orders the output of the nodes list. By default or with -oa nodes are listed in - order: as they come from corosync. -on will order the nodes based on their name, - and -oi will order them based on their node ID. - .TP -+.B -f -+forcefully unregister a quorum device *DANGEROUS* * -+.TP - .B -h (if no other argument) - show this help text - .TP -diff --git a/man/corosync.8 b/man/corosync.8 -index b5451ad..89ab771 100644 ---- a/man/corosync.8 -+++ b/man/corosync.8 -@@ -35,7 +35,7 @@ - .SH NAME - corosync \- The Corosync Cluster Engine. - .SH SYNOPSIS --.B "corosync [\-f] [\-p] [\-r] [\-v]" -+.B "corosync [\-f] [\-p] [\-r] [\-t] [\-v]" - .SH DESCRIPTION - .B corosync - Corosync provides clustering infrastructure such as membership, messaging and quorum. -diff --git a/tools/corosync-cfgtool.c b/tools/corosync-cfgtool.c -index 94ffce4..201977b 100644 ---- a/tools/corosync-cfgtool.c -+++ b/tools/corosync-cfgtool.c -@@ -261,15 +261,17 @@ static void killnode_do(unsigned int nodeid) - - static void usage_do (void) - { -- printf ("corosync-cfgtool [-i ] -s] [-r] [-H] [service_name] [-k] [nodeid] [-a] [nodeid]\n\n"); -+ printf ("corosync-cfgtool [-i ] [-s] [-r] [-R] [-k nodeid] [-a nodeid] [-h] [-H]\n\n"); - printf ("A tool for displaying and configuring active parameters within corosync.\n"); - printf ("options:\n"); -+ printf ("\t-i\tFinds only information about the specified interface IP address.\n"); - printf ("\t-s\tDisplays the status of the current rings on this node.\n"); - printf ("\t-r\tReset redundant ring state cluster wide after a fault to\n"); - printf ("\t\tre-enable redundant ring operation.\n"); -- printf ("\t-a\tDisplay the IP address(es) of a node\n"); -+ printf ("\t-R\tTell all instances of corosync in this cluster to reload corosync.conf.\n"); - printf ("\t-k\tKill a node identified by node id.\n"); -- printf ("\t-R\tReload corosync.conf on all nodes.\n"); -+ printf ("\t-a\tDisplay the IP address(es) of a node\n"); -+ printf ("\t-h\tPrint basic usage.\n"); - printf ("\t-H\tShutdown corosync cleanly on this node.\n"); - } - -@@ -306,7 +308,8 @@ int main (int argc, char *argv[]) { - shutdown_do(); - break; - case 'a': -- showaddrs_do( atoi(optarg) ); -+ nodeid = atoi (optarg); -+ showaddrs_do(nodeid); - break; - case 'h': - usage_do(); -diff --git a/tools/corosync-cmapctl.c b/tools/corosync-cmapctl.c -index d31a73d..af0aa14 100644 ---- a/tools/corosync-cmapctl.c -+++ b/tools/corosync-cmapctl.c -@@ -96,7 +96,7 @@ static int convert_name_to_type(const char *name) - static int print_help(void) - { - printf("\n"); -- printf("usage: corosync-cmapctl [-b] [-dghsTtp] [params...]\n"); -+ printf("usage: corosync-cmapctl [-b] [-DdghsTt] [-p filename] [params...]\n"); - printf("\n"); - printf(" -b show binary values\n"); - printf("\n"); -diff --git a/tools/corosync-cpgtool.c b/tools/corosync-cpgtool.c -index 719d10b..a5fc118 100644 ---- a/tools/corosync-cpgtool.c -+++ b/tools/corosync-cpgtool.c -@@ -198,7 +198,7 @@ static void usage_do (const char *prog_name) - printf ("A tool for displaying cpg groups and members.\n"); - printf ("options:\n"); - printf ("\t-d\tDelimiter between fields.\n"); -- printf ("\t-e\tDon't escape unprintable characters in group name\n"); -+ printf ("\t-e\tDon't escape unprintable characters in group name.\n"); - printf ("\t-n\tDisplay only all existing group names.\n"); - printf ("\t-h\tDisplay this help.\n"); - } -diff --git a/tools/corosync-keygen.c b/tools/corosync-keygen.c -index 668d6e9..695ed31 100644 ---- a/tools/corosync-keygen.c -+++ b/tools/corosync-keygen.c -@@ -50,13 +50,14 @@ - #define DEFAULT_KEYFILE COROSYSCONFDIR "/authkey" - - static const char usage[] = -- "Usage: corosync-keygen [-k ] [-l]\n" -+ "Usage: corosync-keygen [-k ] [-l] [-h]\n" - " -k / --key-file= - Write to the specified keyfile\n" - " instead of the default " DEFAULT_KEYFILE ".\n" - " -l / --less-secure - Use a less secure random number source\n" - " (/dev/urandom) that is guaranteed not to require user\n" - " input for entropy. This can be used when this\n" -- " application is used from a script.\n"; -+ " application is used from a script.\n" -+ " -h / --help - Print basic usage.\n"; - - - int main (int argc, char *argv[]) -diff --git a/tools/corosync-notifyd.c b/tools/corosync-notifyd.c -index 783c637..507a248 100644 ---- a/tools/corosync-notifyd.c -+++ b/tools/corosync-notifyd.c -@@ -1093,9 +1093,9 @@ _cs_usage(void) - " -l : Log all events.\n"\ - " -o : Print events to stdout (turns on -l).\n"\ - " -s : Send SNMP traps on all events.\n"\ -- " -m : SNMP Manager IP address (defaults to localhost).\n"\ -+ " -m : Set the SNMP Manager IP address (defaults to localhost).\n"\ - " -d : Send DBUS signals on all events.\n"\ -- " -h : Print this help\n\n"); -+ " -h : Print this help.\n\n"); - } - - int -diff --git a/tools/corosync-quorumtool.c b/tools/corosync-quorumtool.c -index ea5ca28..5fa937d 100644 ---- a/tools/corosync-quorumtool.c -+++ b/tools/corosync-quorumtool.c -@@ -157,15 +157,16 @@ static void show_usage(const char *name) - printf(" options:\n"); - printf("\n"); - printf(" -s show quorum status\n"); -- printf(" -m monitor quorum status\n"); -+ printf(" -m constantly monitor quorum status\n"); - printf(" -l list nodes\n"); - printf(" -p when used with -s or -l, generates machine parsable output\n"); - printf(" -v change the number of votes for a node (*)\n"); -- printf(" -n optional nodeid of node for -v (*)\n"); -+ printf(" -n optional nodeid of node for -v\n"); - printf(" -e change expected votes for the cluster (*)\n"); - printf(" -H show nodeids in hexadecimal rather than decimal\n"); - printf(" -i show node IP addresses instead of the resolved name\n"); -- printf(" -o order by [a] IP address (default), [i] nodeid,\n"); -+ printf(" -p when used with -s or -l, generates machine parsable output\n"); -+ printf(" -o order by [a] IP address (default), [n] name, [i] nodeid\n"); - printf(" -f forcefully unregister a quorum device *DANGEROUS* (*)\n"); - printf(" -h show this help text\n"); - printf(" -V show version and exit\n"); --- -1.7.1 - diff --git a/SOURCES/bz1434529-5-upstart-Add-softdog-module-loading-example.patch b/SOURCES/bz1434529-5-upstart-Add-softdog-module-loading-example.patch deleted file mode 100644 index 50875e4..0000000 --- a/SOURCES/bz1434529-5-upstart-Add-softdog-module-loading-example.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 75474d69bebea6c9c4ef2252476ce738cf92f0f4 Mon Sep 17 00:00:00 2001 -From: yuusuke -Date: Fri, 2 Dec 2016 16:35:50 +0900 -Subject: [PATCH] upstart: Add softdog module loading example - -Signed-off-by: yuusuke -Reviewed-by: Jan Friesse -(cherry picked from commit 1d05569fa9820082d5488379f25828c78ccd5f17) ---- - init/corosync.conf.in | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/init/corosync.conf.in b/init/corosync.conf.in -index e5d7798..373565a 100644 ---- a/init/corosync.conf.in -+++ b/init/corosync.conf.in -@@ -18,6 +18,8 @@ end script - - pre-start script - mkdir -p @LOCALSTATEDIR@/run -+ # rewrite according to environment. -+ #[ -c /dev/watchdog ] || modprobe softdog - end script - - post-start script --- -1.7.1 - diff --git a/SOURCES/bz1434529-6-Remove-deprecated-doxygen-flags.patch b/SOURCES/bz1434529-6-Remove-deprecated-doxygen-flags.patch deleted file mode 100644 index a91af11..0000000 --- a/SOURCES/bz1434529-6-Remove-deprecated-doxygen-flags.patch +++ /dev/null @@ -1,115 +0,0 @@ -From b252013e42007ea7284ae54d035a30ca40f20fc0 Mon Sep 17 00:00:00 2001 -From: Richard B Winters -Date: Thu, 23 Apr 2015 18:35:22 -0400 -Subject: [PATCH] Remove deprecated doxygen flags - -Running 'doxygen -u Doxyfile.in' in the source root produces the -following results: - - - SYMBOL_CACHE_SIZE at line 301 has become obsolete. This tag - has been removed. - - SHOW_DIRECTORIES at line 507 has become obsolete. This tag - has been removed. - - HTML_ALIGN_MEMBERS at line 881 has become obsolete. This tag - has been removed. - - USE_INLINE_TREES at line 1067 has become obsolete. This tag - has been removed. - - XML_SCHEMA at line 1311 has become obsolete. This tag has been - removed. - - XML_DTD at line 1317 has become obsolete. This tag has been - removed. - -Signed-off-by: Richard B Winters -Reviewed-by: Jan Friesse -(cherry picked from commit c3775f9dad34e833e8eb3cde7db3b9fb281dee52) ---- - Doxyfile.in | 45 --------------------------------------------- - 1 files changed, 0 insertions(+), 45 deletions(-) - -diff --git a/Doxyfile.in b/Doxyfile.in -index d300fc8..c3340e0 100644 ---- a/Doxyfile.in -+++ b/Doxyfile.in -@@ -284,22 +284,6 @@ SUBGROUPING = YES - - TYPEDEF_HIDES_STRUCT = NO - --# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to --# determine which symbols to keep in memory and which to flush to disk. --# When the cache is full, less often used symbols will be written to disk. --# For small to medium size projects (<1000 input files) the default value is --# probably good enough. For larger projects a too small cache size can cause --# doxygen to be busy swapping symbols to and from disk most of the time --# causing a significant performance penalty. --# If the system has enough physical memory increasing the cache will improve the --# performance by keeping more symbols in memory. Note that the value works on --# a logarithmic scale so increasing the size by one will roughly double the --# memory usage. The cache size is given by this formula: --# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, --# corresponding to a cache size of 2^16 = 65536 symbols -- --SYMBOL_CACHE_SIZE = 0 -- - #--------------------------------------------------------------------------- - # Build related configuration options - #--------------------------------------------------------------------------- -@@ -500,12 +484,6 @@ MAX_INITIALIZER_LINES = 30 - - SHOW_USED_FILES = YES - --# If the sources in your project are distributed over multiple directories --# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy --# in the documentation. The default is NO. -- --SHOW_DIRECTORIES = NO -- - # Set the SHOW_FILES tag to NO to disable the generation of the Files page. - # This will remove the Files entry from the Quick Index and from the - # Folder Tree View (if specified). The default is YES. -@@ -874,12 +852,6 @@ HTML_COLORSTYLE_GAMMA = 80 - - HTML_TIMESTAMP = YES - --# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, --# files or namespaces will be aligned in HTML using tables. If set to --# NO a bullet list will be used. -- --HTML_ALIGN_MEMBERS = YES -- - # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML - # documentation will contain sections that can be hidden and shown after the - # page has loaded. For this to work a browser that supports -@@ -1061,11 +1033,6 @@ ENUM_VALUES_PER_LINE = 4 - - GENERATE_TREEVIEW = NO - --# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, --# and Class Hierarchy pages using a tree view instead of an ordered list. -- --USE_INLINE_TREES = NO -- - # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be - # used to set the initial width (in pixels) of the frame in which the tree - # is shown. -@@ -1304,18 +1271,6 @@ GENERATE_XML = NO - - XML_OUTPUT = xml - --# The XML_SCHEMA tag can be used to specify an XML schema, --# which can be used by a validating XML parser to check the --# syntax of the XML files. -- --XML_SCHEMA = -- --# The XML_DTD tag can be used to specify an XML DTD, --# which can be used by a validating XML parser to check the --# syntax of the XML files. -- --XML_DTD = -- - # If the XML_PROGRAMLISTING tag is set to YES Doxygen will - # dump the program listings (including syntax highlighting - # and cross-referencing information) to the XML output. Note that --- -1.7.1 - diff --git a/SOURCES/bz1434529-7-Qdevice-fix-spell-errors-in-qdevice.patch b/SOURCES/bz1434529-7-Qdevice-fix-spell-errors-in-qdevice.patch deleted file mode 100644 index d4132f2..0000000 --- a/SOURCES/bz1434529-7-Qdevice-fix-spell-errors-in-qdevice.patch +++ /dev/null @@ -1,163 +0,0 @@ -From d9caa09c45d4560c89a1ad873087c0476cabab46 Mon Sep 17 00:00:00 2001 -From: Bin Liu -Date: Fri, 9 Dec 2016 16:10:20 +0800 -Subject: [PATCH] Qdevice: fix spell errors in qdevice - -There are somwe spell errors in qdevice-net-algo-test.c, -qnetd-algo-2nodelms.c, qnetd-algo-test.c qnetd-algo-ffsplit.c - -Signed-off-by: Bin Liu -Reviewed-by: Jan Friesse -(cherry picked from commit 5cf587554f6fe5c0216b46a3b0546810139b3e22) ---- - qdevices/qdevice-net-algo-test.c | 12 ++++++------ - qdevices/qnetd-algo-2nodelms.c | 4 ++-- - qdevices/qnetd-algo-ffsplit.c | 4 ++-- - qdevices/qnetd-algo-test.c | 10 +++++----- - 4 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/qdevices/qdevice-net-algo-test.c b/qdevices/qdevice-net-algo-test.c -index d3bf1c4..2a33078 100644 ---- a/qdevices/qdevice-net-algo-test.c -+++ b/qdevices/qdevice-net-algo-test.c -@@ -87,7 +87,7 @@ qdevice_net_algo_test_connected(struct qdevice_net_instance *instance, int *send - * if cast_vote_timer_vote = TLV_VOTE_ACK - * vote = TLV_VOTE_NACK. - * Otherwise send_node_list = 1 and vote = TLV_VOTE_NO_CHANGE -- * If send_node_list is set to non zero, node list is send to qnetd -+ * If send_node_list is set to non zero, node list is sent to qnetd - */ - int - qdevice_net_algo_test_config_node_list_changed(struct qdevice_net_instance *instance, -@@ -112,7 +112,7 @@ qdevice_net_algo_test_config_node_list_changed(struct qdevice_net_instance *inst - * if cast_vote_timer_vote = TLV_VOTE_ACK - * vote = TLV_VOTE_NACK. - * Otherwise send_node_list = 1 and vote = TLV_VOTE_WAIT_FOR_REPLY -- * If send_node_list is set to non zero, node list is send to qnetd -+ * If send_node_list is set to non zero, node list is sent to qnetd - */ - int - qdevice_net_algo_test_votequorum_node_list_notify(struct qdevice_net_instance *instance, -@@ -140,7 +140,7 @@ qdevice_net_algo_test_votequorum_node_list_notify(struct qdevice_net_instance *i - * vote = TLV_VOTE_NACK. - * Otherwise send_node_list = 1 and vote = TLV_VOTE_NO_CHANGE - * -- * If send_node_list is set to non zero, node list is send to qnetd -+ * If send_node_list is set to non zero, node list is sent to qnetd - */ - int - qdevice_net_algo_test_votequorum_quorum_notify(struct qdevice_net_instance *instance, -@@ -172,7 +172,7 @@ qdevice_net_algo_test_votequorum_expected_votes_notify(struct qdevice_net_instan - /* - * Called when config node list reply is received. Vote is set to value returned by server (and can - * be overwriten by algorithm). ring_id is returned by server. ring_id_is_valid is set to 1 only if -- * received ring id matches last sent ring id. It usually make sense to not update timer. -+ * received ring id matches last sent ring id. It usually makes sense to not update timer. - * - * Callback should return 0 on success or -1 on failure (-> disconnect client). - */ -@@ -309,7 +309,7 @@ qdevice_net_algo_test_echo_reply_received(struct qdevice_net_instance *instance, - * Called when client is about to send echo request but echo reply to previous echo request - * was not yet received. - * -- * Callback should return 0 if processing should continue (echo request is not send but timer is -+ * Callback should return 0 if processing should continue (echo request is not sent but timer is - * scheduled again) otherwise -1 (-> disconnect client). - */ - int -@@ -322,7 +322,7 @@ qdevice_net_algo_test_echo_reply_not_received(struct qdevice_net_instance *insta - } - - /* -- * Called when client disconnect from server. -+ * Called when client disconnects from server. - * - * disconnect_reason contains one of QDEVICE_NET_DISCONNECT_REASON_ - * try_reconnect can be set to non zero value if reconnect to server should be tried -diff --git a/qdevices/qnetd-algo-2nodelms.c b/qdevices/qnetd-algo-2nodelms.c -index a62b9a9..ed759ab 100644 ---- a/qdevices/qnetd-algo-2nodelms.c -+++ b/qdevices/qnetd-algo-2nodelms.c -@@ -87,7 +87,7 @@ qnetd_algo_2nodelms_client_init(struct qnetd_client *client) - * should ask later for a vote) or wait_for_reply (client should wait for reply). - * - * Return TLV_REPLY_ERROR_CODE_NO_ERROR on success, different TLV_REPLY_ERROR_CODE_* -- * on failure (error is send back to client) -+ * on failure (error is sent back to client) - */ - enum tlv_reply_error_code - qnetd_algo_2nodelms_config_node_list_received(struct qnetd_client *client, -@@ -128,7 +128,7 @@ qnetd_algo_2nodelms_config_node_list_received(struct qnetd_client *client, - * should ask later for a vote) or wait_for_reply (client should wait for reply). - * - * Return TLV_REPLY_ERROR_CODE_NO_ERROR on success, different TLV_REPLY_ERROR_CODE_* -- * on failure (error is send back to client) -+ * on failure (error is sent back to client) - */ - - enum tlv_reply_error_code -diff --git a/qdevices/qnetd-algo-ffsplit.c b/qdevices/qnetd-algo-ffsplit.c -index 01e5f0c..6f34cf1 100644 ---- a/qdevices/qnetd-algo-ffsplit.c -+++ b/qdevices/qnetd-algo-ffsplit.c -@@ -458,8 +458,8 @@ qnetd_algo_ffsplit_update_nodes_state(struct qnetd_client *client, int client_le - - /* - * Send vote info. If client_leaving is set, client is ignored. if send_acks -- * is set, only ACK votes are send (nodes in QNETD_ALGO_FFSPLIT_CLIENT_STATE_SENDING_ACK state), -- * otherwise only NACK votes are send (nodes in QNETD_ALGO_FFSPLIT_CLIENT_STATE_SENDING_NACK state) -+ * is set, only ACK votes are sent (nodes in QNETD_ALGO_FFSPLIT_CLIENT_STATE_SENDING_ACK state), -+ * otherwise only NACK votes are sent (nodes in QNETD_ALGO_FFSPLIT_CLIENT_STATE_SENDING_NACK state) - * - * Returns number of send votes - */ -diff --git a/qdevices/qnetd-algo-test.c b/qdevices/qnetd-algo-test.c -index 816d6f6..644509f 100644 ---- a/qdevices/qnetd-algo-test.c -+++ b/qdevices/qnetd-algo-test.c -@@ -60,7 +60,7 @@ - * client is initialized qnetd_client structure. - * - * Return TLV_REPLY_ERROR_CODE_NO_ERROR on success, different TLV_REPLY_ERROR_CODE_* -- * on failure (error is send back to client) -+ * on failure (error is sent back to client) - */ - enum tlv_reply_error_code - qnetd_algo_test_client_init(struct qnetd_client *client) -@@ -137,7 +137,7 @@ qnetd_algo_test_config_node_list_received(struct qnetd_client *client, - * should ask later for a vote) or wait_for_reply (client should wait for reply). - * - * Return TLV_REPLY_ERROR_CODE_NO_ERROR on success, different TLV_REPLY_ERROR_CODE_* -- * on failure (error is send back to client) -+ * on failure (error is sent back to client) - */ - - enum tlv_reply_error_code -@@ -162,7 +162,7 @@ qnetd_algo_test_membership_node_list_received(struct qnetd_client *client, - * to use qnetd_client_send_vote_info. - * - * Return TLV_REPLY_ERROR_CODE_NO_ERROR on success, different TLV_REPLY_ERROR_CODE_* -- * on failure (error is send back to client) -+ * on failure (error is sent back to client) - */ - enum tlv_reply_error_code - qnetd_algo_test_quorum_node_list_received(struct qnetd_client *client, -@@ -229,13 +229,13 @@ qnetd_algo_test_vote_info_reply_received(struct qnetd_client *client, uint32_t m - * Called as a result of qnetd_client_algo_timer_schedule function call after timeout expires. - * - * If send_vote is set by callback to non zero value, result_vote must also be set and such vote is -- * send to client. Result_vote is ignored if send_vote = 0 (default). -+ * sent to client. Result_vote is ignored if send_vote = 0 (default). - * - * If reschedule timer (default value = 0) is set to non zero value, callback is called again later - * with same timeout as originaly created. - * - * Return TLV_REPLY_ERROR_CODE_NO_ERROR on success, different TLV_REPLY_ERROR_CODE_* -- * on failure (error is send back to client) -+ * on failure (error is sent back to client) - */ - enum tlv_reply_error_code - qnetd_algo_test_timer_callback(struct qnetd_client *client, int *reschedule_timer, --- -1.7.1 - diff --git a/SOURCES/bz1434529-8-doc-document-watchdog_device-parameter.patch b/SOURCES/bz1434529-8-doc-document-watchdog_device-parameter.patch deleted file mode 100644 index 6be814d..0000000 --- a/SOURCES/bz1434529-8-doc-document-watchdog_device-parameter.patch +++ /dev/null @@ -1,52 +0,0 @@ -From a5f97ae1b99063383d8f45168125b34232b91faf Mon Sep 17 00:00:00 2001 -From: Adrian Vondendriesch -Date: Tue, 17 Jan 2017 15:26:45 +0100 -Subject: [PATCH] doc: document watchdog_device parameter - -Commit 8d8d4a936ab73d8449a3574f969b17a90ef9428e introduced the -configuration parameter resources.watchdog_device. This commit -introduces the resources section and watchdog_device parameter in -corosync.conf.5. - -Signed-off-by: Adrian Vondendriesch -Reviewed-by: Jan Friesse -(cherry picked from commit 16ca44ccdc4f3ab051c866b15d948d44bf4ee020) ---- - man/corosync.conf.5 | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -diff --git a/man/corosync.conf.5 b/man/corosync.conf.5 -index 55b21f2..546400e 100644 ---- a/man/corosync.conf.5 -+++ b/man/corosync.conf.5 -@@ -60,6 +60,9 @@ This top level directive contains configuration options for nodes in cluster. - .TP - qb { } - This top level directive contains configuration options related to libqb. -+.TP -+resources { } -+This top level directive contains configuration options for resources. - - .PP - .PP -@@ -680,6 +683,17 @@ Native means one of shm or socket, depending on what is supported by OS. On syst - with support for both, SHM is selected. SHM is generally faster, but need to allocate - ring buffer file in /dev/shm. - -+.PP -+Within the -+.B resources -+directive it is possible to specify options for resources. -+ -+Possible option is: -+.TP -+watchdog_device -+This configuration option controls which watchdog device corosync try to bind to. -+The default value is /dev/watchdog. The value "no" disables the watchdog feature. -+ - .SH "FILES" - .TP - /etc/corosync/corosync.conf --- -1.7.1 - diff --git a/SOURCES/bz1434534-1-Logsys-Change-logsys-syslog_priority-priority.patch b/SOURCES/bz1434534-1-Logsys-Change-logsys-syslog_priority-priority.patch deleted file mode 100644 index 2dc971b..0000000 --- a/SOURCES/bz1434534-1-Logsys-Change-logsys-syslog_priority-priority.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 609cc0cc100aa1070d97b405273373682da0e270 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Fri, 24 Feb 2017 16:23:50 +0100 -Subject: [PATCH] Logsys: Change logsys syslog_priority priority - -LibQB adds default "*" syslog filter so we have to set syslog_priority -as low as possible so filters applied later in -_logsys_config_apply_per_file takes effect. - -Signed-off-by: Jan Friesse -(cherry picked from commit 8b6bd86a55b8bda9f3a8ff67bdff908263976fa3) ---- - exec/main.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -diff --git a/exec/main.c b/exec/main.c -index ca54a47..5126af5 100644 ---- a/exec/main.c -+++ b/exec/main.c -@@ -128,10 +128,15 @@ - #define IPC_LOGSYS_SIZE 8192*128 - #endif - -+/* -+ * LibQB adds default "*" syslog filter so we have to set syslog_priority as low -+ * as possible so filters applied later in _logsys_config_apply_per_file takes -+ * effect. -+ */ - LOGSYS_DECLARE_SYSTEM ("corosync", - LOGSYS_MODE_OUTPUT_STDERR | LOGSYS_MODE_OUTPUT_SYSLOG, - LOG_DAEMON, -- LOG_INFO); -+ LOG_EMERG); - - LOGSYS_DECLARE_SUBSYS ("MAIN"); - --- -1.7.1 - diff --git a/SOURCES/bz1434534-2-logconfig-Do-not-overwrite-logger_subsys-priority.patch b/SOURCES/bz1434534-2-logconfig-Do-not-overwrite-logger_subsys-priority.patch deleted file mode 100644 index 75c6ef1..0000000 --- a/SOURCES/bz1434534-2-logconfig-Do-not-overwrite-logger_subsys-priority.patch +++ /dev/null @@ -1,50 +0,0 @@ -From c866a2f8603b44e89eb21a6cf7d88134af2e8b66 Mon Sep 17 00:00:00 2001 -From: Bin Liu -Date: Fri, 10 Mar 2017 15:22:13 +0800 -Subject: [PATCH] logconfig: Do not overwrite logger_subsys priority - -logfile_priority and syslog_priority could be modified by -logging.logger_subsys.{logfile_priority|syslog_priority}. which could -lead to the following output(which are at notice level): - -corosync[21419]: [QUORUM] Using quorum provider corosync_votequorum -corosync[21419]: [QUORUM] Members[1]: 1084777643 -corosync[21419]: [QUORUM] This node is within the primary component - and will provide service. -corosync[21419]: [QUORUM] Members[3]: 1084777563 1084777584 1084777643 - -even the syslog_priority is warning. This patch could avoid the -overwrite. - -Signed-off-by: Bin Liu -Reviewed-by: Jan Friesse -(cherry picked from commit d2a5e1442e970069d335ce3a8a67c3b9af352a34) ---- - exec/logconfig.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/exec/logconfig.c b/exec/logconfig.c -index a4d348a..6d0bed6 100644 ---- a/exec/logconfig.c -+++ b/exec/logconfig.c -@@ -401,7 +401,7 @@ static int corosync_main_config_set ( - goto parse_error; - } - } -- else { -+ else if(strcmp(key_name, "logging.syslog_priority") == 0){ - if (logsys_config_syslog_priority_set(subsys, - logsys_priority_id_get("info")) < 0) { - error_reason = "unable to set syslog level"; -@@ -449,7 +449,7 @@ static int corosync_main_config_set ( - goto parse_error; - } - } -- else { -+ else if(strcmp(key_name,"logging.logfile_priority") == 0){ - if (logsys_config_logfile_priority_set(subsys, - logsys_priority_id_get("info")) < 0) { - error_reason = "unable to set syslog level"; --- -1.7.1 - diff --git a/SOURCES/bz1445001-1-Main-Call-mlockall-after-fork.patch b/SOURCES/bz1445001-1-Main-Call-mlockall-after-fork.patch deleted file mode 100644 index feaf247..0000000 --- a/SOURCES/bz1445001-1-Main-Call-mlockall-after-fork.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 238e2e62d8b960e7c10bfa0a8281d78ec99f3a26 Mon Sep 17 00:00:00 2001 -From: Andrew Price -Date: Tue, 25 Apr 2017 14:44:33 +0200 -Subject: [PATCH] Main: Call mlockall after fork - -Man page of mlockall is clear: -Memory locks are not inherited by a child created via fork(2) and are -automatically removed (unlocked) during an execve(2) or when the -process terminates. - -So calling mlockall before corosync_tty_detach is noop when corosync is -executed as a daemon (corosync -f was not affected). - -This regression is caused by ed7d054e552b4cb2a0cb502b65f84310ce6da844 -(setprio for logsys/qblog was correct, mlockall was not). - -Solution is to move corosync_mlockall call on correct place. - -Signed-off-by: Andrew Price -Reviewed-by: Christine Caulfield -Reviewed-by: Jan Friesse -(cherry picked from commit 86012ebb45c85df277eb8fe5dc5223e2fdebf25c) ---- - exec/main.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/exec/main.c b/exec/main.c -index d43cac6..602c788 100644 ---- a/exec/main.c -+++ b/exec/main.c -@@ -1177,8 +1177,6 @@ int main (int argc, char **argv, char **envp) - corosync_setscheduler (); - } - -- corosync_mlockall (); -- - /* - * Other signals are registered later via qb_loop_signal_add - */ -@@ -1310,6 +1308,8 @@ int main (int argc, char **argv, char **envp) - corosync_tty_detach (); - } - -+ corosync_mlockall (); -+ - corosync_poll_handle = qb_loop_create (); - - memset(&scheduler_pause_timeout_data, 0, sizeof(scheduler_pause_timeout_data)); --- -1.7.1 - diff --git a/SOURCES/bz1477461-1-main-Add-option-to-set-priority.patch b/SOURCES/bz1477461-1-main-Add-option-to-set-priority.patch deleted file mode 100644 index 52c8171..0000000 --- a/SOURCES/bz1477461-1-main-Add-option-to-set-priority.patch +++ /dev/null @@ -1,231 +0,0 @@ -From a008448efb2b1d45c432867caf08f0bcf2b4b9b0 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Fri, 7 Jul 2017 17:49:46 +0200 -Subject: [PATCH] main: Add option to set priority - -Option -P takes numeric value with same meaning -as nice or values min / max, meaning maximal / minimal priority (so -minimal / maximal nice value). - -Scheduler / priority setting is moved in code so it is now executed -after logsys is configured so errors are logged. - -Setting maximal priority is also used as fallback when realtime -scheduling is requested and sched_setscheduler fails. - -Signed-off-by: Jan Friesse -Reviewed-by: Christine Caulfield ---- - exec/main.c | 71 ++++++++++++++++++++++++++++++++++++++++++++------------ - man/corosync.8 | 22 +++++++++++++---- - 2 files changed, 73 insertions(+), 20 deletions(-) - -diff --git a/exec/main.c b/exec/main.c -index 0d381c2..60c01a4 100644 ---- a/exec/main.c -+++ b/exec/main.c -@@ -862,8 +862,10 @@ static void timer_function_scheduler_timeout (void *data) - } - - --static void corosync_setscheduler (void) -+static int corosync_set_rr_scheduler (void) - { -+ int ret_val = 0; -+ - #if defined(HAVE_PTHREAD_SETSCHEDPARAM) && defined(HAVE_SCHED_GET_PRIORITY_MAX) && defined(HAVE_SCHED_SETSCHEDULER) - int res; - -@@ -880,6 +882,7 @@ static void corosync_setscheduler (void) - #ifdef HAVE_QB_LOG_THREAD_PRIORITY_SET - qb_log_thread_priority_set (SCHED_OTHER, 0); - #endif -+ ret_val = -1; - } else { - - /* -@@ -901,11 +904,15 @@ static void corosync_setscheduler (void) - LOGSYS_PERROR (errno, LOGSYS_LEVEL_WARNING, - "Could not get maximum scheduler priority"); - sched_priority = 0; -+ ret_val = -1; - } - #else - log_printf(LOGSYS_LEVEL_WARNING, - "The Platform is missing process priority setting features. Leaving at default."); -+ ret_val = -1; - #endif -+ -+ return (ret_val); - } - - -@@ -1132,29 +1139,48 @@ int main (int argc, char **argv, char **envp) - const char *error_string; - struct totem_config totem_config; - int res, ch; -- int background, setprio, testonly; -+ int background, sched_rr, prio, testonly; - struct stat stat_out; - enum e_corosync_done flock_err; - uint64_t totem_config_warnings; - struct scheduler_pause_timeout_data scheduler_pause_timeout_data; -+ long int tmpli; -+ char *ep; - - /* default configuration - */ - background = 1; -- setprio = 1; -+ sched_rr = 1; -+ prio = 0; - testonly = 0; - -- while ((ch = getopt (argc, argv, "fprtv")) != EOF) { -+ while ((ch = getopt (argc, argv, "fP:prtv")) != EOF) { - - switch (ch) { - case 'f': - background = 0; - break; - case 'p': -- setprio = 0; -+ sched_rr = 0; -+ break; -+ case 'P': -+ if (strcmp(optarg, "max") == 0) { -+ prio = INT_MIN; -+ } else if (strcmp(optarg, "min") == 0) { -+ prio = INT_MAX; -+ } else { -+ tmpli = strtol(optarg, &ep, 10); -+ if (errno != 0 || *ep != '\0' || tmpli > INT_MAX || tmpli < INT_MIN) { -+ fprintf(stderr, "Priority value %s is invalid", optarg); -+ logsys_system_fini(); -+ return EXIT_FAILURE; -+ } -+ -+ prio = tmpli; -+ } - break; - case 'r': -- setprio = 1; -+ sched_rr = 1; - break; - case 't': - testonly = 1; -@@ -1170,8 +1196,9 @@ int main (int argc, char **argv, char **envp) - fprintf(stderr, \ - "usage:\n"\ - " -f : Start application in foreground.\n"\ -- " -p : Do not set process priority.\n"\ -+ " -p : Do not set realtime scheduling.\n"\ - " -r : Set round robin realtime scheduling (default).\n"\ -+ " -P num : Set priority of process (no effect when -r is used)\n"\ - " -t : Test configuration and exit.\n"\ - " -v : Display version and SVN revision of Corosync and exit.\n"); - logsys_system_fini(); -@@ -1179,14 +1206,6 @@ int main (int argc, char **argv, char **envp) - } - } - -- /* -- * Set round robin realtime scheduling with priority 99 -- * Lock all memory to avoid page faults which may interrupt -- * application healthchecking -- */ -- if (setprio) { -- corosync_setscheduler (); -- } - - /* - * Other signals are registered later via qb_loop_signal_add -@@ -1293,6 +1312,24 @@ int main (int argc, char **argv, char **envp) - corosync_exit_error (COROSYNC_DONE_EXIT); - } - -+ /* -+ * Set round robin realtime scheduling with priority 99 -+ */ -+ if (sched_rr) { -+ if (corosync_set_rr_scheduler () != 0) { -+ prio = INT_MIN; -+ } else { -+ prio = 0; -+ } -+ } -+ -+ if (prio != 0) { -+ if (setpriority(PRIO_PGRP, 0, prio) != 0) { -+ LOGSYS_PERROR(errno, LOGSYS_LEVEL_WARNING, -+ "Could not set priority %d", prio); -+ } -+ } -+ - ip_version = totem_config.ip_version; - - totem_config.totem_memb_ring_id_create_or_load = corosync_ring_id_create_or_load; -@@ -1319,6 +1356,10 @@ int main (int argc, char **argv, char **envp) - corosync_tty_detach (); - } - -+ /* -+ * Lock all memory to avoid page faults which may interrupt -+ * application healthchecking -+ */ - corosync_mlockall (); - - corosync_poll_handle = qb_loop_create (); -diff --git a/man/corosync.8 b/man/corosync.8 -index 89ab771..dc596d1 100644 ---- a/man/corosync.8 -+++ b/man/corosync.8 -@@ -1,5 +1,5 @@ - .\"/* --.\" * Copyright (C) 2010 Red Hat, Inc. -+.\" * Copyright (C) 2010-2017 Red Hat, Inc. - .\" * - .\" * All rights reserved. - .\" * -@@ -31,11 +31,11 @@ - .\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - .\" * THE POSSIBILITY OF SUCH DAMAGE. - .\" */ --.TH COROSYNC 8 2010-05-30 -+.TH COROSYNC 8 2017-07-07 - .SH NAME - corosync \- The Corosync Cluster Engine. - .SH SYNOPSIS --.B "corosync [\-f] [\-p] [\-r] [\-t] [\-v]" -+.B "corosync [\-f] [\-P num] [\-p] [\-r] [\-t] [\-v]" - .SH DESCRIPTION - .B corosync - Corosync provides clustering infrastructure such as membership, messaging and quorum. -@@ -45,10 +45,22 @@ Corosync provides clustering infrastructure such as membership, messaging and qu - Start application in foreground. - .TP - .B -p --Do not set process priority. -+Do not set realtime scheduling. - .TP -+.B -P -+Set priority of process. Has effect only when - .B -r --Set round robin realtime scheduling (default). -+is not used. Can be ether numeric value with similar meaning as -+.BR nice (1) -+or -+.B max -+/ -+.B min -+meaning maximal / minimal priority (so minimal / maximal nice value). -+.TP -+.B -r -+Set round robin realtime scheduling with maximal priority (default). When setting -+of scheduler fails, fallback to set maximal priority. - .TP - .B -t - Test configuration and then exit. --- -1.7.1 - diff --git a/SOURCES/bz1477461-2-main-Add-support-for-libcgroup.patch b/SOURCES/bz1477461-2-main-Add-support-for-libcgroup.patch deleted file mode 100644 index 2a3a362..0000000 --- a/SOURCES/bz1477461-2-main-Add-support-for-libcgroup.patch +++ /dev/null @@ -1,288 +0,0 @@ -From c56086c701d08fc17cf6d8ef603caf505a4021b7 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Fri, 28 Jul 2017 16:32:58 +0200 -Subject: [PATCH] main: Add support for libcgroup - -When corosync is started in environment where it ends in cgroup without -properly set rt_runtime_us it's impossible to get RT priority. - -Already implemented workaround is to use higher non-RT priority. - -This patch implements another solution. It moves corosync into root cpu -cgroup. Root cpu cgroup hopefully has enough RT budget. - -Another solution was mentioned on ML -https://lists.freedesktop.org/archives/systemd-devel/2017-July/039353.html -but this means to generate some "random" values. - -Signed-off-by: Jan Friesse -Reviewed-by: Fabio M. Di Nitto -Reviewed-by: Christine Caulfield ---- - configure.ac | 11 ++++++ - corosync.spec.in | 7 ++++ - exec/Makefile.am | 5 +++ - exec/main.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++- - man/corosync.8 | 6 +++- - 5 files changed, 131 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 81fc91b..e60bf1b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -416,6 +416,10 @@ AC_ARG_ENABLE([qnetd], - [ --enable-qnetd : Quorum Net Daemon support ],, - [ enable_qnetd="no" ]) - AM_CONDITIONAL(BUILD_QNETD, test x$enable_qnetd = xyes) -+AC_ARG_ENABLE([libcgroup], -+ [ --enable-libcgroup : Enable libcgroup support ],, -+ [ enable_libcgroup="no" ]) -+AM_CONDITIONAL(ENABLE_LIBCGROUP, test x$enable_libcgroup = xyes) - - # *FLAGS handling goes here - -@@ -548,6 +552,13 @@ if test "x${enable_snmp}" = xyes; then - fi - AM_CONDITIONAL(BUILD_SNMP, test "${do_snmp}" = "1") - -+if test "x${enable_libcgroup}" = xyes; then -+ PKG_CHECK_MODULES([libcgroup], [libcgroup]) -+ AC_DEFINE_UNQUOTED([HAVE_LIBCGROUP], 1, [have libcgroup]) -+ PACKAGE_FEATURES="$PACKAGE_FEATURES libcgroup" -+ WITH_LIST="$WITH_LIST --with libcgroup" -+fi -+ - # extra warnings - EXTRA_WARNINGS="" - -diff --git a/corosync.spec.in b/corosync.spec.in -index 97c8e03..49d7b7e 100644 ---- a/corosync.spec.in -+++ b/corosync.spec.in -@@ -17,6 +17,7 @@ - %bcond_with runautogen - %bcond_with qdevices - %bcond_with qnetd -+%bcond_with libcgroup - - %global gitver %{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}} - %global gittarver %{?numcomm:.%{numcomm}}%{?alphatag:-%{alphatag}}%{?dirty:-%{dirty}} -@@ -74,6 +75,9 @@ Requires: nss-tools - %if %{with qnetd} - BuildRequires: sed - %endif -+%if %{with libcgroup} -+BuildRequires: libcgroup-devel -+%endif - - BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) - -@@ -125,6 +129,9 @@ export rdmacm_LIBS=-lrdmacm \ - %if %{with qnetd} - --enable-qnetd \ - %endif -+%if %{with libcgroup} -+ --enable-libcgroup \ -+%endif - --with-initddir=%{_initrddir} \ - --with-systemddir=%{_unitdir} \ - --with-upstartdir=%{_sysconfdir}/init \ -diff --git a/exec/Makefile.am b/exec/Makefile.am -index 9ca7720..670daf6 100644 ---- a/exec/Makefile.am -+++ b/exec/Makefile.am -@@ -78,5 +78,10 @@ corosync_LDADD = libtotem_pg.la ../common_lib/libcorosync_common.la \ - - corosync_DEPENDENCIES = libtotem_pg.la ../common_lib/libcorosync_common.la - -+if ENABLE_LIBCGROUP -+corosync_CFLAGS += $(libcgroup_CFLAGS) -+corosync_LDADD += $(libcgroup_LIBS) -+endif -+ - lint: - -splint $(LINT_FLAGS) $(CPPFLAGS) $(CFLAGS) *.c -diff --git a/exec/main.c b/exec/main.c -index 60c01a4..b3e7478 100644 ---- a/exec/main.c -+++ b/exec/main.c -@@ -110,6 +110,10 @@ - #include - #include - -+#ifdef HAVE_LIBCGROUP -+#include -+#endif -+ - #include "quorum.h" - #include "totemsrp.h" - #include "logconfig.h" -@@ -1134,12 +1138,95 @@ error_close: - return (err); - } - -+static int corosync_move_to_root_cgroup(void) { -+ int res = -1; -+#ifdef HAVE_LIBCGROUP -+ int cg_ret; -+ struct cgroup *root_cgroup = NULL; -+ struct cgroup_controller *root_cpu_cgroup_controller = NULL; -+ char *current_cgroup_path = NULL; -+ -+ cg_ret = cgroup_init(); -+ if (cg_ret) { -+ log_printf(LOGSYS_LEVEL_WARNING, "Unable to initialize libcgroup: %s ", -+ cgroup_strerror(cg_ret)); -+ -+ goto exit_res; -+ } -+ -+ cg_ret = cgroup_get_current_controller_path(getpid(), "cpu", ¤t_cgroup_path); -+ if (cg_ret) { -+ log_printf(LOGSYS_LEVEL_WARNING, "Unable to get current cpu cgroup path: %s ", -+ cgroup_strerror(cg_ret)); -+ -+ goto exit_res; -+ } -+ -+ if (strcmp(current_cgroup_path, "/") == 0) { -+ log_printf(LOGSYS_LEVEL_DEBUG, "Corosync is already in root cgroup path"); -+ -+ res = 0; -+ goto exit_res; -+ } -+ -+ root_cgroup = cgroup_new_cgroup("/"); -+ if (root_cgroup == NULL) { -+ log_printf(LOGSYS_LEVEL_WARNING, "Can't create root cgroup"); -+ -+ goto exit_res; -+ } -+ -+ root_cpu_cgroup_controller = cgroup_add_controller(root_cgroup, "cpu"); -+ if (root_cpu_cgroup_controller == NULL) { -+ log_printf(LOGSYS_LEVEL_WARNING, "Can't create root cgroup cpu controller"); -+ -+ goto exit_res; -+ } -+ -+ cg_ret = cgroup_attach_task(root_cgroup); -+ if (cg_ret) { -+ log_printf(LOGSYS_LEVEL_WARNING, "Can't attach task to root cgroup: %s ", -+ cgroup_strerror(cg_ret)); -+ -+ goto exit_res; -+ } -+ -+ cg_ret = cgroup_get_current_controller_path(getpid(), "cpu", ¤t_cgroup_path); -+ if (cg_ret) { -+ log_printf(LOGSYS_LEVEL_WARNING, "Unable to get current cpu cgroup path: %s ", -+ cgroup_strerror(cg_ret)); -+ -+ goto exit_res; -+ } -+ -+ if (strcmp(current_cgroup_path, "/") == 0) { -+ log_printf(LOGSYS_LEVEL_NOTICE, "Corosync sucesfully moved to root cgroup"); -+ res = 0; -+ } else { -+ log_printf(LOGSYS_LEVEL_WARNING, "Can't move Corosync to root cgroup"); -+ } -+ -+exit_res: -+ if (root_cgroup != NULL) { -+ cgroup_free(&root_cgroup); -+ } -+ -+ /* -+ * libcgroup doesn't define something like cgroup_fini so there is no way how to clean -+ * it's cache. It has to be called when libcgroup authors decide to implement it. -+ */ -+ -+#endif -+ return (res); -+} -+ -+ - int main (int argc, char **argv, char **envp) - { - const char *error_string; - struct totem_config totem_config; - int res, ch; -- int background, sched_rr, prio, testonly; -+ int background, sched_rr, prio, testonly, move_to_root_cgroup; - struct stat stat_out; - enum e_corosync_done flock_err; - uint64_t totem_config_warnings; -@@ -1153,8 +1240,9 @@ int main (int argc, char **argv, char **envp) - sched_rr = 1; - prio = 0; - testonly = 0; -+ move_to_root_cgroup = 1; - -- while ((ch = getopt (argc, argv, "fP:prtv")) != EOF) { -+ while ((ch = getopt (argc, argv, "fP:pRrtv")) != EOF) { - - switch (ch) { - case 'f': -@@ -1179,6 +1267,9 @@ int main (int argc, char **argv, char **envp) - prio = tmpli; - } - break; -+ case 'R': -+ move_to_root_cgroup = 0; -+ break; - case 'r': - sched_rr = 1; - break; -@@ -1198,6 +1289,7 @@ int main (int argc, char **argv, char **envp) - " -f : Start application in foreground.\n"\ - " -p : Do not set realtime scheduling.\n"\ - " -r : Set round robin realtime scheduling (default).\n"\ -+ " -R : Do not try move corosync to root cpu cgroup (valid when built with libcgroup)\n" \ - " -P num : Set priority of process (no effect when -r is used)\n"\ - " -t : Test configuration and exit.\n"\ - " -v : Display version and SVN revision of Corosync and exit.\n"); -@@ -1312,6 +1404,15 @@ int main (int argc, char **argv, char **envp) - corosync_exit_error (COROSYNC_DONE_EXIT); - } - -+ -+ /* -+ * Try to move corosync into root cpu cgroup. Failure is not fatal and -+ * error is deliberately ignored. -+ */ -+ if (move_to_root_cgroup) { -+ (void)corosync_move_to_root_cgroup(); -+ } -+ - /* - * Set round robin realtime scheduling with priority 99 - */ -diff --git a/man/corosync.8 b/man/corosync.8 -index dc596d1..7bce65e 100644 ---- a/man/corosync.8 -+++ b/man/corosync.8 -@@ -35,7 +35,7 @@ - .SH NAME - corosync \- The Corosync Cluster Engine. - .SH SYNOPSIS --.B "corosync [\-f] [\-P num] [\-p] [\-r] [\-t] [\-v]" -+.B "corosync [\-f] [\-P num] [\-p] [\-r] [-R] [\-t] [\-v]" - .SH DESCRIPTION - .B corosync - Corosync provides clustering infrastructure such as membership, messaging and quorum. -@@ -62,6 +62,10 @@ meaning maximal / minimal priority (so minimal / maximal nice value). - Set round robin realtime scheduling with maximal priority (default). When setting - of scheduler fails, fallback to set maximal priority. - .TP -+.B -R -+Do not try to move Corosync to root cpu cgroup. This feature is available only -+for corosync with libcgroup enabled during the build. -+.TP - .B -t - Test configuration and then exit. - .TP --- -1.7.1 - diff --git a/SOURCES/bz1484264-1-totem-Propagate-totem-initialization-failure.patch b/SOURCES/bz1484264-1-totem-Propagate-totem-initialization-failure.patch deleted file mode 100644 index d240842..0000000 --- a/SOURCES/bz1484264-1-totem-Propagate-totem-initialization-failure.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 0413a8f4672352171f0df731b7d9c1fe20acbc4c Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Wed, 14 Jun 2017 16:27:37 +0200 -Subject: [PATCH] totem: Propagate totem initialization failure - -(backported from master 564b4bf7d4c5b3f632a48610761dce58e5809b3a) - -Signed-off-by: Jan Friesse -Reviewed-by: Christine Caulfield ---- - exec/main.c | 8 ++++++-- - exec/totempg.c | 5 +++++ - exec/totemrrp.c | 6 +++++- - exec/totemsrp.c | 6 +++++- - 4 files changed, 21 insertions(+), 4 deletions(-) - -diff --git a/exec/main.c b/exec/main.c -index 5f96c28..0d381c2 100644 ---- a/exec/main.c -+++ b/exec/main.c -@@ -1355,9 +1355,13 @@ int main (int argc, char **argv, char **envp) - * Join multicast group and setup delivery - * and configuration change functions - */ -- totempg_initialize ( -+ if (totempg_initialize ( - corosync_poll_handle, -- &totem_config); -+ &totem_config) != 0) { -+ -+ log_printf (LOGSYS_LEVEL_ERROR, "Can't initialize TOTEM layer"); -+ corosync_exit_error (COROSYNC_DONE_FATAL_ERR); -+ } - - totempg_service_ready_register ( - main_service_ready); -diff --git a/exec/totempg.c b/exec/totempg.c -index 05729be..5cef5e1 100644 ---- a/exec/totempg.c -+++ b/exec/totempg.c -@@ -814,6 +814,10 @@ int totempg_initialize ( - totempg_confchg_fn, - totempg_waiting_trans_ack_cb); - -+ if (res == -1) { -+ goto error_exit; -+ } -+ - totemmrp_callback_token_create ( - &callback_token_received_handle, - TOTEM_CALLBACK_TOKEN_RECEIVED, -@@ -827,6 +831,7 @@ int totempg_initialize ( - - list_init (&totempg_groups_list); - -+error_exit: - return (res); - } - -diff --git a/exec/totemrrp.c b/exec/totemrrp.c -index c6b97bc..f806feb 100644 ---- a/exec/totemrrp.c -+++ b/exec/totemrrp.c -@@ -2150,7 +2150,7 @@ int totemrrp_initialize ( - deliver_fn_context->iface_no = i; - instance->deliver_fn_context[i] = (void *)deliver_fn_context; - -- totemnet_initialize ( -+ res = totemnet_initialize ( - poll_handle, - &instance->net_handles[i], - totem_config, -@@ -2161,6 +2161,10 @@ int totemrrp_initialize ( - rrp_iface_change_fn, - rrp_target_set_completed); - -+ if (res == -1) { -+ goto error_destroy; -+ } -+ - totemnet_net_mtu_adjust (instance->net_handles[i], totem_config); - } - -diff --git a/exec/totemsrp.c b/exec/totemsrp.c -index f80f8e4..91c5423 100644 ---- a/exec/totemsrp.c -+++ b/exec/totemsrp.c -@@ -851,6 +851,7 @@ int totemsrp_initialize ( - int waiting_trans_ack)) - { - struct totemsrp_instance *instance; -+ int res; - - instance = malloc (sizeof (struct totemsrp_instance)); - if (instance == NULL) { -@@ -993,7 +994,7 @@ int totemsrp_initialize ( - } - } - -- totemrrp_initialize ( -+ res = totemrrp_initialize ( - poll_handle, - &instance->totemrrp_context, - totem_config, -@@ -1004,6 +1005,9 @@ int totemsrp_initialize ( - main_token_seqid_get, - main_msgs_missing, - target_set_completed); -+ if (res == -1) { -+ goto error_exit; -+ } - - /* - * Must have net_mtu adjusted by totemrrp_initialize first --- -1.7.1 - diff --git a/SOURCES/bz1484264-2-totemcrypto-Refactor-symmetric-key-importing.patch b/SOURCES/bz1484264-2-totemcrypto-Refactor-symmetric-key-importing.patch deleted file mode 100644 index f130bfc..0000000 --- a/SOURCES/bz1484264-2-totemcrypto-Refactor-symmetric-key-importing.patch +++ /dev/null @@ -1,156 +0,0 @@ -From a885868181c07ba9ab5cdfdad1d66d387b2a4428 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Tue, 20 Jun 2017 15:25:09 +0200 -Subject: [PATCH] totemcrypto: Refactor symmetric key importing - -Signed-off-by: Jan Friesse -Reviewed-by: Fabio M. Di Nitto -Reviewed-by: Christine Caulfield ---- - exec/totemcrypto.c | 96 +++++++++++++++++++++++++++++----------------------- - 1 files changed, 54 insertions(+), 42 deletions(-) - -diff --git a/exec/totemcrypto.c b/exec/totemcrypto.c -index a97ba62..0e98f27 100644 ---- a/exec/totemcrypto.c -+++ b/exec/totemcrypto.c -@@ -206,6 +206,11 @@ do { \ - (const char *)format, ##args); \ - } while (0); - -+enum sym_key_type { -+ SYM_KEY_TYPE_CRYPT, -+ SYM_KEY_TYPE_HASH -+}; -+ - /* - * crypt/decrypt functions - */ -@@ -226,38 +231,65 @@ static int string_to_crypto_cipher_type(const char* crypto_cipher_type) - return CRYPTO_CIPHER_TYPE_AES256; - } - --static int init_nss_crypto(struct crypto_instance *instance) -+static PK11SymKey *import_symmetric_key(struct crypto_instance *instance, enum sym_key_type key_type) - { -- PK11SlotInfo* crypt_slot = NULL; -- SECItem crypt_param; -+ SECItem key_item; -+ PK11SlotInfo *slot; -+ PK11SymKey *res_key; -+ CK_MECHANISM_TYPE cipher; -+ CK_ATTRIBUTE_TYPE operation; -+ -+ memset(&key_item, 0, sizeof(key_item)); -+ slot = NULL; -+ -+ key_item.type = siBuffer; -+ key_item.data = instance->private_key; -+ -+ switch (key_type) { -+ case SYM_KEY_TYPE_CRYPT: -+ key_item.len = cipher_key_len[instance->crypto_cipher_type]; -+ cipher = cipher_to_nss[instance->crypto_cipher_type]; -+ operation = CKA_ENCRYPT|CKA_DECRYPT; -+ break; -+ case SYM_KEY_TYPE_HASH: -+ key_item.len = instance->private_key_len; -+ cipher = hash_to_nss[instance->crypto_hash_type]; -+ operation = CKA_SIGN; -+ break; -+ } -+ -+ slot = PK11_GetBestSlot(cipher, NULL); -+ if (slot == NULL) { -+ log_printf(instance->log_level_security, "Unable to find security slot (%d): %s", -+ PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -+ return (NULL); -+ } - -- if (!cipher_to_nss[instance->crypto_cipher_type]) { -- return 0; -+ res_key = PK11_ImportSymKey(slot, cipher, PK11_OriginUnwrap, operation, &key_item, NULL); -+ if (res_key == NULL) { -+ log_printf(instance->log_level_security, "Failure to import key into NSS (%d): %s", -+ PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -+ goto exit_err; - } - -- crypt_param.type = siBuffer; -- crypt_param.data = instance->private_key; -- crypt_param.len = cipher_key_len[instance->crypto_cipher_type]; -+exit_err: -+ PK11_FreeSlot(slot); - -- crypt_slot = PK11_GetBestSlot(cipher_to_nss[instance->crypto_cipher_type], NULL); -- if (crypt_slot == NULL) { -- log_printf(instance->log_level_security, "Unable to find security slot (err %d)", -- PR_GetError()); -- return -1; -+ return (res_key); -+} -+ -+static int init_nss_crypto(struct crypto_instance *instance) -+{ -+ -+ if (!cipher_to_nss[instance->crypto_cipher_type]) { -+ return 0; - } - -- instance->nss_sym_key = PK11_ImportSymKey(crypt_slot, -- cipher_to_nss[instance->crypto_cipher_type], -- PK11_OriginUnwrap, CKA_ENCRYPT|CKA_DECRYPT, -- &crypt_param, NULL); -+ instance->nss_sym_key = import_symmetric_key(instance, SYM_KEY_TYPE_CRYPT); - if (instance->nss_sym_key == NULL) { -- log_printf(instance->log_level_security, "Failure to import key into NSS (err %d)", -- PR_GetError()); - return -1; - } - -- PK11_FreeSlot(crypt_slot); -- - return 0; - } - -@@ -447,36 +479,16 @@ static int string_to_crypto_hash_type(const char* crypto_hash_type) - - static int init_nss_hash(struct crypto_instance *instance) - { -- PK11SlotInfo* hash_slot = NULL; -- SECItem hash_param; - - if (!hash_to_nss[instance->crypto_hash_type]) { - return 0; - } - -- hash_param.type = siBuffer; -- hash_param.data = instance->private_key; -- hash_param.len = instance->private_key_len; -- -- hash_slot = PK11_GetBestSlot(hash_to_nss[instance->crypto_hash_type], NULL); -- if (hash_slot == NULL) { -- log_printf(instance->log_level_security, "Unable to find security slot (err %d)", -- PR_GetError()); -- return -1; -- } -- -- instance->nss_sym_key_sign = PK11_ImportSymKey(hash_slot, -- hash_to_nss[instance->crypto_hash_type], -- PK11_OriginUnwrap, CKA_SIGN, -- &hash_param, NULL); -+ instance->nss_sym_key_sign = import_symmetric_key(instance, SYM_KEY_TYPE_HASH); - if (instance->nss_sym_key_sign == NULL) { -- log_printf(instance->log_level_security, "Failure to import key into NSS (err %d)", -- PR_GetError()); - return -1; - } - -- PK11_FreeSlot(hash_slot); -- - return 0; - } - --- -1.7.1 - diff --git a/SOURCES/bz1484264-3-totemcrypto-Use-different-method-to-import-key.patch b/SOURCES/bz1484264-3-totemcrypto-Use-different-method-to-import-key.patch deleted file mode 100644 index 2348633..0000000 --- a/SOURCES/bz1484264-3-totemcrypto-Use-different-method-to-import-key.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 5dadebd21862074deaeb9a337fc9e49f5e9f692a Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Tue, 20 Jun 2017 17:37:57 +0200 -Subject: [PATCH] totemcrypto: Use different method to import key - -PK11_ImportSymKey doesn't work when FIPS is enabled because NSS is -targeting to FIPS Level 2 where loading of unencrypted symmetric -key is prohibited. - -FIPS Level 2 is hard to achieve without breaking compatibility so patch -implements "workaround" to make NSS behave like FIPS Level 1 -(where is allowed to load unencrypted symmetric key). - -Workaround is about using temporal key to encrypt corosync authkey in -memory and then to unwrap it into valid NSS key. - -Signed-off-by: Jan Friesse -Reviewed-by: Fabio M. Di Nitto -Reviewed-by: Christine Caulfield ---- - exec/totemcrypto.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 91 insertions(+), 7 deletions(-) - -diff --git a/exec/totemcrypto.c b/exec/totemcrypto.c -index 0e98f27..79c4312 100644 ---- a/exec/totemcrypto.c -+++ b/exec/totemcrypto.c -@@ -211,6 +211,8 @@ enum sym_key_type { - SYM_KEY_TYPE_HASH - }; - -+#define MAX_WRAPPED_KEY_LEN 128 -+ - /* - * crypt/decrypt functions - */ -@@ -238,9 +240,20 @@ static PK11SymKey *import_symmetric_key(struct crypto_instance *instance, enum s - PK11SymKey *res_key; - CK_MECHANISM_TYPE cipher; - CK_ATTRIBUTE_TYPE operation; -+ CK_MECHANISM_TYPE wrap_mechanism; -+ int wrap_key_len; -+ PK11SymKey *wrap_key; -+ PK11Context *wrap_key_crypt_context; -+ SECItem tmp_sec_item; -+ SECItem wrapped_key; -+ int wrapped_key_len; -+ unsigned char wrapped_key_data[MAX_WRAPPED_KEY_LEN]; - - memset(&key_item, 0, sizeof(key_item)); - slot = NULL; -+ wrap_key = NULL; -+ res_key = NULL; -+ wrap_key_crypt_context = NULL; - - key_item.type = siBuffer; - key_item.data = instance->private_key; -@@ -262,18 +275,89 @@ static PK11SymKey *import_symmetric_key(struct crypto_instance *instance, enum s - if (slot == NULL) { - log_printf(instance->log_level_security, "Unable to find security slot (%d): %s", - PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -- return (NULL); -+ goto exit_res_key; -+ } -+ -+ /* -+ * Without FIPS it would be possible to just use -+ * res_key = PK11_ImportSymKey(slot, cipher, PK11_OriginUnwrap, operation, &key_item, NULL); -+ * with FIPS NSS Level 2 certification has to be "workarounded" (so it becomes Level 1) by using -+ * following method: -+ * 1. Generate wrap key -+ * 2. Encrypt authkey with wrap key -+ * 3. Unwrap encrypted authkey using wrap key -+ */ -+ -+ /* -+ * Generate wrapping key -+ */ -+ wrap_mechanism = PK11_GetBestWrapMechanism(slot); -+ wrap_key_len = PK11_GetBestKeyLength(slot, wrap_mechanism); -+ wrap_key = PK11_KeyGen(slot, wrap_mechanism, NULL, wrap_key_len, NULL); -+ if (wrap_key == NULL) { -+ log_printf(instance->log_level_security, "Unable to generate wrapping key (%d): %s", -+ PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -+ goto exit_res_key; -+ } -+ -+ /* -+ * Encrypt authkey with wrapping key -+ */ -+ -+ /* -+ * Initialization of IV is not needed because PK11_GetBestWrapMechanism should return ECB mode -+ */ -+ memset(&tmp_sec_item, 0, sizeof(tmp_sec_item)); -+ wrap_key_crypt_context = PK11_CreateContextBySymKey(wrap_mechanism, CKA_ENCRYPT, -+ wrap_key, &tmp_sec_item); -+ if (wrap_key_crypt_context == NULL) { -+ log_printf(instance->log_level_security, "Unable to create encrypt context (%d): %s", -+ PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -+ goto exit_res_key; - } - -- res_key = PK11_ImportSymKey(slot, cipher, PK11_OriginUnwrap, operation, &key_item, NULL); -+ wrapped_key_len = (int)sizeof(wrapped_key_data); -+ -+ if (PK11_CipherOp(wrap_key_crypt_context, wrapped_key_data, &wrapped_key_len, -+ sizeof(wrapped_key_data), key_item.data, key_item.len) != SECSuccess) { -+ log_printf(instance->log_level_security, "Unable to encrypt authkey (%d): %s", -+ PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -+ goto exit_res_key; -+ } -+ -+ if (PK11_Finalize(wrap_key_crypt_context) != SECSuccess) { -+ log_printf(instance->log_level_security, "Unable to finalize encryption of authkey (%d): %s", -+ PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -+ goto exit_res_key; -+ } -+ -+ /* -+ * Finally unwrap sym key -+ */ -+ memset(&tmp_sec_item, 0, sizeof(tmp_sec_item)); -+ wrapped_key.data = wrapped_key_data; -+ wrapped_key.len = wrapped_key_len; -+ -+ res_key = PK11_UnwrapSymKey(wrap_key, wrap_mechanism, &tmp_sec_item, &wrapped_key, -+ cipher, operation, key_item.len); - if (res_key == NULL) { - log_printf(instance->log_level_security, "Failure to import key into NSS (%d): %s", - PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); -- goto exit_err; -+ goto exit_res_key; -+ } -+ -+exit_res_key: -+ if (wrap_key_crypt_context != NULL) { -+ PK11_DestroyContext(wrap_key_crypt_context, PR_TRUE); -+ } -+ -+ if (wrap_key != NULL) { -+ PK11_FreeSymKey(wrap_key); - } - --exit_err: -- PK11_FreeSlot(slot); -+ if (slot != NULL) { -+ PK11_FreeSlot(slot); -+ } - - return (res_key); - } -@@ -344,9 +428,9 @@ static int encrypt_nss( - nss_sec_param); - if (!crypt_context) { - log_printf(instance->log_level_security, -- "PK11_CreateContext failed (encrypt) crypt_type=%d (err %d)", -+ "PK11_CreateContext failed (encrypt) crypt_type=%d (%d): %s", - (int)cipher_to_nss[instance->crypto_cipher_type], -- PR_GetError()); -+ PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); - goto out; - } - --- -1.7.1 - diff --git a/SOURCES/bz1484264-4-totemcrypto-Fix-compiler-warning.patch b/SOURCES/bz1484264-4-totemcrypto-Fix-compiler-warning.patch deleted file mode 100644 index 9561822..0000000 --- a/SOURCES/bz1484264-4-totemcrypto-Fix-compiler-warning.patch +++ /dev/null @@ -1,55 +0,0 @@ -From fdeed33f514e0056e322a45d9a0a04ca4b9a2709 Mon Sep 17 00:00:00 2001 -From: Jan Friesse -Date: Tue, 1 Aug 2017 14:19:41 +0200 -Subject: [PATCH] totemcrypto: Fix compiler warning - -Signed-off-by: Jan Friesse ---- - exec/totemcrypto.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -diff --git a/exec/totemcrypto.c b/exec/totemcrypto.c -index 79c4312..64246c9 100644 ---- a/exec/totemcrypto.c -+++ b/exec/totemcrypto.c -@@ -248,6 +248,7 @@ static PK11SymKey *import_symmetric_key(struct crypto_instance *instance, enum s - SECItem wrapped_key; - int wrapped_key_len; - unsigned char wrapped_key_data[MAX_WRAPPED_KEY_LEN]; -+ int case_processed; - - memset(&key_item, 0, sizeof(key_item)); - slot = NULL; -@@ -258,17 +259,29 @@ static PK11SymKey *import_symmetric_key(struct crypto_instance *instance, enum s - key_item.type = siBuffer; - key_item.data = instance->private_key; - -+ case_processed = 0; - switch (key_type) { - case SYM_KEY_TYPE_CRYPT: - key_item.len = cipher_key_len[instance->crypto_cipher_type]; - cipher = cipher_to_nss[instance->crypto_cipher_type]; - operation = CKA_ENCRYPT|CKA_DECRYPT; -+ case_processed = 1; - break; - case SYM_KEY_TYPE_HASH: - key_item.len = instance->private_key_len; - cipher = hash_to_nss[instance->crypto_hash_type]; - operation = CKA_SIGN; -+ case_processed = 1; - break; -+ /* -+ * Default is not defined intentionally. Compiler shows warning when -+ * new key_type is added -+ */ -+ } -+ -+ if (!case_processed) { -+ log_printf(instance->log_level_error, "Unknown key_type"); -+ goto exit_res_key; - } - - slot = PK11_GetBestSlot(cipher, NULL); --- -1.7.1 - diff --git a/SOURCES/bz1536219-1-logging-Make-blackbox-configurable.patch b/SOURCES/bz1536219-1-logging-Make-blackbox-configurable.patch new file mode 100644 index 0000000..983f9f3 --- /dev/null +++ b/SOURCES/bz1536219-1-logging-Make-blackbox-configurable.patch @@ -0,0 +1,217 @@ +From 8af39f66e56e319b6b93804c0400e6e29737a90f Mon Sep 17 00:00:00 2001 +From: Jan Friesse +Date: Mon, 22 Jan 2018 10:42:25 +0100 +Subject: [PATCH] logging: Make blackbox configurable + +Signed-off-by: Jan Friesse +Reviewed-by: Christine Caulfield +(cherry picked from commit 79dba9c51f60c603673f97afd07fa506fd9ae9a7) +--- + exec/logconfig.c | 40 +++++++++++++++++++++++++++++++++++++++- + exec/logsys.c | 44 ++++++++++++++++++++++++++++++++++---------- + exec/main.c | 1 + + include/corosync/logsys.h | 2 ++ + man/corosync.conf.5 | 6 ++++++ + 5 files changed, 82 insertions(+), 11 deletions(-) + +diff --git a/exec/logconfig.c b/exec/logconfig.c +index 6d0bed6..ccbffae 100644 +--- a/exec/logconfig.c ++++ b/exec/logconfig.c +@@ -127,7 +127,7 @@ static int insert_into_buffer( + } + + /* +- * format set is the only global specific option that ++ * format set is global specific option that + * doesn't apply at system/subsystem level. + */ + static int corosync_main_config_format_set ( +@@ -228,6 +228,40 @@ parse_error: + return (-1); + } + ++/* ++ * blackbox is another global specific option that ++ * doesn't apply at system/subsystem level. ++ */ ++static int corosync_main_config_blackbox_set ( ++ const char **error_string) ++{ ++ const char *error_reason; ++ char *value = NULL; ++ ++ if (map_get_string("logging.blackbox", &value) == CS_OK) { ++ if (strcmp (value, "on") == 0) { ++ (void)logsys_blackbox_set(QB_TRUE); ++ } else if (strcmp (value, "off") == 0) { ++ (void)logsys_blackbox_set(QB_FALSE); ++ } else { ++ error_reason = "unknown value for blackbox"; ++ free(value); ++ goto parse_error; ++ } ++ ++ free(value); ++ } else { ++ (void)logsys_blackbox_set(QB_TRUE); ++ } ++ ++ return (0); ++ ++parse_error: ++ *error_string = error_reason; ++ ++ return (-1); ++} ++ + static int corosync_main_config_log_destination_set ( + const char *path, + const char *key, +@@ -522,6 +556,10 @@ static int corosync_main_config_read_logging ( + goto parse_error; + } + ++ if (corosync_main_config_blackbox_set(&error_reason) < 0) { ++ goto parse_error; ++ } ++ + if (corosync_main_config_set ("logging", NULL, &error_reason) < 0) { + goto parse_error; + } +diff --git a/exec/logsys.c b/exec/logsys.c +index 6b4995d..a38cc5e 100644 +--- a/exec/logsys.c ++++ b/exec/logsys.c +@@ -119,6 +119,8 @@ static char *format_buffer=NULL; + + static int logsys_thread_started = 0; + ++static int logsys_blackbox_enabled = 1; ++ + static int _logsys_config_subsys_get_unlocked (const char *subsys) + { + unsigned int i; +@@ -309,7 +311,6 @@ int _logsys_system_setup( + int i; + int32_t fidx; + char tempsubsys[LOGSYS_MAX_SUBSYS_NAMELEN]; +- int blackbox_enable_res; + + if ((mainsystem == NULL) || + (strlen(mainsystem) >= LOGSYS_MAX_SUBSYS_NAMELEN)) { +@@ -371,7 +372,12 @@ int _logsys_system_setup( + QB_LOG_FILTER_FILE, "*", LOG_TRACE); + qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_SIZE, IPC_LOGSYS_SIZE); + qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_THREADED, QB_FALSE); +- blackbox_enable_res = qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_ENABLED, QB_TRUE); ++ ++ /* ++ * Blackbox is disabled at the init and enabled later based ++ * on config (logging.blackbox) value. ++ */ ++ qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_ENABLED, QB_FALSE); + + if (logsys_format_set(NULL) == -1) { + return -1; +@@ -397,14 +403,6 @@ int _logsys_system_setup( + } + } + +- if (blackbox_enable_res < 0) { +- LOGSYS_PERROR (-blackbox_enable_res, LOGSYS_LEVEL_WARNING, +- "Unable to initialize log flight recorder. "\ +- "The most common cause of this error is " \ +- "not enough space on /dev/shm. Corosync will continue work, " \ +- "but blackbox will not be available"); +- } +- + pthread_mutex_unlock (&logsys_config_mutex); + + return (0); +@@ -767,10 +765,26 @@ static void _logsys_config_apply_per_subsys(int32_t s) + logsys_loggers[s].dirty = QB_FALSE; + } + ++static void _logsys_config_apply_blackbox(void) { ++ int blackbox_enable_res; ++ ++ blackbox_enable_res = qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_ENABLED, logsys_blackbox_enabled); ++ ++ if (blackbox_enable_res < 0) { ++ LOGSYS_PERROR (-blackbox_enable_res, LOGSYS_LEVEL_WARNING, ++ "Unable to initialize log flight recorder. "\ ++ "The most common cause of this error is " \ ++ "not enough space on /dev/shm. Corosync will continue work, " \ ++ "but blackbox will not be available"); ++ } ++} ++ + void logsys_config_apply(void) + { + int32_t s; + ++ _logsys_config_apply_blackbox(); ++ + for (s = 0; s <= LOGSYS_MAX_SUBSYS_COUNT; s++) { + if (strcmp(logsys_loggers[s].subsys, "") == 0) { + continue; +@@ -838,3 +852,13 @@ int logsys_thread_start (void) + + return (0); + } ++ ++void logsys_blackbox_set(int enable) ++{ ++ ++ pthread_mutex_lock (&logsys_config_mutex); ++ ++ logsys_blackbox_enabled = enable; ++ ++ pthread_mutex_unlock (&logsys_config_mutex); ++} +diff --git a/exec/main.c b/exec/main.c +index 7fe24e2..cd587dc 100644 +--- a/exec/main.c ++++ b/exec/main.c +@@ -220,6 +220,7 @@ static void corosync_blackbox_write_to_file (void) + + if ((res = qb_log_blackbox_write_to_file(fname)) < 0) { + LOGSYS_PERROR(-res, LOGSYS_LEVEL_ERROR, "Can't store blackbox file"); ++ return ; + } + snprintf(fdata_fname, sizeof(fdata_fname), "%s/fdata", get_run_dir()); + unlink(fdata_fname); +diff --git a/include/corosync/logsys.h b/include/corosync/logsys.h +index 0b2fbff..ec38d2c 100644 +--- a/include/corosync/logsys.h ++++ b/include/corosync/logsys.h +@@ -256,6 +256,8 @@ extern int _logsys_subsys_create (const char *subsys, const char *filename); + */ + extern int logsys_thread_start (void); + ++extern void logsys_blackbox_set(int enable); ++ + /** + * @brief logsys_subsys_id + */ +diff --git a/man/corosync.conf.5 b/man/corosync.conf.5 +index 0639028..68103d0 100644 +--- a/man/corosync.conf.5 ++++ b/man/corosync.conf.5 +@@ -539,6 +539,12 @@ This specifies that the code function name should be printed. + + The default is off. + ++.TP ++blackbox ++This specifies that blackbox functionality should be enabled. ++ ++The defualt is on. ++ + .PP + The following options are valid both for top level logging directive + and they can be overridden in logger_subsys entries. +-- +1.7.1 + diff --git a/SOURCES/bz1536219-2-logging-Close-before-and-open-blackbox-after-fork.patch b/SOURCES/bz1536219-2-logging-Close-before-and-open-blackbox-after-fork.patch new file mode 100644 index 0000000..9c50816 --- /dev/null +++ b/SOURCES/bz1536219-2-logging-Close-before-and-open-blackbox-after-fork.patch @@ -0,0 +1,75 @@ +From 995ed0bd814ff3eacf6c09534841e6ce39ab6614 Mon Sep 17 00:00:00 2001 +From: Jan Friesse +Date: Mon, 22 Jan 2018 11:17:52 +0100 +Subject: [PATCH] logging: Close before and open blackbox after fork + +Signed-off-by: Jan Friesse +Reviewed-by: Christine Caulfield +(cherry picked from commit 11fa527ed4960488d275867c28b1bff773e9cf7f) +--- + exec/logsys.c | 16 ++++++++++++++++ + exec/main.c | 6 ++++++ + include/corosync/logsys.h | 5 +++++ + 3 files changed, 27 insertions(+), 0 deletions(-) + +diff --git a/exec/logsys.c b/exec/logsys.c +index a38cc5e..8c9c222 100644 +--- a/exec/logsys.c ++++ b/exec/logsys.c +@@ -862,3 +862,19 @@ void logsys_blackbox_set(int enable) + + pthread_mutex_unlock (&logsys_config_mutex); + } ++ ++/* ++ * To set correct pid to qb blackbox filename after tty dettach (fork) we have to ++ * close (this function) and (if needed) reopen blackbox (logsys_blackbox_postfork function). ++ */ ++void logsys_blackbox_prefork(void) ++{ ++ ++ (void)qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_ENABLED, QB_FALSE); ++} ++ ++void logsys_blackbox_postfork(void) ++{ ++ ++ _logsys_config_apply_blackbox(); ++} +diff --git a/exec/main.c b/exec/main.c +index cd587dc..426e56d 100644 +--- a/exec/main.c ++++ b/exec/main.c +@@ -1460,7 +1460,13 @@ int main (int argc, char **argv, char **envp) + * Now we are fully initialized. + */ + if (background) { ++ logsys_blackbox_prefork(); ++ + corosync_tty_detach (); ++ ++ logsys_blackbox_postfork(); ++ ++ log_printf (LOGSYS_LEVEL_DEBUG, "Corosync TTY detached"); + } + + /* +diff --git a/include/corosync/logsys.h b/include/corosync/logsys.h +index ec38d2c..a4aad69 100644 +--- a/include/corosync/logsys.h ++++ b/include/corosync/logsys.h +@@ -258,6 +258,11 @@ extern int logsys_thread_start (void); + + extern void logsys_blackbox_set(int enable); + ++extern void logsys_blackbox_prefork(void); ++ ++extern void logsys_blackbox_postfork(void); ++ ++ + /** + * @brief logsys_subsys_id + */ +-- +1.7.1 + diff --git a/SPECS/corosync.spec b/SPECS/corosync.spec index eef90da..c1add45 100644 --- a/SPECS/corosync.spec +++ b/SPECS/corosync.spec @@ -23,41 +23,15 @@ Name: corosync Summary: The Corosync Cluster Engine and Application Programming Interfaces -Version: 2.4.0 -Release: 9%{?gitver}%{?dist}.2 +Version: 2.4.3 +Release: 2%{?gitver}%{?dist} License: BSD Group: System Environment/Base URL: http://corosync.github.io/corosync/ Source0: http://build.clusterlabs.org/corosync/releases/%{name}-%{version}%{?gittarver}.tar.gz -Patch0: bz1363654-1-Config-Flag-config-uidgid-entries.patch -Patch1: bz1367813-1-Man-Fix-corosync-qdevice-net-certutil-link.patch -Patch2: bz1367813-2-man-mention-qdevice-incompatibilites-in-votequorum.5.patch -Patch3: bz1367813-3-Qnetd-LMS-Fix-two-partition-use-case.patch -Patch4: bz1371880-1-libvotequorum-Bump-version.patch -Patch5: bz1371880-2-votequorum-Don-t-update-expected_votes-display-if-va.patch -Patch6: bz1371880-3-votequorum-simplify-reconfigure-message-handling.patch -Patch7: bz1371880-4-build-Fix-build-on-RHEL7.3-latest.patch -Patch8: bz1434528-1-cfg-Prevents-use-of-uninitialized-buffer.patch -Patch9: bz1434529-1-man-Fix-typos-in-man-page.patch -Patch10: bz1434529-2-Fix-typo-Destorying-Destroying.patch -Patch11: bz1434529-3-init-Add-doc-URIs-to-the-systemd-service-files.patch -Patch12: bz1434529-4-man-Modify-man-page-according-to-command-usage.patch -Patch13: bz1434528-2-Totempg-remove-duplicate-memcpy-in-mcast_msg-func.patch -Patch14: bz1434529-5-upstart-Add-softdog-module-loading-example.patch -Patch15: bz1434529-6-Remove-deprecated-doxygen-flags.patch -Patch16: bz1434528-3-Remove-redundant-header-file-inclusion.patch -Patch17: bz1434529-7-Qdevice-fix-spell-errors-in-qdevice.patch -Patch18: bz1434529-8-doc-document-watchdog_device-parameter.patch -Patch19: bz1434534-1-Logsys-Change-logsys-syslog_priority-priority.patch -Patch20: bz1434534-2-logconfig-Do-not-overwrite-logger_subsys-priority.patch -Patch21: bz1445001-1-Main-Call-mlockall-after-fork.patch -Patch22: bz1477461-1-main-Add-option-to-set-priority.patch -Patch23: bz1477461-2-main-Add-support-for-libcgroup.patch -Patch24: bz1484264-1-totem-Propagate-totem-initialization-failure.patch -Patch25: bz1484264-2-totemcrypto-Refactor-symmetric-key-importing.patch -Patch26: bz1484264-3-totemcrypto-Use-different-method-to-import-key.patch -Patch27: bz1484264-4-totemcrypto-Fix-compiler-warning.patch +Patch0: bz1536219-1-logging-Make-blackbox-configurable.patch +Patch1: bz1536219-2-logging-Close-before-and-open-blackbox-after-fork.patch %if 0%{?rhel} ExclusiveArch: i686 x86_64 s390x ppc64le @@ -115,34 +89,8 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) %prep %setup -q -n %{name}-%{version}%{?gittarver} -%patch0 -p1 -b .bz1363654-1 -%patch1 -p1 -b .bz1367813-1 -%patch2 -p1 -b .bz1367813-2 -%patch3 -p1 -b .bz1367813-3 -%patch4 -p1 -b .bz1371880-1 -%patch5 -p1 -b .bz1371880-2 -%patch6 -p1 -b .bz1371880-3 -%patch7 -p1 -b .bz1371880-4 -%patch8 -p1 -b .bz1434528-1 -%patch9 -p1 -b .bz1434529-1 -%patch10 -p1 -b .bz1434529-2 -%patch11 -p1 -b .bz1434529-3 -%patch12 -p1 -b .bz1434529-4 -%patch13 -p1 -b .bz1434528-2 -%patch14 -p1 -b .bz1434529-5 -%patch15 -p1 -b .bz1434529-6 -%patch16 -p1 -b .bz1434528-3 -%patch17 -p1 -b .bz1434529-7 -%patch18 -p1 -b .bz1434529-8 -%patch19 -p1 -b .bz1434534-1 -%patch20 -p1 -b .bz1434534-2 -%patch21 -p1 -b .bz1445001-1 -%patch22 -p1 -b .bz1477461-1 -%patch23 -p1 -b .bz1477461-2 -%patch24 -p1 -b .bz1484264-1 -%patch25 -p1 -b .bz1484264-2 -%patch26 -p1 -b .bz1484264-3 -%patch27 -p1 -b .bz1484264-4 +%patch0 -p1 -b .bz1536219-1 +%patch1 -p1 -b .bz1536219-2 %build %if %{with runautogen} @@ -574,25 +522,38 @@ fi %endif %changelog -* Thu Aug 24 2017 Jan Friesse 2.4.0-9.2 -- Resolves: rhbz#1484264 - -- totem: Propagate totem initialization failure (rhbz#1484264) -- merge upstream commit 0413a8f4672352171f0df731b7d9c1fe20acbc4c (rhbz#1484264) -- totemcrypto: Refactor symmetric key importing (rhbz#1484264) -- merge upstream commit a885868181c07ba9ab5cdfdad1d66d387b2a4428 (rhbz#1484264) -- totemcrypto: Use different method to import key (rhbz#1484264) -- merge upstream commit 5dadebd21862074deaeb9a337fc9e49f5e9f692a (rhbz#1484264) -- totemcrypto: Fix compiler warning (rhbz#1484264) -- merge upstream commit fdeed33f514e0056e322a45d9a0a04ca4b9a2709 (rhbz#1484264) - -* Wed Aug 02 2017 Jan Friesse 2.4.0-9.1 -- Resolves: rhbz#1477461 - -- main: Add option to set priority (rhbz#1477461) -- merge upstream commit a008448efb2b1d45c432867caf08f0bcf2b4b9b0 (rhbz#1477461) -- main: Add support for libcgroup (rhbz#1477461) -- merge upstream commit c56086c701d08fc17cf6d8ef603caf505a4021b7 (rhbz#1477461) +* Mon Feb 05 2018 Jan Friesse 2.4.3-2 +- Resolves: rhbz#1536219 + +- logging: Make blackbox configurable (rhbz#1536219) +- merge upstream commit 8af39f66e56e319b6b93804c0400e6e29737a90f (rhbz#1536219) +- logging: Close before and open blackbox after fork (rhbz#1536219) +- merge upstream commit 995ed0bd814ff3eacf6c09534841e6ce39ab6614 (rhbz#1536219) + +* Fri Oct 20 2017 Jan Friesse 2.4.3-1 +- Resolves: rhbz#1413573 +- Resolves: rhbz#1503008 + +* Tue Oct 17 2017 Jan Friesse 2.4.0-10 +- Resolves: rhbz#1439205 +- Resolves: rhbz#1461450 +- Resolves: rhbz#1469170 +- Resolves: rhbz#1476214 + +- main: Don't ask libqb to handle segv, it doesn't work (rhbz#1439205) +- merge upstream commit c0da36a6c0ecf7bc7def252a06336a7088e68086 (rhbz#1439205) +- totem: Propagate totem initialization failure (rhbz#1461450) +- merge upstream commit 0413a8f4672352171f0df731b7d9c1fe20acbc4c (rhbz#1461450) +- totemcrypto: Refactor symmetric key importing (rhbz#1461450) +- merge upstream commit a885868181c07ba9ab5cdfdad1d66d387b2a4428 (rhbz#1461450) +- totemcrypto: Use different method to import key (rhbz#1461450) +- merge upstream commit 5dadebd21862074deaeb9a337fc9e49f5e9f692a (rhbz#1461450) +- main: Add option to set priority (rhbz#1469170) +- merge upstream commit a008448efb2b1d45c432867caf08f0bcf2b4b9b0 (rhbz#1469170) +- main: Add support for libcgroup (rhbz#1476214) +- merge upstream commit c56086c701d08fc17cf6d8ef603caf505a4021b7 (rhbz#1476214) +- totemcrypto: Fix compiler warning (rhbz#1461450) +- merge upstream commit fdeed33f514e0056e322a45d9a0a04ca4b9a2709 (rhbz#1461450) * Wed Apr 26 2017 Jan Friesse 2.4.0-9 - Resolves: rhbz#1445001