From mboxrd@z Thu Jan 1 00:00:00 1970 From: pcaulfield@sourceware.org Date: 15 Aug 2006 10:27:14 -0000 Subject: [Cluster-devel] cluster/cman/daemon cmanccs.c cmanccs.h commands.c Message-ID: <20060815102714.6629.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Changes by: pcaulfield at sourceware.org 2006-08-15 10:27:13 Modified files: cman/daemon : cmanccs.c cmanccs.h commands.c Log message: At startup, check that ALL nodes in CCS have nodeids assigned. If not, then refuse to start. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/cmanccs.c.diff?cvsroot=cluster&r1=1.19&r2=1.20 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/cmanccs.h.diff?cvsroot=cluster&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/commands.c.diff?cvsroot=cluster&r1=1.46&r2=1.47 --- cluster/cman/daemon/cmanccs.c 2006/08/11 12:34:18 1.19 +++ cluster/cman/daemon/cmanccs.c 2006/08/15 10:27:13 1.20 @@ -86,7 +86,7 @@ * add them to our node list. * Called when we start up and on "cman_tool version". */ -int read_ccs_nodes(unsigned int *config_version) +int read_ccs_nodes(unsigned int *config_version, int check_nodeids) { int ctree; char *nodename; @@ -144,6 +144,16 @@ if (!ccs_get(ctree, key, &str)) { nodeid = atoi(str); free(str); + + } + + if (check_nodeids && nodeid == 0) { + char message[132]; + + sprintf(message, "No node ID for %s, run 'ccs_tool addnodeids' to fix", nodename); + log_msg(LOG_ERR, message); + write_cman_pipe(message); + return -1; } P_MEMB("Got node %s from ccs (id=%d, votes=%d)\n", nodename, nodeid, votes); --- cluster/cman/daemon/cmanccs.h 2006/05/15 12:47:01 1.3 +++ cluster/cman/daemon/cmanccs.h 2006/08/15 10:27:13 1.4 @@ -10,5 +10,5 @@ ******************************************************************************* ******************************************************************************/ -int read_ccs_nodes(unsigned int *config_version); +int read_ccs_nodes(unsigned int *config_version, int check_nodeid); int read_ccs_config(void); --- cluster/cman/daemon/commands.c 2006/08/02 11:54:36 1.46 +++ cluster/cman/daemon/commands.c 2006/08/15 10:27:13 1.47 @@ -374,7 +374,7 @@ quit_threads = 0; ais_running = 1; - if (read_ccs_nodes(&config_version)) { + if (read_ccs_nodes(&config_version, 1)) { log_msg(LOG_ERR, "Can't initialise list of nodes from CCS\n"); return -EINVAL; } @@ -973,7 +973,7 @@ int ccs_err; log_msg(LOG_DEBUG, "Polling ccsd for updated information\n"); - ccs_err = read_ccs_nodes(&config_version); + ccs_err = read_ccs_nodes(&config_version, 0); if (ccs_err || config_version < wanted_config_version) { log_msg(LOG_ERR, "Can't read CCS to get updated config version %d. Activity suspended on this node\n", wanted_config_version); @@ -1401,7 +1401,7 @@ if (msg->config_version > config_version) { int ccs_err; - ccs_err = read_ccs_nodes(&config_version); + ccs_err = read_ccs_nodes(&config_version, 0); if (ccs_err || config_version < msg->config_version) { config_error = 1; log_msg(LOG_ERR, "Can't read CCS to get updated config version %d. Activity suspended on this node\n", @@ -1555,7 +1555,7 @@ break; case RECONFIG_PARAM_CONFIG_VERSION: - if (read_ccs_nodes(&config_version)) { + if (read_ccs_nodes(&config_version, 0)) { log_msg(LOG_ERR, "Can't read CCS to get updated config version %d. Activity suspended on this node\n", msg->value);