From mboxrd@z Thu Jan 1 00:00:00 1970 From: pcaulfield@sourceware.org Date: 5 Oct 2006 07:52:50 -0000 Subject: [Cluster-devel] cluster/group/dlm_controld action.c dlm_daemon ... Message-ID: <20061005075250.3187.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-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(); +}