Sfoglia il codice sorgente

votequorum: start moving from static to fully dynamic config

Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
Fabio M. Di Nitto 14 anni fa
parent
commit
3a717fc8e9
1 ha cambiato i file con 10 aggiunte e 9 eliminazioni
  1. 10 9
      exec/votequorum.c

+ 10 - 9
exec/votequorum.c

@@ -933,6 +933,10 @@ static char *votequorum_readconfig_static(void)
 		return ((char *)"configuration error: quorum device is not compatible with wait_for_all feature");
 		return ((char *)"configuration error: quorum device is not compatible with wait_for_all feature");
 	}
 	}
 
 
+	if (wait_for_all) {
+		update_wait_for_all_status(1);
+	}
+
 	LEAVE();
 	LEAVE();
 
 
 	return (NULL);
 	return (NULL);
@@ -1692,6 +1696,8 @@ static int votequorum_exec_exit_fn (void)
 
 
 static char *votequorum_exec_init_fn (struct corosync_api_v1 *api)
 static char *votequorum_exec_init_fn (struct corosync_api_v1 *api)
 {
 {
+	char *error = NULL;
+
 #ifdef COROSYNC_SOLARIS
 #ifdef COROSYNC_SOLARIS
 	logsys_subsys_init();
 	logsys_subsys_init();
 #endif
 #endif
@@ -1716,10 +1722,6 @@ static char *votequorum_exec_init_fn (struct corosync_api_v1 *api)
 	us->votes = 1;
 	us->votes = 1;
 	us->flags |= NODE_FLAGS_FIRST;
 	us->flags |= NODE_FLAGS_FIRST;
 
 
-	if (wait_for_all) {
-		update_wait_for_all_status(1);
-	}
-
 	qdevice = allocate_node(NODEID_QDEVICE);
 	qdevice = allocate_node(NODEID_QDEVICE);
 	if (!qdevice) {
 	if (!qdevice) {
 		LEAVE();
 		LEAVE();
@@ -1729,6 +1731,10 @@ static char *votequorum_exec_init_fn (struct corosync_api_v1 *api)
 	qdevice->votes = 0;
 	qdevice->votes = 0;
 	memset(qdevice_name, 0, VOTEQUORUM_MAX_QDEVICE_NAME_LEN);
 	memset(qdevice_name, 0, VOTEQUORUM_MAX_QDEVICE_NAME_LEN);
 
 
+	error = votequorum_readconfig_static();
+	if (error) {
+		return error;
+	}
 	votequorum_readconfig_dynamic();
 	votequorum_readconfig_dynamic();
 	recalculate_quorum(0, 0);
 	recalculate_quorum(0, 0);
 
 
@@ -1842,11 +1848,6 @@ char *votequorum_init(struct corosync_api_v1 *api,
 	corosync_api = api;
 	corosync_api = api;
 	quorum_callback = q_set_quorate_fn;
 	quorum_callback = q_set_quorate_fn;
 
 
-	error = votequorum_readconfig_static();
-	if (error) {
-		return (error);
-	}
-
 	error = corosync_service_link_and_init(corosync_api,
 	error = corosync_service_link_and_init(corosync_api,
 		&votequorum_service[0]);
 		&votequorum_service[0]);
 	if (error) {
 	if (error) {