Переглянути джерело

Introduce SERVICES_COUNT_MAX macro

Sync/service was using maximal number of services in ehter numberic form
(magic constant) or inconsistently, this means using
SERVICE_HANDLER_MAXIMUM_COUNT which means maximal number of handlers.

New macro solves this.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Steven Dake <sdake@redhat.com>
(cherry picked from commit 9fb79793707a52907393bd8a4752446516bf4363)
Jan Friesse 13 роки тому
батько
коміт
41d44d929e
6 змінених файлів з 19 додано та 17 видалено
  1. 3 4
      exec/ipc_glue.c
  2. 1 1
      exec/main.c
  3. 7 7
      exec/service.c
  4. 2 2
      exec/service.h
  5. 4 3
      exec/sync.c
  6. 2 0
      include/corosync/coroapi.h

+ 3 - 4
exec/ipc_glue.c

@@ -83,7 +83,7 @@ struct outq_item {
 	struct list_head list;
 };
 
-static struct cs_ipcs_mapper ipcs_mapper[SERVICE_HANDLER_MAXIMUM_COUNT];
+static struct cs_ipcs_mapper ipcs_mapper[SERVICES_COUNT_MAX];
 
 static int32_t cs_ipcs_job_add(enum qb_loop_priority p,	void *data, qb_loop_job_dispatch_fn fn);
 static int32_t cs_ipcs_dispatch_add(enum qb_loop_priority p, int32_t fd, int32_t events,
@@ -692,7 +692,7 @@ static void cs_ipcs_check_for_flow_control(void)
 	int32_t i;
 	int32_t fc_enabled;
 
-	for (i = 0; i < SERVICE_HANDLER_MAXIMUM_COUNT; i++) {
+	for (i = 0; i < SERVICES_COUNT_MAX; i++) {
 		if (corosync_service[i] == NULL || ipcs_mapper[i].inst == NULL) {
 			continue;
 		}
@@ -752,7 +752,7 @@ void cs_ipcs_stats_update(void)
 	struct cs_ipcs_conn_context *cnx;
 	char key_name[ICMAP_KEYNAME_MAXLEN];
 
-	for (i = 0; i < SERVICE_HANDLER_MAXIMUM_COUNT; i++) {
+	for (i = 0; i < SERVICES_COUNT_MAX; i++) {
 		if (corosync_service[i] == NULL || ipcs_mapper[i].inst == NULL) {
 			continue;
 		}
@@ -798,7 +798,6 @@ void cs_ipcs_stats_update(void)
 
 			snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "%s.overload", cnx->icmap_path);
 			icmap_set_uint64(key_name, cnx->overload);
-
 			qb_ipcs_connection_unref(c);
 		}
 	}

+ 1 - 1
exec/main.c

@@ -181,7 +181,7 @@ void corosync_state_dump (void)
 {
 	int i;
 
-	for (i = 0; i < SERVICE_HANDLER_MAXIMUM_COUNT; i++) {
+	for (i = 0; i < SERVICES_COUNT_MAX; i++) {
 		if (corosync_service[i] && corosync_service[i]->exec_dump_fn) {
 			corosync_service[i]->exec_dump_fn ();
 		}

+ 7 - 7
exec/service.c

@@ -108,12 +108,12 @@ struct seus_handler_data {
 	struct corosync_api_v1 *api;
 };
 
-struct corosync_service_engine *corosync_service[SERVICE_HANDLER_MAXIMUM_COUNT];
+struct corosync_service_engine *corosync_service[SERVICES_COUNT_MAX];
 
-const char *service_stats_rx[SERVICE_HANDLER_MAXIMUM_COUNT][64];
-const char *service_stats_tx[SERVICE_HANDLER_MAXIMUM_COUNT][64];
+const char *service_stats_rx[SERVICES_COUNT_MAX][SERVICE_HANDLER_MAXIMUM_COUNT];
+const char *service_stats_tx[SERVICES_COUNT_MAX][SERVICE_HANDLER_MAXIMUM_COUNT];
 
-int corosync_service_exiting[SERVICE_HANDLER_MAXIMUM_COUNT];
+int corosync_service_exiting[SERVICES_COUNT_MAX];
 
 static void (*service_unlink_all_complete) (void) = NULL;
 
@@ -183,7 +183,7 @@ char *corosync_service_link_and_init (
 static int service_priority_max(void)
 {
 	int lpc = 0, max = 0;
-	for(; lpc < SERVICE_HANDLER_MAXIMUM_COUNT; lpc++) {
+	for(; lpc < SERVICES_COUNT_MAX; lpc++) {
 		if(corosync_service[lpc] != NULL && corosync_service[lpc]->priority > max) {
 			max = corosync_service[lpc]->priority;
 		}
@@ -206,7 +206,7 @@ corosync_service_unlink_priority (
 
 	for(; *current_priority >= lowest_priority; *current_priority = *current_priority - 1) {
 		for(*current_service_engine = 0;
-			*current_service_engine < SERVICE_HANDLER_MAXIMUM_COUNT;
+			*current_service_engine < SERVICES_COUNT_MAX;
 			*current_service_engine = *current_service_engine + 1) {
 
 			if(corosync_service[*current_service_engine] == NULL ||
@@ -294,7 +294,7 @@ static unsigned int service_unlink_and_exit (
 	}
 	icmap_iter_finalize(iter);
 
-	if (service_found && service_id < SERVICE_HANDLER_MAXIMUM_COUNT
+	if (service_found && service_id < SERVICES_COUNT_MAX
 		&& corosync_service[service_id] != NULL) {
 
 		if (corosync_service[service_id]->exec_exit_fn) {

+ 2 - 2
exec/service.h

@@ -77,8 +77,8 @@ extern struct corosync_service_engine *corosync_service[];
 
 extern int corosync_service_exiting[];
 
-extern const char *service_stats_rx[SERVICE_HANDLER_MAXIMUM_COUNT][64];
-extern const char *service_stats_tx[SERVICE_HANDLER_MAXIMUM_COUNT][64];
+extern const char *service_stats_rx[SERVICES_COUNT_MAX][SERVICE_HANDLER_MAXIMUM_COUNT];
+extern const char *service_stats_tx[SERVICES_COUNT_MAX][SERVICE_HANDLER_MAXIMUM_COUNT];
 
 struct corosync_service_engine *votequorum_get_service_engine_ver0 (void);
 struct corosync_service_engine *vsf_quorum_get_service_engine_ver0 (void);

+ 4 - 3
exec/sync.c

@@ -58,6 +58,7 @@
 #include "schedwrk.h"
 #include "quorum.h"
 #include "sync.h"
+#include "main.h"
 
 LOGSYS_DECLARE_SUBSYS ("SYNC");
 
@@ -142,13 +143,13 @@ static size_t my_trans_list_entries = 0;
 
 static int my_processor_list_entries = 0;
 
-static struct service_entry my_service_list[128];
+static struct service_entry my_service_list[SERVICES_COUNT_MAX];
 
 static int my_service_list_entries = 0;
 
 static const struct memb_ring_id sync_ring_id;
 
-static struct service_entry my_initial_service_list[PROCESSOR_COUNT_MAX];
+static struct service_entry my_initial_service_list[SERVICES_COUNT_MAX];
 
 static int my_initial_service_list_entries;
 
@@ -201,7 +202,7 @@ int sync_init (
 	}
 
 	sync_synchronization_completed = synchronization_completed;
-	for (i = 0; i < 64; i++) {
+	for (i = 0; i < SERVICES_COUNT_MAX; i++) {
 		res = sync_callbacks_retrieve (i, &sync_callbacks);
 		if (res == -1) {
 			continue;

+ 2 - 0
include/corosync/coroapi.h

@@ -410,6 +410,8 @@ struct corosync_api_v1 {
 
 #define SERVICE_HANDLER_MAXIMUM_COUNT 64
 
+#define SERVICES_COUNT_MAX 64
+
 struct corosync_lib_handler {
 	void (*lib_handler_fn) (void *conn, const void *msg);
 	enum cs_lib_flow_control flow_control;