From mboxrd@z Thu Jan 1 00:00:00 1970 From: lhh@sourceware.org Date: 21 Feb 2007 20:46:50 -0000 Subject: [Cluster-devel] cluster/rgmanager/src/daemons groups.c Message-ID: <20070221204650.19951.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 Branch: RHEL5 Changes by: lhh at sourceware.org 2007-02-21 20:46:50 Modified files: rgmanager/src/daemons: groups.c Log message: Resolves: 222445 * Only allow one status check thread to spawn at a time Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/groups.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.25.2.1&r2=1.25.2.2 --- cluster/rgmanager/src/daemons/groups.c 2006/12/18 21:48:48 1.25.2.1 +++ cluster/rgmanager/src/daemons/groups.c 2007/02/21 20:46:49 1.25.2.2 @@ -44,6 +44,7 @@ static fod_t *_domains = NULL; pthread_mutex_t config_mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_mutex_t status_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_rwlock_t resource_lock = PTHREAD_RWLOCK_INITIALIZER; void res_build_name(char *, size_t, resource_t *); @@ -991,6 +992,10 @@ resource_node_t *curr; rg_state_t svcblk; char rg[64]; + + /* Only one status thread at a time, please! */ + if (pthread_mutex_trylock(&status_mutex) != 0) + return NULL; pthread_rwlock_rdlock(&resource_lock); list_do(&_tree, curr) { @@ -1013,6 +1018,7 @@ } while (!list_done(&_tree, curr)); pthread_rwlock_unlock(&resource_lock); + pthread_mutex_unlock(&status_mutex); return NULL; }