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 <jfriesse@redhat.com>
-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 <jfriesse@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <jfriesse@redhat.com>
-Date: Tue, 9 Aug 2016 17:03:17 +0200
-Subject: [PATCH] Man: Fix corosync-qdevice-net-certutil link
-
-Signed-off-by: Jan Friesse <jfriesse@redhat.com>
----
- 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 <ccaulfie@redhat.com>
-Date: Fri, 12 Aug 2016 14:25:39 +0100
-Subject: [PATCH] man: mention qdevice incompatibilites in votequorum.5
-
-Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <jfriesse@redhat.com>
-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 <ccaulfie@redhat.com> for fixing the English
-in the comments somewhat.
-
-Signed-off-by: Jan Friesse <jfriesse@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <jfriesse@redhat.com>
-Date: Mon, 7 Nov 2016 17:39:12 +0100
-Subject: [PATCH] libvotequorum: Bump version
-
-Signed-off-by: Jan Friesse <jfriesse@redhat.com>
----
- 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 <ccaulfie@redhat.com>
-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 <ccaulfie@redhat.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <ccaulfie@redhat.com>
-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 <ccaulfie@redhat.com>
-(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 <fdinitto@redhat.com>
-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 <fdinitto@redhat.com>
-(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 <sys/types.h>
- #include <sys/socket.h>
- #include <errno.h>
-+#include <poll.h>
- 
- #include <corosync/corotypes.h>
- #include <qb/qbipcc.h>
--- 
-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 <jonesmz@jonesmz.com>
-Date: Mon, 10 Oct 2016 11:18:25 -0500
-Subject: [PATCH] cfg: Prevents use of uninitialized buffer
-
-Signed-off-by: Michael Jones <jonesmz@jonesmz.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <bliu@suse.com>
-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 <bliu@suse.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <miz.take4@gmail.com>
-Date: Mon, 5 Dec 2016 01:23:46 +0900
-Subject: [PATCH] Remove redundant header file inclusion
-
-Signed-off-by: Takeshi MIZUTA <miz.take4@gmail.com>
-Signed-off-by: Jan Friesse <jfriesse@redhat.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <arpa/inet.h>
- #include <netdb.h>
- #include <poll.h>
--#include <unistd.h>
- #include <fcntl.h>
- 
- #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 <arpa/inet.h>
- #include <netdb.h>
- #include <poll.h>
--#include <unistd.h>
- #include <fcntl.h>
- 
- #include <corosync/list.h>
-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 <fcntl.h>
- #include <stdlib.h>
- #include <errno.h>
--#include <unistd.h>
- #include <poll.h>
- #include <assert.h>
- 
-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 <errno.h>
- #include <time.h>
- #include <assert.h>
--#include <unistd.h>
--#include <netinet/in.h>
- #include <arpa/inet.h>
- #include <sys/mman.h>
- #include <qb/qbmap.h>
-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 <stdio.h>
- #include <errno.h>
- #include <time.h>
--#include <unistd.h>
--#include <netinet/in.h>
- #include <arpa/inet.h>
- 
- #include <corosync/corotypes.h>
-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 <stdio.h>
- #include <errno.h>
- #include <time.h>
--#include <unistd.h>
--#include <netinet/in.h>
- #include <arpa/inet.h>
- 
- #include <corosync/corotypes.h>
-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 <corosync/list.h>
- #include <corosync/mar_gen.h>
- #include <corosync/ipc_quorum.h>
--#include <corosync/mar_gen.h>
- #include <corosync/coroapi.h>
- #include <corosync/logsys.h>
- #include <corosync/icmap.h>
-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 <sys/endian.h>
- #elif defined(__OpenBSD__)
--#include <sys/types.h>
- #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 <signal.h>
- #include <unistd.h>
- #include <errno.h>
--#include <unistd.h>
- #include <time.h>
- #include <sys/time.h>
- #include <sys/types.h>
-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 <signal.h>
- #include <unistd.h>
- #include <errno.h>
--#include <unistd.h>
- #include <time.h>
- #include <sys/time.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/select.h>
- #include <sys/un.h>
--#include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- 
-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 <signal.h>
- #include <unistd.h>
- #include <errno.h>
--#include <unistd.h>
- #include <time.h>
- #include <sys/time.h>
- #include <sys/types.h>
-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 <qb/qbloop.h>
- #include <qb/qblog.h>
- 
--#include <qb/qbdefs.h>
--#include <qb/qbloop.h>
--
- #include <corosync/corotypes.h>
- #include <corosync/cfg.h>
- #include <corosync/quorum.h>
--- 
-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 <miz.take4@gmail.com>
-Date: Sat, 26 Nov 2016 01:12:03 +0900
-Subject: [PATCH] man: Fix typos in man page
-
-Signed-off-by: Takeshi MIZUTA <miz.take4@gmail.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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?= <wferi@debian.org>
-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 <wferi@debian.org>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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?= <wferi@niif.hu>
-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 <wferi@niif.hu>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <miz.take4@gmail.com>
-Date: Thu, 1 Dec 2016 02:45:16 +0900
-Subject: [PATCH] man: Modify man-page according to command usage
-
-Signed-off-by: Takeshi MIZUTA <miz.take4@gmail.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <filename>] [\-l]"
-+.B "corosync-keygen [\-k <filename>] [\-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 <a|n|i>] [\-V]"
-+.B "corosync-quorumtool [\-s] [\-m] [\-l] [\-p] [\-v votes] [\-n nodeid] [\-e expected] [\-H] [\-i] [\-o <a|n|i>] [\-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 <votes>
- 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 <interface ip>] -s] [-r] [-H] [service_name] [-k] [nodeid] [-a] [nodeid]\n\n");
-+	printf ("corosync-cfgtool [-i <interface ip>] [-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 <keyfile>] [-l]\n"
-+	"Usage: corosync-keygen [-k <keyfile>] [-l] [-h]\n"
- 	"     -k / --key-file=<filename> -  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 <votes>     change the number of votes for a node (*)\n");
--	printf("  -n <nodeid>    optional nodeid of node for -v (*)\n");
-+	printf("  -n <nodeid>    optional nodeid of node for -v\n");
- 	printf("  -e <expected>  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 <a|i>       order by [a] IP address (default), [i] nodeid,\n");
-+	printf("  -p             when used with -s or -l, generates machine parsable output\n");
-+	printf("  -o <a|n|i>     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 <yusk.iida@gmail.com>
-Date: Fri, 2 Dec 2016 16:35:50 +0900
-Subject: [PATCH] upstart: Add softdog module loading example
-
-Signed-off-by: yuusuke <yusk.iida@gmail.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <rik@mmogp.com>
-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 <rik@mmogp.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <bliu@suse.com>
-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 <bliu@suse.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <adrian.vondendriesch@credativ.de>
-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 <adrian.vondendriesch@credativ.de>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <jfriesse@redhat.com>
-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 <jfriesse@redhat.com>
-(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 <bliu@suse.com>
-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 <bliu@suse.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <anprice@redhat.com>
-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 <anprice@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
-Reviewed-by: Jan Friesse <jfriesse@redhat.com>
-(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 <jfriesse@redhat.com>
-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 <jfriesse@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <jfriesse@redhat.com>
-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 <jfriesse@redhat.com>
-Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <corosync/logsys.h>
- #include <corosync/icmap.h>
- 
-+#ifdef HAVE_LIBCGROUP
-+#include <libcgroup.h>
-+#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", &current_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", &current_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 <jfriesse@redhat.com>
-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 <jfriesse@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <jfriesse@redhat.com>
-Date: Tue, 20 Jun 2017 15:25:09 +0200
-Subject: [PATCH] totemcrypto: Refactor symmetric key importing
-
-Signed-off-by: Jan Friesse <jfriesse@redhat.com>
-Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <jfriesse@redhat.com>
-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 <jfriesse@redhat.com>
-Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
-Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
----
- 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 <jfriesse@redhat.com>
-Date: Tue, 1 Aug 2017 14:19:41 +0200
-Subject: [PATCH] totemcrypto: Fix compiler warning
-
-Signed-off-by: Jan Friesse <jfriesse@redhat.com>
----
- 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 <jfriesse@redhat.com>
+Date: Mon, 22 Jan 2018 10:42:25 +0100
+Subject: [PATCH] logging: Make blackbox configurable
+
+Signed-off-by: Jan Friesse <jfriesse@redhat.com>
+Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
+(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 <jfriesse@redhat.com>
+Date: Mon, 22 Jan 2018 11:17:52 +0100
+Subject: [PATCH] logging: Close before and open blackbox after fork
+
+Signed-off-by: Jan Friesse <jfriesse@redhat.com>
+Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
+(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 <jfriesse@redhat.com> 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 <jfriesse@redhat.com> 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 <jfriesse@redhat.com> 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 <jfriesse@redhat.com> 2.4.3-1
+- Resolves: rhbz#1413573
+- Resolves: rhbz#1503008
+
+* Tue Oct 17 2017 Jan Friesse <jfriesse@redhat.com> 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 <jfriesse@redhat.com> 2.4.0-9
 - Resolves: rhbz#1445001