From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Dake Date: Mon, 17 Sep 2007 13:05:16 -0700 Subject: [Cluster-devel] cluster/cman/daemon ais.c barrier.c cmanccs.c ... In-Reply-To: <20070917080338.17248.qmail@sourceware.org> References: <20070917080338.17248.qmail@sourceware.org> Message-ID: <1190059518.3862.14.camel@balance> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Patrick, I think the usage of this isnt quite right. You should be suing DECLARE_LOGSYS_SUBSYS in your plugin C files to declare the CMAN logging system. Also the use of the config API is a bit tricky since the executive also uses this same API. It is designed to be called by only one subsystem. Regards -steve On Mon, 2007-09-17 at 08:03 +0000, pcaulfield at sourceware.org wrote: > CVSROOT: /cvs/cluster > Module name: cluster > Changes by: pcaulfield at sourceware.org 2007-09-17 08:03:37 > > Modified files: > cman/daemon : ais.c barrier.c cmanccs.c commands.c daemon.c > logging.c logging.h > > Log message: > Use openais logsys functions. > > Patches: > http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/ais.c.diff?cvsroot=cluster&r1=1.49&r2=1.50 > http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/barrier.c.diff?cvsroot=cluster&r1=1.11&r2=1.12 > http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/cmanccs.c.diff?cvsroot=cluster&r1=1.29&r2=1.30 > http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/commands.c.diff?cvsroot=cluster&r1=1.70&r2=1.71 > http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/daemon.c.diff?cvsroot=cluster&r1=1.36&r2=1.37 > http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/logging.c.diff?cvsroot=cluster&r1=1.14&r2=1.15 > http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/logging.h.diff?cvsroot=cluster&r1=1.7&r2=1.8 > > --- cluster/cman/daemon/ais.c 2007/05/21 10:48:40 1.49 > +++ cluster/cman/daemon/ais.c 2007/09/17 08:03:36 1.50 > @@ -36,7 +36,7 @@ > #include > #include > #include > -#include > +#include > > #include "cnxman-socket.h" > #include "commands.h" > @@ -204,9 +204,7 @@ > > /* Initialise early logging */ > if (getenv("CMAN_DEBUGLOG")) > - { > debug_mask = atoi(getenv("CMAN_DEBUGLOG")); > - } > > if (getenv("CMAN_PIPE")) > startup_pipe = atoi(getenv("CMAN_PIPE")); > @@ -242,7 +240,7 @@ > { > unsigned int object_handle; > > - /* We can only work if our config inerface was run first */ > + /* We can only work if our config interface was run first */ > if (!config_run) > return 0; > > @@ -269,6 +267,8 @@ > close(startup_pipe); > startup_pipe = 0; > > + cman_flush_debuglog(); > + > /* Start totem */ > totempg_groups_initialize(&group_handle, cman_deliver_fn, cman_confchg_fn); > totempg_groups_join(group_handle, cman_group, 1); > --- cluster/cman/daemon/barrier.c 2007/06/26 09:09:13 1.11 > +++ cluster/cman/daemon/barrier.c 2007/09/17 08:03:36 1.12 > @@ -240,7 +240,7 @@ > /* See if it already exists */ > if ((barrier = find_barrier(name))) { > if (nodes != barrier->expected_nodes) { > - log_msg(LOG_ERR, "Barrier registration failed for '%s', expected nodes=%d, requested=%d\n", > + log_printf(LOG_ERR, "Barrier registration failed for '%s', expected nodes=%d, requested=%d\n", > name, barrier->expected_nodes, nodes); > return -EINVAL; > } > --- cluster/cman/daemon/cmanccs.c 2007/08/03 07:35:06 1.29 > +++ cluster/cman/daemon/cmanccs.c 2007/09/17 08:03:36 1.30 > @@ -102,7 +102,7 @@ > /* Open the config file */ > ctree = ccs_force_connect(NULL, 1); > if (ctree < 0) { > - log_msg(LOG_ERR, "Error connecting to CCS"); > + log_printf(LOG_ERR, "Error connecting to CCS"); > write_cman_pipe("Cannot connect to CCS"); > return -1; > } > @@ -156,7 +156,7 @@ > char message[132]; > > sprintf(message, "No node ID for %s, run 'ccs_tool addnodeids' to fix", nodename); > - log_msg(LOG_ERR, message); > + log_printf(LOG_ERR, message); > write_cman_pipe(message); > return -1; > } > @@ -190,7 +190,7 @@ > default a multicast address */ > ret = getaddrinfo(nodenames[0], NULL, &ahints, &ainfo); > if (ret) { > - log_msg(LOG_ERR, "Can't determine address family of nodename %s\n", nodenames[0]); > + log_printf(LOG_ERR, "Can't determine address family of nodename %s\n", nodenames[0]); > write_cman_pipe("Can't determine address family of nodename"); > return NULL; > } > @@ -402,12 +402,12 @@ > /* Connect to ccsd */ > if (getenv("CMAN_CLUSTER_NAME")) { > cname = getenv("CMAN_CLUSTER_NAME"); > - log_msg(LOG_INFO, "Using override cluster name %s\n", cname); > + log_printf(LOG_INFO, "Using override cluster name %s\n", cname); > } > > cd = ccs_force_connect(cname, 1); > if (cd < 0) { > - log_msg(LOG_ERR, "Error connecting to CCS"); > + log_printf(LOG_ERR, "Error connecting to CCS"); > write_cman_pipe("Can't connect to CCSD"); > return -ENOTCONN; > } > @@ -415,14 +415,14 @@ > /* Cluster name */ > error = ccs_get(cd, CLUSTER_NAME_PATH, &str); > if (error) { > - log_msg(LOG_ERR, "cannot find cluster name in config file"); > + log_printf(LOG_ERR, "cannot find cluster name in config file"); > write_cman_pipe("Can't find cluster name in CCS"); > return -ENOENT; > } > > if (cname) { > if (strcmp(cname, str)) { > - log_msg(LOG_ERR, "cluster names not equal %s %s", cname, str); > + log_printf(LOG_ERR, "cluster names not equal %s %s", cname, str); > write_cman_pipe("Cluster name in CCS does not match that passed to cman_tool"); > return -ENOENT; > } > @@ -445,7 +445,7 @@ > > if (getenv("CMAN_NODENAME")) { > strcpy(nodename, getenv("CMAN_NODENAME")); > - log_msg(LOG_INFO, "Using override node name %s\n", nodename); > + log_printf(LOG_INFO, "Using override node name %s\n", nodename); > > sprintf(path, NODE_NAME_PATH_BYNAME, nodename); > > @@ -454,7 +454,7 @@ > free(str); > } > else { > - log_msg(LOG_ERR, "Overridden node name %s is not in CCS", nodename); > + log_printf(LOG_ERR, "Overridden node name %s is not in CCS", nodename); > write_cman_pipe("Overridden node name is not in CCS"); > return -ENOENT; > } > @@ -463,7 +463,7 @@ > struct utsname utsname; > error = uname(&utsname); > if (error) { > - log_msg(LOG_ERR, "cannot get node name, uname failed"); > + log_printf(LOG_ERR, "cannot get node name, uname failed"); > write_cman_pipe("Can't determine local node name"); > return -ENOENT; > } > @@ -474,7 +474,7 @@ > /* Find our nodename in cluster.conf */ > error = verify_nodename(cd, nodename); > if (error) { > - log_msg(LOG_ERR, "local node name \"%s\" not found in cluster.conf", > + log_printf(LOG_ERR, "local node name \"%s\" not found in cluster.conf", > nodename); > write_cman_pipe("Can't find local node name in cluster.conf"); > return -ENOENT; > @@ -485,11 +485,11 @@ > if (getenv("CMAN_EXPECTEDVOTES")) { > expected_votes = atoi(getenv("CMAN_EXPECTEDVOTES")); > if (expected_votes < 1) { > - log_msg(LOG_ERR, "CMAN_EXPECTEDVOTES environment variable is invalid, ignoring"); > + log_printf(LOG_ERR, "CMAN_EXPECTEDVOTES environment variable is invalid, ignoring"); > expected_votes = 0; > } > else { > - log_msg(LOG_INFO, "Using override expected votes %d\n", expected_votes); > + log_printf(LOG_INFO, "Using override expected votes %d\n", expected_votes); > } > } > > @@ -515,7 +515,7 @@ > vote_sum++; > else { > if (atoi(str) < 0) { > - log_msg(LOG_ERR, "negative votes not allowed"); > + log_printf(LOG_ERR, "negative votes not allowed"); > write_cman_pipe("Found negative votes for this node in CCS"); > return -EINVAL; > } > @@ -537,7 +537,7 @@ > /* optional port */ > if (getenv("CMAN_IP_PORT")) { > port = atoi(getenv("CMAN_IP_PORT")); > - log_msg(LOG_INFO, "Using override IP port %d\n", port); > + log_printf(LOG_INFO, "Using override IP port %d\n", port); > } > > if (!port) { > @@ -565,7 +565,7 @@ > /* find our own number of votes */ > if (getenv("CMAN_VOTES")) { > votes = atoi(getenv("CMAN_VOTES")); > - log_msg(LOG_INFO, "Using override votes %d\n", votes); > + log_printf(LOG_INFO, "Using override votes %d\n", votes); > } > > if (!votes) { > @@ -576,7 +576,7 @@ > if (!error) { > int votestmp = atoi(str); > if (votestmp < 0 || votestmp > 255) { > - log_msg(LOG_ERR, "invalid votes value %d", votes); > + log_printf(LOG_ERR, "invalid votes value %d", votes); > write_cman_pipe("Found invalid votes for node in CCS"); > return -EINVAL; > } > @@ -592,7 +592,7 @@ > /* nodeid */ > if (getenv("CMAN_NODEID")) { > nodeid = atoi(getenv("CMAN_NODEID")); > - log_msg(LOG_INFO, "Using override nodeid %d\n", nodeid); > + log_printf(LOG_INFO, "Using override nodeid %d\n", nodeid); > } > > if (!nodeid) { > @@ -607,14 +607,14 @@ > } > > if (!nodeid) { > - log_msg(LOG_ERR, "No nodeid specified in cluster.conf"); > + log_printf(LOG_ERR, "No nodeid specified in cluster.conf"); > write_cman_pipe("CCS does not have a nodeid for this node, run 'ccs_tool addnodeids' to fix"); > return -EINVAL; > } > > if (getenv("CMAN_MCAST_ADDR")) { > mcast_name = getenv("CMAN_MCAST_ADDR"); > - log_msg(LOG_INFO, "Using override multicast address %s\n", mcast_name); > + log_printf(LOG_INFO, "Using override multicast address %s\n", mcast_name); > } > > /* Optional multicast name */ > @@ -627,7 +627,7 @@ > > if (!mcast_name) { > mcast_name = default_mcast(cluster_id); > - log_msg(LOG_INFO, "Using default multicast address of %s\n", mcast_name); > + log_printf(LOG_INFO, "Using default multicast address of %s\n", mcast_name); > } > > mcast[0] = mcast_name; > @@ -678,7 +678,7 @@ > free(str); > if (two_node) { > if (node_count != 2 || vote_sum != 2) { > - log_msg(LOG_ERR, "the two-node option requires exactly two " > + log_printf(LOG_ERR, "the two-node option requires exactly two " > "nodes with one vote each and expected " > "votes of 1 (node_count=%d vote_sum=%d)", > node_count, vote_sum); > @@ -687,7 +687,7 @@ > } > > if (votes != 1) { > - log_msg(LOG_ERR, "the two-node option requires exactly two " > + log_printf(LOG_ERR, "the two-node option requires exactly two " > "nodes with one vote each and expected " > "votes of 1 (votes=%d)", votes); > write_cman_pipe("two_node set but votes not set to 1"); > @@ -710,7 +710,7 @@ > > error = get_ccs_join_info(); > if (error) { > - log_msg(LOG_ERR, "Error reading CCS info, cannot start"); > + log_printf(LOG_ERR, "Error reading CCS info, cannot start"); > return error; > } > > --- cluster/cman/daemon/commands.c 2007/09/07 12:17:45 1.70 > +++ cluster/cman/daemon/commands.c 2007/09/17 08:03:36 1.71 > @@ -34,7 +34,7 @@ > #include > #include > #include > -#include > +#include > #include > #include > #include "list.h" > @@ -159,9 +159,9 @@ > } > > if (cluster_is_quorate && !quorate) > - log_msg(LOG_INFO, "quorum lost, blocking activity\n"); > + log_printf(LOG_INFO, "quorum lost, blocking activity\n"); > if (!cluster_is_quorate && quorate) > - log_msg(LOG_INFO, "quorum regained, resuming activity\n"); > + log_printf(LOG_INFO, "quorum regained, resuming activity\n"); > > /* If we are newly quorate, then kill any AISONLY nodes */ > if (!cluster_is_quorate && quorate) { > @@ -404,7 +404,7 @@ > ais_running = 1; > > if (read_ccs_nodes(&config_version, 1)) { > - log_msg(LOG_ERR, "Can't initialise list of nodes from CCS\n"); > + log_printf(LOG_ERR, "Can't initialise list of nodes from CCS\n"); > return -EINVAL; > } > > @@ -997,7 +997,7 @@ > /* Keep this list valid so it doesn't confuse other code */ > list_init(&quorum_device->addr_list); > > - log_msg(LOG_INFO, "quorum device registered\n"); > + log_printf(LOG_INFO, "quorum device registered\n"); > return 0; > } > > @@ -1014,7 +1014,7 @@ > > quorum_device = NULL; > > - log_msg(LOG_INFO, "quorum device unregistered\n"); > + log_printf(LOG_INFO, "quorum device unregistered\n"); > return 0; > } > > @@ -1022,17 +1022,17 @@ > { > int ccs_err; > > - log_msg(LOG_DEBUG, "Polling ccsd for updated information\n"); > + log_printf(LOG_DEBUG, "Polling ccsd for updated information\n"); > 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); > + log_printf(LOG_ERR, "Can't read CCS to get updated config version %d. Activity suspended on this node\n", > + wanted_config_version); > > openais_timer_add_duration((unsigned long long)ccsd_poll_interval*1000000, NULL, > ccsd_timer_fn, &ccsd_timer); > } > else { > - log_msg(LOG_ERR, "Now got CCS information version %d, continuing\n", config_version); > + log_printf(LOG_ERR, "Now got CCS information version %d, continuing\n", config_version); > config_error = 0; > recalculate_quorum(0, 0); > } > @@ -1048,7 +1048,7 @@ > gettimeofday(&now, NULL); > if (quorum_device->last_hello.tv_sec + quorumdev_poll/1000 < now.tv_sec) { > quorum_device->state = NODESTATE_DEAD; > - log_msg(LOG_INFO, "lost contact with quorum device\n"); > + log_printf(LOG_INFO, "lost contact with quorum device\n"); > recalculate_quorum(0, 0); > } > else { > @@ -1478,20 +1478,20 @@ > static int valid_transition_msg(int nodeid, struct cl_transmsg *msg) > { > if (strcmp(msg->clustername, cluster_name) != 0) { > - log_msg(LOG_ERR, "Node %d conflict, remote cluster name='%s', local='%s'\n", > + log_printf(LOG_ERR, "Node %d conflict, remote cluster name='%s', local='%s'\n", > nodeid, msg->clustername, cluster_name); > return -1; > } > > if (msg->cluster_id != cluster_id) { > - log_msg(LOG_ERR, "Node %d conflict, remote cluster id=%d, local=%d\n", > + log_printf(LOG_ERR, "Node %d conflict, remote cluster id=%d, local=%d\n", > nodeid, msg->cluster_id, cluster_id); > return -1; > } > > if (msg->major_version != CNXMAN_MAJOR_VERSION) { > > - log_msg(LOG_ERR, "Node %d conflict, remote version id=%d, local=%d\n", > + log_printf(LOG_ERR, "Node %d conflict, remote version id=%d, local=%d\n", > nodeid, msg->major_version, CNXMAN_MAJOR_VERSION); > return -1; > } > @@ -1503,7 +1503,7 @@ > 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", > + log_printf(LOG_ERR, "Can't read CCS to get updated config version %d. Activity suspended on this node\n", > msg->config_version); > > wanted_config_version = msg->config_version; > @@ -1518,7 +1518,7 @@ > > > if (msg->config_version != config_version) { > - log_msg(LOG_ERR, "Node %d conflict, remote config version id=%d, local=%d\n", > + log_printf(LOG_ERR, "Node %d conflict, remote config version id=%d, local=%d\n", > nodeid, msg->config_version, config_version); > return -1; > } > @@ -1660,7 +1660,7 @@ > > case RECONFIG_PARAM_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", > + log_printf(LOG_ERR, "Can't read CCS to get updated config version %d. Activity suspended on this node\n", > msg->value); > > config_error = 1; > @@ -1839,7 +1839,7 @@ > > case CLUSTER_MSG_PORTSTATUS: > if (nodeid != us->node_id) { > - P_MEMB("got PORTRESULT from %d, low bytes = %x %x\n", data[1], data[2]); > + P_MEMB("got PORTRESULT from %d, low bytes = %x %x\n", nodeid, data[1], data[2]); > if (node) > memcpy(node->port_bits, data+1, PORT_BITS_SIZE); > } > @@ -1854,7 +1854,7 @@ > killmsg = (struct cl_killmsg *)data; > P_MEMB("got KILL for node %d\n", killmsg->nodeid); > if (killmsg->nodeid == wanted_nodeid) { > - log_msg(LOG_INFO, "cman killed by node %d because %s\n", nodeid, > + log_printf(LOG_INFO, "cman killed by node %d because %s\n", nodeid, > killmsg_reason(killmsg->reason)); > exit(1); > } > @@ -1896,7 +1896,7 @@ > break; > > default: > - log_msg(LOG_WARNING, "Unknown protocol message %d received\n", msg->cmd); > + log_printf(LOG_WARNING, "Unknown protocol message %d received\n", msg->cmd); > break; > > } > @@ -1926,11 +1926,11 @@ > if (totemip_parse(&ipaddr, nodename, 0)) > { > if (!nodeid) { > - log_msg(LOG_ERR, "Error, can't find IP address and no nodeid for node %s - ignoring it\n", nodename); > + log_printf(LOG_ERR, "Error, can't find IP address and no nodeid for node %s - ignoring it\n", nodename); > return; > } > else { > - log_msg(LOG_WARNING, "Warning, can't resolve IP address for node %s\n", nodename); > + log_printf(LOG_WARNING, "Warning, can't resolve IP address for node %s\n", nodename); > memset(&ipaddr, 0, sizeof(ipaddr)); > } > } > @@ -1943,7 +1943,7 @@ > { > struct cluster_node *node; > > - P_MEMB("add_ais_node ID=%d, incarnation = %d\n",nodeid, incarnation); > + P_MEMB("add_ais_node ID=%d, incarnation = %lld\n",nodeid, incarnation); > > node = find_node_by_nodeid(nodeid); > if (!node && total_members == 1) { > @@ -1956,11 +1956,11 @@ > char tempname[256]; > node = malloc(sizeof(struct cluster_node)); > if (!node) { > - log_msg(LOG_ERR, "error allocating node struct for id %d, but CCS doesn't know about it anyway\n", > + log_printf(LOG_ERR, "error allocating node struct for id %d, but CCS doesn't know about it anyway\n", > nodeid); > return; > } > - log_msg(LOG_ERR, "Got node from AIS id %d with no CCS entry\n", nodeid); > + log_printf(LOG_ERR, "Got node from AIS id %d with no CCS entry\n", nodeid); > > memset(node, 0, sizeof(struct cluster_node)); > node_add_ordered(node); > --- cluster/cman/daemon/daemon.c 2007/08/22 08:58:37 1.36 > +++ cluster/cman/daemon/daemon.c 2007/09/17 08:03:36 1.37 > @@ -337,7 +337,7 @@ > unlink(name); > local_socket = socket(PF_UNIX, SOCK_STREAM, 0); > if (local_socket < 0) { > - log_msg(LOG_ERR, "Can't create local socket %s: %s\n", name, strerror(errno)); > + log_printf(LOG_ERR, "Can't create local socket %s: %s\n", name, strerror(errno)); > write_cman_pipe("Can't create local cman socket"); > return -1; > } > @@ -349,13 +349,13 @@ > memcpy(sockaddr.sun_path, name, name_len); > sockaddr.sun_family = AF_UNIX; > if (bind(local_socket, (struct sockaddr *) &sockaddr, sizeof(sockaddr))) { > - log_msg(LOG_ERR, "can't bind local socket to %s: %s\n", name, strerror(errno)); > + log_printf(LOG_ERR, "can't bind local socket to %s: %s\n", name, strerror(errno)); > write_cman_pipe("Can't bind to local cman socket"); > close(local_socket); > return -1; > } > if (listen(local_socket, 1) != 0) { > - log_msg(LOG_ERR, "listen on %s failed: %s\n", name, strerror(errno)); > + log_printf(LOG_ERR, "listen on %s failed: %s\n", name, strerror(errno)); > write_cman_pipe("listen failed on local cman socket"); > close(local_socket); > return -1; > @@ -366,7 +366,7 @@ > > con = malloc(sizeof(struct connection)); > if (!con) { > - log_msg(LOG_ERR, "Can't allocate space for local connection: %s\n", strerror(errno)); > + log_printf(LOG_ERR, "Can't allocate space for local connection: %s\n", strerror(errno)); > write_cman_pipe("malloc failed for connection info"); > close(local_socket); > return -1; > @@ -481,8 +481,8 @@ > ais_poll_handle = aisexec_poll_handle; > barrier_init(); > > - log_msg(LOG_INFO, "CMAN %s (built %s %s) started\n", > - RELEASE_VERSION, __DATE__, __TIME__); > + log_printf(LOG_INFO, "CMAN %s (built %s %s) started\n", > + RELEASE_VERSION, __DATE__, __TIME__); > > fd = open_local_sock(CLIENT_SOCKNAME, sizeof(CLIENT_SOCKNAME), 0660, ais_poll_handle, CON_CLIENT); > if (fd < 0) > --- cluster/cman/daemon/logging.c 2007/08/28 13:14:10 1.14 > +++ cluster/cman/daemon/logging.c 2007/09/17 08:03:36 1.15 > @@ -21,32 +21,17 @@ > #include > #include > > -/* openais header */ > -#include > - > +#include > #include "logging.h" > > -/* All logging comes through here so it can be stamped [CMAN] */ > - > -static int use_stderr = 0; > +/* Make this global so that all of cman can use the same subsys name */ > +unsigned int logsys_subsys_id; > int subsys_mask = 0; > > -void log_msg(int priority, char *fmt, ...) > -{ > - va_list va; > - char log_buf[1024]; > - > - va_start(va, fmt); > - vsprintf(log_buf, fmt, va); > - va_end(va); > - log_printf(priority, log_buf); > -} > - > void init_debug(int subsystems) > { > - log_init("CMAN"); > - > - use_stderr = (subsystems != 0); > + logsys_subsys_id = _logsys_subsys_create("CMAN", (subsystems?LOG_LEVEL_DEBUG:LOG_LEVEL_WARNING) ); > + logsys_config_mode_set(LOG_MODE_BUFFER_BEFORE_CONFIG | ((subsystems)?LOG_MODE_OUTPUT_STDERR:0)); > subsys_mask = subsystems; > } > > @@ -55,43 +40,8 @@ > subsys_mask = subsystems; > } > > -void log_debug(int subsys, int stamp, const char *fmt, ...) > + > +void cman_flush_debuglog() > { > - va_list va; > - char newfmt[strlen(fmt)+10]; > - char log_buf[1024]; > - > - if (!(subsys_mask & subsys)) > - return; > - > - if (stamp) > - { > - switch(subsys) > - { > - case CMAN_DEBUG_MEMB: > - strcpy(newfmt, "memb: "); > - break; > - case CMAN_DEBUG_DAEMON: > - strcpy(newfmt, "daemon: "); > - break; > - case CMAN_DEBUG_BARRIER: > - strcpy(newfmt, "barrier: "); > - break; > - case CMAN_DEBUG_AIS: > - strcpy(newfmt, "ais: "); > - break; > - default: > - break; > - } > - } > - else > - { > - newfmt[0] = '\0'; > - } > - strcat(newfmt, fmt); > - > - va_start(va, fmt); > - vsprintf(log_buf, newfmt, va); > - log_printf(LOG_LEVEL_DEBUG, log_buf); > - va_end(va); > + logsys_config_mode_set(LOG_MODE_FLUSH_AFTER_CONFIG | ((subsys_mask)?LOG_MODE_OUTPUT_STDERR:0)); > } > --- cluster/cman/daemon/logging.h 2007/08/28 13:14:10 1.7 > +++ cluster/cman/daemon/logging.h 2007/09/17 08:03:36 1.8 > @@ -9,9 +9,9 @@ > ** > ******************************************************************************* > ******************************************************************************/ > - > -extern void log_msg(int priority, char *fmt, ...); > +#include > extern void init_debug(int subsystems); > +extern void cman_flush_debuglog(void); > extern void set_debuglog(int subsystems); > > /* Debug macros */ > @@ -21,9 +21,10 @@ > #define CMAN_DEBUG_DAEMON 8 > #define CMAN_DEBUG_AIS 16 > > -extern void log_debug(int subsys, int stamp, const char *fmt, ...); > +extern unsigned int logsys_subsys_id; > +extern int subsys_mask; > > -#define P_BARRIER(fmt, args...) log_debug(CMAN_DEBUG_BARRIER, 1, fmt, ## args) > -#define P_MEMB(fmt, args...) log_debug(CMAN_DEBUG_MEMB, 1, fmt, ## args) > -#define P_DAEMON(fmt, args...) log_debug(CMAN_DEBUG_DAEMON, 1, fmt, ## args) > -#define P_AIS(fmt, args...) log_debug(CMAN_DEBUG_AIS, 1, fmt, ## args) > +#define P_BARRIER(fmt, args...) if (subsys_mask & CMAN_DEBUG_BARRIER) log_printf(logsys_mkpri(LOG_LEVEL_DEBUG, logsys_subsys_id), "barrier: " fmt, ## args) > +#define P_MEMB(fmt, args...) if (subsys_mask & CMAN_DEBUG_MEMB) log_printf(LOG_LEVEL_DEBUG , "memb: " fmt, ## args) > +#define P_DAEMON(fmt, args...) if (subsys_mask & CMAN_DEBUG_DAEMON) log_printf(LOG_LEVEL_DEBUG , "daemon: " fmt, ## args) > +#define P_AIS(fmt, args...) if (subsys_mask & CMAN_DEBUG_AIS) log_printf(LOG_LEVEL_DEBUG, "ais " fmt, ## args) >