* [Cluster-devel] cluster/group/dlm_controld dlm_daemon.h member ...
@ 2007-12-10 16:17 pcaulfield
0 siblings, 0 replies; only message in thread
From: pcaulfield @ 2007-12-10 16:17 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: pcaulfield at sourceware.org 2007-12-10 16:17:07
Modified files:
group/dlm_controld: dlm_daemon.h member_cman.c
Log message:
Add multi-path capability. Each address we get from cman is now
passed into the DLM.
It's still incumbent on cluster.conf to set the transport to sctp.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/dlm_controld/dlm_daemon.h.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/dlm_controld/member_cman.c.diff?cvsroot=cluster&r1=1.8&r2=1.9
--- cluster/group/dlm_controld/dlm_daemon.h 2007/08/17 21:17:53 1.13
+++ cluster/group/dlm_controld/dlm_daemon.h 2007/12/10 16:17:06 1.14
@@ -56,6 +56,7 @@
#define MAXCON 4
#define MAXNAME 255
#define MAX_NODES 256 /* should be same as MAX_GROUP_MEMBERS */
+#define MAX_NODE_ADDRESSES 4
extern char *prog_name;
extern int daemon_debug_opt;
--- cluster/group/dlm_controld/member_cman.c 2007/07/24 18:15:43 1.8
+++ cluster/group/dlm_controld/member_cman.c 2007/12/10 16:17:06 1.9
@@ -68,7 +68,10 @@
static void statechange(void)
{
- int i, rv;
+ int i, j, rv;
+ struct cman_node_address addrs[MAX_NODE_ADDRESSES];
+ int num_addrs;
+ struct cman_node_address *addrptr = addrs;
old_node_count = cman_node_count;
memcpy(&old_nodes, &cman_nodes, sizeof(old_nodes));
@@ -96,14 +99,25 @@
if (cman_nodes[i].cn_member &&
!is_old_member(cman_nodes[i].cn_nodeid)) {
+ rv = cman_get_node_addrs(ch, cman_nodes[i].cn_nodeid,
+ MAX_NODE_ADDRESSES,
+ &num_addrs, addrs);
+ if (rv < 0) {
+ log_debug("cman_get_node_addrs failed, falling back to single-homed. ");
+ num_addrs = 1;
+ addrptr = &cman_nodes[i].cn_address;
+ }
+
log_debug("cman: node %d added",
cman_nodes[i].cn_nodeid);
- add_configfs_node(cman_nodes[i].cn_nodeid,
- cman_nodes[i].cn_address.cna_address,
- cman_nodes[i].cn_address.cna_addrlen,
- (cman_nodes[i].cn_nodeid ==
- our_nodeid));
+ for (j = 0; j < num_addrs; j++) {
+ add_configfs_node(cman_nodes[i].cn_nodeid,
+ addrptr[j].cna_address,
+ addrptr[j].cna_addrlen,
+ (cman_nodes[i].cn_nodeid ==
+ our_nodeid));
+ }
}
}
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-12-10 16:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-10 16:17 [Cluster-devel] cluster/group/dlm_controld dlm_daemon.h member pcaulfield
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.