[Cluster-devel] cluster/group/dlm_controld action.c dlm_daemon ...

pcaulfield at sourceware.org pcaulfield at sourceware.org
Thu Oct 5 07:52:50 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	pcaulfield at sourceware.org	2006-10-05 07:52:50

Modified files:
	group/dlm_controld: action.c dlm_daemon.h member_cman.c 

Log message:
	A bit of a hack to cope with the race condition where dlm_controld gets
	the groupd callback before the cman one and tries to start a DLM lockspace
	before all the node addresses are known.
	
	I think this will fix bz#207197

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/dlm_controld/action.c.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/dlm_controld/dlm_daemon.h.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/dlm_controld/member_cman.c.diff?cvsroot=cluster&r1=1.2&r2=1.3

--- cluster/group/dlm_controld/action.c	2006/08/31 18:17:00	1.6
+++ cluster/group/dlm_controld/action.c	2006/10/05 07:52:50	1.7
@@ -297,6 +297,8 @@
 		if (id_exists(id, old_count, old_members))
 			continue;
 
+		if (!is_cman_member(id))
+			cman_statechange();
 		/*
 		 * create node's dir
 		 */
--- cluster/group/dlm_controld/dlm_daemon.h	2006/07/19 14:44:40	1.3
+++ cluster/group/dlm_controld/dlm_daemon.h	2006/10/05 07:52:50	1.4
@@ -94,5 +94,9 @@
 struct lockspace *create_ls(char *name);
 struct lockspace *find_ls(char *name);
 
+/* member_cman.c */
+int is_cman_member(int nodeid);
+void cman_statechange(void);
+
 #endif
 
--- cluster/group/dlm_controld/member_cman.c	2006/06/30 15:36:52	1.2
+++ cluster/group/dlm_controld/member_cman.c	2006/10/05 07:52:50	1.3
@@ -66,6 +66,7 @@
 	return cn->cn_name;
 }
 
+
 /* add a configfs dir for cluster members that don't have one,
    del the configfs dir for cluster members that are now gone */
 
@@ -219,3 +220,8 @@
 	return fd;
 }
 
+/* Force re-read of cman nodes */
+void cman_statechange()
+{
+	statechange();
+}




More information about the Cluster-devel mailing list