[Cluster-devel] cluster/rgmanager ChangeLog include/reslist.h ...

lhh at sourceware.org lhh at sourceware.org
Thu May 3 15:02:56 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	lhh at sourceware.org	2007-05-03 15:02:48

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/include: reslist.h 
	rgmanager/make : defines.mk.input 
	rgmanager/src/clulib: Makefile alloc.c clulog.c msgsimple.c 
	                      vft.c 
	rgmanager/src/daemons: groups.c rg_state.c 
	rgmanager/src/daemons/tests: delta-test004-test005.expected 
	                             delta-test005-test006.expected 
	                             delta-test006-test007.expected 
	                             delta-test007-test008.expected 
	                             delta-test008-test009.expected 
	                             delta-test009-test010.expected 
	                             delta-test010-test011.expected 
	                             delta-test011-test012.expected 
	                             delta-test012-test013.expected 
	                             delta-test013-test014.expected 
	                             delta-test014-test015.expected 
	                             delta-test015-test016.expected 
	                             delta-test016-test017.expected 
	                             test005.expected test006.expected 
	                             test007.expected test008.expected 
	                             test009.expected test010.expected 
	                             test011.expected test012.expected 
	                             test013.expected test014.expected 
	                             test015.expected test016.expected 
	                             test017.expected 
	rgmanager/src/resources: fs.sh nfsclient.sh nfsexport.sh 
	rgmanager/src/utils: clulog.c 
Added files:
	rgmanager/src/clulib: wrap_lock.c 

Log message:
	2007-05-03 Lon Hohberger <lhh at redhat.com>
	* Merge patch from Crosswalk development team:
	* Scott Cannata
	* Henry Harris
	* Leonard Maiorani
	* src/daemons/groups.c, rg_state.c: Apply patch from Andrey
	Mirkin to fix bug #237144; prevents exclusive services from
	being accidentally (or intentionally) being started on the
	same node
	* src/daemons/restree.c: Don't print (null) when an attr
	isn't inherited
	* src/daemons/reslist.c: Try all direct ancestors while
	performing run-time inheritance resolution #231521
	* src/daemons/tests/*: Clean up test cases; don't look for (null)
	any more

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.24&r2=1.5.2.25
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/include/reslist.h.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.8.2.6&r2=1.8.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/make/defines.mk.input.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.3&r2=1.3.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/wrap_lock.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=NONE&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.2&r2=1.4.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/alloc.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.3.2.4&r2=1.3.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/clulog.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.2.2.3&r2=1.2.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/msgsimple.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.1&r2=1.4.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/vft.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.7.2.7&r2=1.7.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/groups.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.8.2.18&r2=1.8.2.19
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.19&r2=1.4.2.20
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test004-test005.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test005-test006.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test006-test007.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test007-test008.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test008-test009.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test009-test010.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test010-test011.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test011-test012.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test012-test013.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test013-test014.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test014-test015.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test015-test016.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/delta-test016-test017.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.1&r2=1.1.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test005.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test006.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test007.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test008.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test009.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test010.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test011.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test012.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test013.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test014.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test015.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test016.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/tests/test017.expected.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.1&r2=1.1.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/fs.sh.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.21&r2=1.4.2.22
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/nfsclient.sh.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.3.2.11&r2=1.3.2.12
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/nfsexport.sh.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.5&r2=1.4.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clulog.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.2&r2=1.1.2.3

--- cluster/rgmanager/ChangeLog	2006/11/03 16:26:18	1.5.2.24
+++ cluster/rgmanager/ChangeLog	2007/05/03 15:02:45	1.5.2.25
@@ -1,3 +1,21 @@
+2007-05-03 Lon Hohberger <lhh at redhat.com>
+	* Merge patch from Crosswalk development team:
+		* Scott Cannata
+		* Henry Harris
+		* Leonard Maiorani
+	* src/daemons/groups.c, rg_state.c: Apply patch from Andrey
+	Mirkin to fix bug #237144; prevents exclusive services from
+	being accidentally (or intentionally) being started on the
+	same node
+	* src/daemons/restree.c: Don't print (null) when an attr
+	isn't inherited
+	* src/daemons/reslist.c: Try all direct ancestors while 
+	performing run-time inheritance resolution #231521
+	* src/daemons/tests/*: Clean up test cases; don't look for (null)
+	any more
+
+=====
+
 2006-11-03 Lon Hohberger <lhh at redhat.com>
 	* src/daemons/restree.c: Merge patch from Jeff Layton to instrument
 	res_exec more closely. (#213246)
--- cluster/rgmanager/include/reslist.h	2007/03/20 19:40:06	1.8.2.6
+++ cluster/rgmanager/include/reslist.h	2007/05/03 15:02:46	1.8.2.7
@@ -25,11 +25,6 @@
 #include <libxml/xpath.h>
 
 
-#define RA_PRIMARY	(1<<0)
-#define RA_UNIQUE	(1<<1)
-#define RA_REQUIRED	(1<<2)
-#define RA_INHERIT	(1<<3)
-
 #define RF_INLINE	(1<<0)
 #define RF_DEFINED	(1<<1)
 #define RF_NEEDSTART	(1<<2)	/** Used when adding/changing resources */
@@ -70,11 +65,24 @@
 #include <res-ocf.h>
 
 
+typedef enum {
+/*
+#define RA_PRIMARY	(1<<0)
+#define RA_UNIQUE	(1<<1)
+#define RA_REQUIRED	(1<<2)
+#define RA_INHERIT	(1<<3)
+ */
+	RA_PRIMARY = (1<<0),
+	RA_UNIQUE  = (1<<1),
+	RA_REQUIRED= (1<<2),
+	RA_INHERIT = (1<<3),
+	RA_SPEC    = (1<<4)
+} ra_flag_t;
+
 typedef struct _resource_attribute {
-	int	ra_flags;
-	/* XXX possible alignment problem on ia64 */
 	char	*ra_name;
 	char	*ra_value;
+	ra_flag_t ra_flags;
 } resource_attr_t;
 
 
--- cluster/rgmanager/make/Attic/defines.mk.input	2004/10/27 20:26:22	1.3
+++ cluster/rgmanager/make/Attic/defines.mk.input	2007/05/03 15:02:46	1.3.2.1
@@ -32,3 +32,11 @@
 
 # Default CFLAGS
 CFLAGS += -DSHAREDIR=\"@SHAREDIR@\" -Wall ${INCLUDE}
+
+#
+# Wrappers around pthread_mutex / pthread_rwlock calls for deadlock
+# detection (and other things)
+#
+#CFLAGS += -DSHAREDIR=\"/usr/share/cluster\" -Wall ${INCLUDE} -DWRAP_LOCKS -DMAX_DISPATCH_RETRIES=3
+#LDFLAGS += -Wl,-wrap,pthread_mutex_lock,-wrap,pthread_mutex_unlock,-wrap,pthread_rwlock_rdlock,-wrap,pthread_rwlock_wrlock,-wrap,pthread_rwlock_unlock
+
/cvs/cluster/cluster/rgmanager/src/clulib/wrap_lock.c,v  -->  standard output
revision 1.1.2.1
--- cluster/rgmanager/src/clulib/wrap_lock.c
+++ -	2007-05-03 15:02:50.265394000 +0000
@@ -0,0 +1,224 @@
+/*
+  Copyright Red Hat, Inc. 2007
+  Copyright Crosswalk 2006-2007
+
+  This program is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  This program is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; see the file COPYING.  If not, write to the
+  Free Software Foundation, Inc.,  675 Mass Ave, Cambridge, 
+  MA 02139, USA.
+*/
+#ifdef WRAP_LOCKS
+#include <stdio.h>
+#include <sys/types.h>
+#include <gettid.h>
+#include <pthread.h>
+#include <string.h>
+#include <errno.h>
+#include <string.h>
+#include <signal.h>
+
+int __real_pthread_mutex_lock(pthread_mutex_t *lock);
+int
+__wrap_pthread_mutex_lock(pthread_mutex_t *lock)
+{
+	int status;
+	struct timespec delay;
+
+	while (1) {
+		status = __real_pthread_mutex_lock(lock);
+
+		switch(status) {
+		case EDEADLK:
+			/* Already own it: Note the error, but continue */
+			fprintf(stderr, "[%d] %s(%p): %s; continuing\n",
+				gettid(),
+				__FUNCTION__, lock, strerror(status));
+			/* deliberate fallthrough */
+		case 0:
+			return 0;
+		case EBUSY:
+			/* Try again */
+			break;
+		default:
+			/* Other return codes */
+			fprintf(stderr, "[%d] %s(%p): %s\n", gettid(),
+				__FUNCTION__, lock, strerror(status));
+			raise(SIGSEGV);
+			/* EINVAL? */
+			return 0;
+		}
+
+		delay.tv_sec = 0;
+		delay.tv_nsec = 100000;
+		nanosleep(&delay, NULL);
+	}
+
+	/* Not reached */
+	return 0;
+}
+
+
+int __real_pthread_mutex_unlock(pthread_mutex_t *lock);
+int
+__wrap_pthread_mutex_unlock(pthread_mutex_t *lock)
+{
+	int status;
+	struct timespec delay;
+
+	while (1) {
+		status = __real_pthread_mutex_unlock(lock);
+
+		switch(status) {
+		case EPERM:
+			/* Don't own it: Note the error, but continue */
+			fprintf(stderr, "[%d] %s(%p): %s; continuing\n",
+				gettid(),
+				__FUNCTION__, lock, strerror(status));
+			/* deliberate fallthrough */
+		case 0:
+			return 0;
+		default:
+			fprintf(stderr, "[%d] %s(%p): %s\n", gettid(),
+				__FUNCTION__, lock, strerror(status));
+			raise(SIGSEGV);
+			return 0;
+		}
+
+		delay.tv_sec = 0;
+		delay.tv_nsec = 100000;
+		nanosleep(&delay, NULL);
+	}
+
+	/* Not reached */
+	return 0;
+}
+
+
+int __real_pthread_rwlock_rdlock(pthread_rwlock_t *lock);
+int
+__wrap_pthread_rwlock_rdlock(pthread_rwlock_t *lock)
+{
+	int status;
+	struct timespec delay;
+
+	while (1) {
+		status = __real_pthread_rwlock_rdlock(lock);
+
+		switch(status) {
+		case EDEADLK:
+			/* Already own it: Note the error, but continue */
+			fprintf(stderr, "[%d] %s(%p): %s; continuing\n",
+				gettid(),
+				__FUNCTION__, lock, strerror(status));
+			/* deliberate fallthrough */
+		case 0:
+			return 0;
+		case EBUSY:
+			/* Try again */
+			break;
+		default:
+			/* Other return codes */
+			fprintf(stderr, "[%d] %s(%p): %s\n", gettid(),
+				__FUNCTION__, lock, strerror(status));
+			raise(SIGSEGV);
+			/* EINVAL? */
+			return 0;
+		}
+
+		delay.tv_sec = 0;
+		delay.tv_nsec = 100000;
+		nanosleep(&delay, NULL);
+	}
+
+	/* Not reached */
+	return 0;
+}
+
+
+int __real_pthread_rwlock_wrlock(pthread_rwlock_t *lock);
+int
+__wrap_pthread_rwlock_wrlock(pthread_rwlock_t *lock)
+{
+	int status;
+	struct timespec delay;
+
+	while (1) {
+		status = __real_pthread_rwlock_wrlock(lock);
+
+		switch(status) {
+		case EDEADLK:
+			/* Already own it: Note the error, but continue */
+			fprintf(stderr, "[%d] %s(%p): %s; continuing\n",
+				gettid(),
+				__FUNCTION__, lock, strerror(status));
+			/* deliberate fallthrough */
+		case 0:
+			return 0;
+		case EBUSY:
+			/* Try again */
+			break;
+		default:
+			/* Other return codes */
+			fprintf(stderr, "[%d] %s(%p): %s\n", gettid(),
+				__FUNCTION__, lock, strerror(status));
+			raise(SIGSEGV);
+			/* EINVAL? */
+			return 0;
+		}
+
+		delay.tv_sec = 0;
+		delay.tv_nsec = 100000;
+		nanosleep(&delay, NULL);
+	}
+
+	/* Not reached */
+	return 0;
+}
+
+
+int __real_pthread_rwlock_unlock(pthread_rwlock_t *lock);
+int
+__wrap_pthread_rwlock_unlock(pthread_rwlock_t *lock)
+{
+	int status;
+	struct timespec delay;
+
+	while (1) {
+		status = __real_pthread_rwlock_unlock(lock);
+
+		switch(status) {
+		case EPERM:
+			/* Don't own it: Note the error, but continue */
+			fprintf(stderr, "[%d] %s(%p): %s; continuing\n",
+				gettid(),
+				__FUNCTION__, lock, strerror(status));
+			/* deliberate fallthrough */
+		case 0:
+			return 0;
+		default:
+			fprintf(stderr, "[%d] %s(%p): %s\n", gettid(),
+				__FUNCTION__, lock, strerror(status));
+			raise(SIGSEGV);
+			return 0;
+		}
+
+		delay.tv_sec = 0;
+		delay.tv_nsec = 100000;
+		nanosleep(&delay, NULL);
+	}
+
+	/* Not reached */
+	return 0;
+}
+#endif
+
--- cluster/rgmanager/src/clulib/Makefile	2005/01/25 17:22:42	1.4.2.2
+++ cluster/rgmanager/src/clulib/Makefile	2007/05/03 15:02:46	1.4.2.3
@@ -30,7 +30,7 @@
 uninstall:
 
 libclulib.a: clulog.o daemon_init.o signals.o msgsimple.o \
-		vft.o gettid.o rg_strings.o
+		vft.o gettid.o rg_strings.o wrap_lock.o
 	${AR} cru $@ $^
 	ranlib $@
 
--- cluster/rgmanager/src/clulib/alloc.c	2006/01/20 16:25:24	1.3.2.4
+++ cluster/rgmanager/src/clulib/alloc.c	2007/05/03 15:02:46	1.3.2.5
@@ -155,7 +155,11 @@
 
 #ifndef NOPTHREADS
 #include <pthread.h>
+#ifdef WRAP_LOCKS
+static pthread_mutex_t _alloc_mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
+#else
 static pthread_mutex_t _alloc_mutex = PTHREAD_MUTEX_INITIALIZER;
+#endif /* WRAP_LOCKS */
 #else
 #define pthread_mutex_trylock(x) (0)
 #define pthread_mutex_lock(x)
--- cluster/rgmanager/src/clulib/clulog.c	2006/10/05 17:52:27	1.2.2.3
+++ cluster/rgmanager/src/clulib/clulog.c	2007/05/03 15:02:46	1.2.2.4
@@ -20,7 +20,7 @@
 /** @file
  * Library routines for communicating with the logging daemon.
  *
- *  $Id: clulog.c,v 1.2.2.3 2006/10/05 17:52:27 lhh Exp $
+ *  $Id: clulog.c,v 1.2.2.4 2007/05/03 15:02:46 lhh Exp $
  *
  *  Author: Jeff Moyer <moyer at missioncriticallinux.com>
  */
@@ -50,7 +50,7 @@
 #include <string.h>
 
 
-static const char *version __attribute__ ((unused)) = "$Revision: 1.2.2.3 $";
+static const char *version __attribute__ ((unused)) = "$Revision: 1.2.2.4 $";
 
 #ifdef DEBUG
 #include <assert.h>
@@ -70,7 +70,12 @@
 static int   syslog_facility = LOG_DAEMON;
 static char  *daemon_name = NULL;
 static pid_t daemon_pid = -1;
+
+#ifdef WRAP_LOCKS
+static pthread_mutex_t log_mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
+#else
 static pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER;
+#endif
 
 CODE logger_prioritynames[] = 
 { {"emerg", LOG_EMERG},
--- cluster/rgmanager/src/clulib/msgsimple.c	2006/05/12 21:28:31	1.4.2.1
+++ cluster/rgmanager/src/clulib/msgsimple.c	2007/05/03 15:02:46	1.4.2.2
@@ -51,6 +51,8 @@
 int
 msg_send_simple(int fd, int cmd, int arg1, int arg2)
 {
+	int       status;
+	int       my_errno;
 	generic_msg_hdr msg;
 
 	msg.gh_magic = GENERIC_HDR_MAGIC;
@@ -60,7 +62,25 @@
 	msg.gh_arg2 = arg2;
 	swab_generic_msg_hdr(&msg);
 
-	return msg_send(fd, (void *) &msg, sizeof (msg));
+	my_errno = 0;
+	status = msg_send(fd, (void *) &msg, sizeof (msg));
+	my_errno = errno;
+
+	if (status <= 0)
+	{
+		/*
+		 *  Should never be the case since msg_send() is 
+		 *  wrapped in a retry loop. Give one more try
+		 *  calling msg_send() for a few errnos, others, return
+		 *  error as they cannot and should not be retried.
+		 */
+		if ((my_errno == EINTR) || (my_errno == EAGAIN) ||
+		    (my_errno == ENOSPC)) {
+			status = msg_send(fd, (void *) &msg, sizeof (msg));
+		}
+	}
+
+	return (status);
 }
 
 
@@ -95,7 +115,7 @@
 			fprintf(stderr, "fd%d peek: %d/%d bytes\n", fd,
 			       ret, (int)sizeof (generic_msg_hdr));
 		else if (ret == 0)
-			errno = EAGAIN;
+			errno = ECONNRESET;
 		return -1;
 	}
 
@@ -110,7 +130,6 @@
 	 * allocate enough memory to receive the header + diff buffer
 	 */
 	*buf = malloc(peek_msg.gh_length);
-	memset(*buf, 0, peek_msg.gh_length);
 
 	if (!*buf) {
 		fprintf(stderr, "%s: malloc: %s", __FUNCTION__,
@@ -118,6 +137,8 @@
 		return -1;
 	}
 
+	memset(*buf, 0, peek_msg.gh_length);
+
 	/*
 	 * Now, do the real receive.  2 second timeout, if none specified.
 	 */
--- cluster/rgmanager/src/clulib/vft.c	2006/12/13 18:19:56	1.7.2.7
+++ cluster/rgmanager/src/clulib/vft.c	2007/05/03 15:02:46	1.7.2.8
@@ -54,8 +54,13 @@
  * TODO: We could make it thread safe, but this might be unnecessary work
  * Solution: Super-coarse-grained-bad-code-locking!
  */
+#ifdef WRAP_LOCKS
+static pthread_mutex_t key_list_mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
+static pthread_mutex_t vf_mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
+#else
 static pthread_mutex_t key_list_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_mutex_t vf_mutex = PTHREAD_MUTEX_INITIALIZER;
+#endif /* WRAP_LOCKS */
 static pthread_t vf_thread = (pthread_t)-1;
 static int thread_ready = 0;
 static vf_vote_cb_t default_vote_cb = NULL;
@@ -332,6 +337,7 @@
 	struct timeval tv;
 	fd_set rfds;
 	int nready, x;
+	int  myerrno = 0;
 
 	/* Set up for the select */
 	tv.tv_sec = timeout;
@@ -351,12 +357,30 @@
 			FD_SET(peer_fds[x], &rfds);
 
 		nready = select(MAX_FDS, &rfds, NULL, NULL, &tv);
-		if (nready <= -1) {
-			if (nready == 0)
-				printf("VF Abort: Timed out!\n");
-			else
-				printf("VF Abort: %s\n",
-				       strerror(errno));
+
+		/*
+		 *  fix, rhat erroneous check of nready==0 and
+		 *  not retrying on EINTR.
+		 */
+		if (nready < 0) 
+		{
+			myerrno = errno;
+			fprintf(stderr, "VF Abort: %s\n", strerror(myerrno));
+
+			if (myerrno == EINTR) {
+				tv.tv_sec = timeout;
+				tv.tv_usec = 0;
+				continue;
+			}
+
+			errno = myerrno;
+			return 0;
+		}
+
+		if (nready == 0) {
+			fprintf(stderr, 
+				"VF Abort: Timed out!\n");
+
 			return 0;
 		}
 
@@ -768,8 +792,13 @@
 	if (!fp)
 		return -1;
 
+#if defined(__sparc__) || defined(__hppa__) || defined(__sparc64__) || defined (__hppa64__)
+	rv = fscanf(fp,"%ld.%d %ld.%d\n", &tv->tv_sec, &tv->tv_usec,
+		    &junk.tv_sec, &junk.tv_usec);
+#else
 	rv = fscanf(fp,"%ld.%ld %ld.%ld\n", &tv->tv_sec, &tv->tv_usec,
 		    &junk.tv_sec, &junk.tv_usec);
+#endif
 	fclose(fp);
 	
 	if (rv != 4) {
@@ -830,6 +859,15 @@
 		free(key_node->kn_data);
 	key_node->kn_datalen = vnp->vn_datalen;
 	key_node->kn_data = malloc(vnp->vn_datalen);
+
+	/*
+	 *   Need to check return of malloc always
+	 */
+	if (key_node->kn_data == NULL) {
+		fprintf (stderr, "malloc fail err=%d\n", errno);
+		return -1;
+	}
+
 	memcpy(key_node->kn_data, vnp->vn_data, vnp->vn_datalen);
 
 	free(vnp);
@@ -844,15 +882,42 @@
 	struct timeval tv;
 	fd_set rfds;
 	generic_msg_hdr *hdrp = NULL;
+	int   myerrno = 0;
 
-	FD_ZERO(&rfds);
-	max = msg_fill_fdset(&rfds, MSG_ALL, MSGP_VFS);
+	while (1) {
+		FD_ZERO(&rfds);
+		max = msg_fill_fdset(&rfds, MSG_ALL, MSGP_VFS);
 
-	tv.tv_sec = 1;
-	tv.tv_usec = 0;
-	nready = select(max + 1, &rfds, NULL, NULL, &tv);
-	if (nready <= 0)
-		return;
+		tv.tv_sec = 1;
+		tv.tv_usec = 0;
+
+		nready = select(max + 1, &rfds, NULL, NULL, &tv);
+		if (nready < 0)
+		{
+			myerrno = errno;
+#ifdef NOT_NOW
+			/*
+			 *  i think red hat wants to return w/ EINTR
+			 */
+			if (myerrno == EINTR)
+			{
+				continue;
+			}
+#endif /* NOT_NOW */
+
+			errno = myerrno;
+			return;
+		}
+
+		if (nready == 0) {
+			return;
+		}
+
+		/*
+		 *  positive return value, break and process.
+		 */
+		break;
+	}
 
 	while (nready) {
 		fd = msg_next_fd(&rfds);
@@ -970,6 +1035,12 @@
 	}
 
 	va = malloc(sizeof(*va));
+
+	if (va == NULL) {
+		fprintf (stderr, "vf_init: malloc fail2 err=%d\n", errno);
+		return -1;
+	}
+
 	va->local_node_id = my_node_id;
 	va->port = my_port;
 
@@ -1071,6 +1142,13 @@
 	}
 
 	newnode = malloc(sizeof(*newnode));
+
+	if (newnode == NULL) {
+		fprintf(stderr, "malloc fail3 err=%d\n", errno);
+		pthread_mutex_unlock(&key_list_mutex);
+		return -1;
+	}
+
 	newnode->kn_data = NULL;
 	memset(newnode,0,sizeof(*newnode));
 	newnode->kn_keyid = strdup(keyid);
@@ -1178,6 +1256,8 @@
 	void *lockp = NULL;
 	int l;
 	char lock_name[256];
+	int my_status;
+	int ret_status = 0;
 
 	if (!data || !datalen || !keyid || !strlen(keyid) || !membership)
 		return -1;
@@ -1187,7 +1267,6 @@
 	snprintf(lock_name, sizeof(lock_name), "usrm::vf");
 	l = clu_lock(lock_name, CLK_EX, &lockp);
 	if (l < 0) {
-		clu_unlock(lock_name, lockp);
 		pthread_mutex_unlock(&vf_mutex);
 		return l;
 	}
@@ -1196,6 +1275,7 @@
 	count = sizeof(int) * (membership->cml_count + 1);
 	peer_fds = malloc(count);
 	if(!peer_fds) {
+		clu_unlock(lock_name, lockp);
 		pthread_mutex_unlock(&vf_mutex);
 		return -1;
 	}
@@ -1240,13 +1320,13 @@
 				goto retry_top;
 			if (flags & VFF_IGN_CONN_ERRORS)
 				continue;
+			close_all(peer_fds);
 			free(peer_fds);
 
 			clu_unlock(lock_name, lockp);
 			pthread_mutex_unlock(&vf_mutex);
 			return -1;
 		}
-
 		++y;
 	}
 
@@ -1289,19 +1369,30 @@
 	 */
 	for (x = 0; peer_fds[x] != -1; x++) {
 
-		if (msg_send(peer_fds[x], join_view, totallen) != totallen) {
-			vf_send_abort(peer_fds);
-			close_all(peer_fds);
-
-			free(join_view);
-			clu_unlock(lock_name, lockp);
-			pthread_mutex_unlock(&vf_mutex);
-			return -1;
-		} 
+		/*
+		 *  Still send msg to everyone, but then close
+		 *  all peers fds and cleanup - TBD JSC
+		 */
+		my_status = msg_send(peer_fds[x], join_view, totallen);
+		if (my_status != totallen) {
+			ret_status = -1;
+		}
 
 		remain++;
 	}
 
+	/*
+	 *  Now cleanup
+	 */
+	if (ret_status == -1) {
+		vf_send_abort(peer_fds);
+		close_all(peer_fds);
+		free(join_view);
+		clu_unlock(lock_name, lockp);
+		pthread_mutex_unlock(&vf_mutex);
+		return -1;
+	}
+
 #ifdef DEBUG
 	printf("VF: Checking for consensus...\n");
 #endif
@@ -1524,7 +1615,6 @@
 	snprintf(lock_name, sizeof(lock_name), "usrm::vf");
 	l = clu_lock(lock_name, CLK_EX, &lockp);
 	if (l < 0) {
-		clu_unlock(lock_name, lockp);
 		pthread_mutex_unlock(&vf_mutex);
 		printf("Couldn't lock %s\n", keyid);
 		return l;
--- cluster/rgmanager/src/daemons/groups.c	2006/11/27 22:21:30	1.8.2.18
+++ cluster/rgmanager/src/daemons/groups.c	2007/05/03 15:02:47	1.8.2.19
@@ -22,6 +22,7 @@
 #include <magma.h>
 #include <magmamsg.h>
 #include <resgroup.h>
+#include <reslist.h>
 #include <vf.h>
 #include <magma.h>
 #include <ccs.h>
@@ -132,6 +133,106 @@
 }
 
 
+int get_rg_state_local(char *, rg_state_t *);
+int
+count_resource_groups_local(cluster_member_t *mp)
+{
+	resource_t *res;
+	char *rgname, *val;
+	rg_state_t st;
+
+	mp->cm_svccount = 0;
+	mp->cm_svcexcl = 0;
+
+	pthread_rwlock_rdlock(&resource_lock);
+
+	list_do(&_resources, res) {
+		if (res->r_rule->rr_root == 0)
+			continue;
+
+		rgname = res->r_attrs[0].ra_value;
+
+		if (get_rg_state_local(rgname, &st) < 0) {
+			continue;
+		}
+
+		if (st.rs_state != RG_STATE_STARTED &&
+		     st.rs_state != RG_STATE_STARTING)
+			continue;
+
+		if (mp->cm_id != st.rs_owner)
+			continue;
+
+		++mp->cm_svccount;
+
+		val = res_attr_value(res, "exclusive");
+		if (val && ((!strcmp(val, "yes") ||
+				     (atoi(val)>0))) ) {
+			++mp->cm_svcexcl;
+		}
+
+	} while (!list_done(&_resources, res));
+
+	pthread_rwlock_unlock(&resource_lock);
+
+	return 0;
+}
+
+
+int
+have_exclusive_resources()
+{
+	resource_t *res;
+	char *val;
+
+	pthread_rwlock_rdlock(&resource_lock);
+
+	list_do(&_resources, res) {
+		val = res_attr_value(res, "exclusive");
+		if (val && ((!strcmp(val, "yes") ||
+				     (atoi(val)>0))) ) {
+			pthread_rwlock_unlock(&resource_lock);
+			return 1;
+		}
+
+	} while (!list_done(&_resources, res));
+
+	pthread_rwlock_unlock(&resource_lock);
+
+	return 0;
+}
+
+
+int
+check_exclusive_resources(cluster_member_list_t *membership, char *svcName)
+{
+	cluster_member_t *mp;
+	int exclusive, count; 
+	resource_t *res;
+	char *val;
+
+	mp = memb_id_to_p(membership, my_id());
+	assert(mp);
+	count_resource_groups_local(mp);
+	exclusive = mp->cm_svcexcl;
+	count = mp->cm_svccount;
+	pthread_rwlock_rdlock(&resource_lock);
+	res = find_root_by_ref(&_resources, svcName);
+	if (!res) {
+		pthread_rwlock_unlock(&resource_lock);
+		return FAIL;
+	}
+	val = res_attr_value(res, "exclusive");
+	pthread_rwlock_unlock(&resource_lock);
+	if (exclusive || (count && val && 
+			(!strcmp(val, "yes") || (atoi(val)>0)))) {
+		return 1;
+	}
+
+	return 0;
+}
+
+
 /**
    Find the best target node for a service *besides* the current service
    owner.  Takes into account:
@@ -576,7 +677,6 @@
   @param rgname		Resource group name whose state we want to send.
   @see send_rg_states
  */
-int get_rg_state_local(char *, rg_state_t *);
 void
 send_rg_state(int fd, char *rgname, int fast)
 {
--- cluster/rgmanager/src/daemons/rg_state.c	2007/02/20 19:52:36	1.4.2.19
+++ cluster/rgmanager/src/daemons/rg_state.c	2007/05/03 15:02:47	1.4.2.20
@@ -41,6 +41,8 @@
 int set_rg_state(char *servicename, rg_state_t *svcblk);
 int get_rg_state(char *servicename, rg_state_t *svcblk);
 void get_recovery_policy(char *rg_name, char *buf, size_t buflen);
+int have_exclusive_resources();
+int check_exclusive_resources(cluster_member_list_t *membership, char *svcName);
 
 
 uint64_t
@@ -603,6 +605,10 @@
 			ret = 1;
 			break;
 		}
+		if (req == RG_START_RECOVER) {
+			ret = 1;
+			break;
+		}
 
 		clulog(LOG_DEBUG, "Not starting disabled RG %s\n",
 		       svcName);
@@ -1308,6 +1314,7 @@
 }
 
 
+pthread_mutex_t exclusive_mutex = PTHREAD_MUTEX_INITIALIZER;
 /**
  * handle_start_req - Handle a generic start request from a user or during
  * service manager boot.
@@ -1323,6 +1330,7 @@
 {
 	int ret, tolerance = FOD_BEST;
 	cluster_member_list_t *membership = member_list();
+	int need_check = have_exclusive_resources();
 
 	/*
 	 * When a service request is from a user application (eg, clusvcadm),
@@ -1338,6 +1346,18 @@
 		cml_free(membership);
 		return FAIL;
 	}
+	if (need_check) {
+		pthread_mutex_lock(&exclusive_mutex);
+		ret = check_exclusive_resources(membership, svcName);
+		if (ret != 0) {
+			cml_free(membership);
+			pthread_mutex_unlock(&exclusive_mutex);
+			if (ret > 0)
+				goto relocate;
+			else
+				return FAIL;
+		}
+	}
 	cml_free(membership);
 	
 	/*
@@ -1345,6 +1365,8 @@
 	 * mask here - so that we can try all nodes if necessary.
 	 */
 	ret = svc_start(svcName, req);
+	if (need_check)
+		pthread_mutex_unlock(&exclusive_mutex);
 
 	/* 
 	   If services are locked, return the error 
@@ -1384,6 +1406,7 @@
 		return RG_EABORT;
 	}
 	
+relocate:
 	/*
 	 * OK, it failed to start - but succeeded to stop.  Now,
 	 * we should relocate the service.
@@ -1421,6 +1444,7 @@
 	int x;
 	uint64_t me = my_id();
 	cluster_member_list_t *membership = member_list();
+	int need_check = have_exclusive_resources();
 
 	/* XXX ok, so we need to say "should I start this if I was the
 	   only cluster member online */
@@ -1441,9 +1465,19 @@
 		cml_free(membership);
 		return FAIL;
 	}
+ 	if (need_check) {
+ 		pthread_mutex_lock(&exclusive_mutex);
+ 		if (check_exclusive_resources(membership, svcName) != 0) {
+ 			pthread_mutex_unlock(&exclusive_mutex);
+ 			cml_free(membership);
+ 			return FAIL;
+ 		}
+ 	}
 	cml_free(membership);
 
 	x = svc_start(svcName, req);
+	if (need_check)
+ 		pthread_mutex_unlock(&exclusive_mutex);
 	if (x == 0)
 		return 0;
 	if (x == RG_ERUN)
--- cluster/rgmanager/src/daemons/tests/delta-test004-test005.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test004-test005.expected	2007/05/03 15:02:47	1.1.2.4
@@ -49,7 +49,6 @@
   ip [ NEEDSTART ] {
     address = "192.168.1.2";
     monitor_link = "1";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test005-test006.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test005-test006.expected	2007/05/03 15:02:47	1.1.2.4
@@ -48,7 +48,6 @@
   ip [ NEEDSTOP ] {
     address = "192.168.1.2";
     monitor_link = "1";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -62,7 +61,6 @@
   ip [ NEEDSTART ] {
     address = "192.168.1.2";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test006-test007.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test006-test007.expected	2007/05/03 15:02:47	1.1.2.4
@@ -48,7 +48,6 @@
   ip [ NEEDSTOP ] {
     address = "192.168.1.2";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -62,7 +61,6 @@
   ip [ NEEDSTART ] {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test007-test008.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test007-test008.expected	2007/05/03 15:02:47	1.1.2.4
@@ -58,7 +58,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -72,7 +71,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test008-test009.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test008-test009.expected	2007/05/03 15:02:47	1.1.2.4
@@ -68,7 +68,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -84,12 +83,10 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
   }
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test009-test010.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test009-test010.expected	2007/05/03 15:02:47	1.1.2.4
@@ -79,12 +79,10 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
   }
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -100,12 +98,10 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
   }
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test010-test011.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test010-test011.expected	2007/05/03 15:02:47	1.1.2.4
@@ -138,12 +138,10 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
   }
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -159,27 +157,20 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport [ NEEDSTART ] {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
     }
@@ -187,7 +178,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test011-test012.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test011-test012.expected	2007/05/03 15:02:47	1.1.2.4
@@ -188,27 +188,20 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
     }
@@ -216,7 +209,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -232,35 +224,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient [ NEEDSTART ] {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
     }
@@ -268,7 +251,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test012-test013.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test012-test013.expected	2007/05/03 15:02:47	1.1.2.4
@@ -188,35 +188,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient [ NEEDSTOP ] {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
     }
@@ -224,7 +215,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -240,35 +230,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient [ NEEDSTART ] {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -276,7 +257,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test013-test014.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test013-test014.expected	2007/05/03 15:02:47	1.1.2.4
@@ -212,35 +212,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -248,7 +239,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -264,35 +254,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -300,7 +281,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -315,35 +295,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -351,7 +322,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test014-test015.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test014-test015.expected	2007/05/03 15:02:47	1.1.2.4
@@ -236,35 +236,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient [ NEEDSTOP ] {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -272,7 +263,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -287,35 +277,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient [ NEEDSTOP ] {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -323,7 +304,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -339,35 +319,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient [ NEEDSTART ] {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -375,7 +346,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -390,35 +360,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient [ NEEDSTART ] {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -426,7 +387,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test015-test016.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/delta-test015-test016.expected	2007/05/03 15:02:47	1.1.2.4
@@ -237,35 +237,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -273,7 +264,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -288,35 +278,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -324,7 +305,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -340,35 +320,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -376,7 +347,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -391,35 +361,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -427,7 +388,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/delta-test016-test017.expected	2007/03/22 23:16:43	1.1.2.1
+++ cluster/rgmanager/src/daemons/tests/delta-test016-test017.expected	2007/05/03 15:02:47	1.1.2.2
@@ -251,35 +251,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -287,7 +278,6 @@
   ip [ NEEDSTOP ] {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -302,35 +292,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -338,7 +319,6 @@
   ip [ NEEDSTOP ] {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -354,35 +334,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -402,42 +373,32 @@
     ip [ NEEDSTART ] {
       address = "192.168.1.3";
       monitor_link = "yes";
-      nfslock = "(null)";
     }
     fs [ NEEDSTART ] {
       name = "mount2";
       mountpoint = "/mnt/cluster2";
       device = "/dev/sdb9";
       fstype = "ext3";
-      nfslock = "(null)";
       nfsexport {
         name = "Dummy Export";
         device = "/dev/sdb9";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         nfsclient {
           name = "Admin group";
           target = "@admin";
           path = "/mnt/cluster2";
-          fsid = "(null)";
-          nfslock = "(null)";
           options = "rw";
         }
         nfsclient {
           name = "User group";
           target = "@users";
           path = "/mnt/cluster2";
-          fsid = "(null)";
-          nfslock = "(null)";
           options = "rw,sync";
         }
         nfsclient {
           name = "red";
           target = "red";
           path = "/mnt/cluster2";
-          fsid = "(null)";
-          nfslock = "(null)";
           options = "rw";
         }
       }
@@ -445,12 +406,10 @@
     script [ NEEDSTART ] {
       name = "script2";
       file = "/etc/init.d/script2";
-      service_name = "(null)";
     }
     ip [ NEEDSTART ] {
       address = "192.168.1.4";
       monitor_link = "yes";
-      nfslock = "(null)";
     }
   }
   script [ NEEDSTART ] {
--- cluster/rgmanager/src/daemons/tests/test005.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test005.expected	2007/05/03 15:02:47	1.1.2.4
@@ -26,7 +26,6 @@
   ip {
     address = "192.168.1.2";
     monitor_link = "1";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test006.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test006.expected	2007/05/03 15:02:47	1.1.2.4
@@ -26,7 +26,6 @@
   ip {
     address = "192.168.1.2";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test007.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test007.expected	2007/05/03 15:02:47	1.1.2.4
@@ -26,7 +26,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test008.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test008.expected	2007/05/03 15:02:47	1.1.2.4
@@ -36,7 +36,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test009.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test009.expected	2007/05/03 15:02:47	1.1.2.4
@@ -38,12 +38,10 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
   }
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test010.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test010.expected	2007/05/03 15:02:47	1.1.2.4
@@ -47,12 +47,10 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
   }
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test011.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test011.expected	2007/05/03 15:02:47	1.1.2.4
@@ -97,27 +97,20 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
     }
@@ -125,7 +118,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test012.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test012.expected	2007/05/03 15:02:47	1.1.2.4
@@ -97,35 +97,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
     }
@@ -133,7 +124,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test013.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test013.expected	2007/05/03 15:02:47	1.1.2.4
@@ -97,35 +97,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -133,7 +124,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test014.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test014.expected	2007/05/03 15:02:47	1.1.2.4
@@ -121,35 +121,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -157,7 +148,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -172,35 +162,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "ro";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -208,7 +189,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test015.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test015.expected	2007/05/03 15:02:47	1.1.2.4
@@ -121,35 +121,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -157,7 +148,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -172,35 +162,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -208,7 +189,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test016.expected	2007/03/20 19:40:06	1.1.2.3
+++ cluster/rgmanager/src/daemons/tests/test016.expected	2007/05/03 15:02:47	1.1.2.4
@@ -122,35 +122,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -158,7 +149,6 @@
   ip {
     address = "192.168.1.3";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
@@ -173,35 +163,26 @@
     mountpoint = "/mnt/cluster2";
     device = "/dev/sdb9";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb9";
       path = "/mnt/cluster2";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -209,7 +190,6 @@
   ip {
     address = "192.168.1.4";
     monitor_link = "yes";
-    nfslock = "(null)";
   }
   script {
     name = "initscript";
--- cluster/rgmanager/src/daemons/tests/test017.expected	2007/03/22 23:16:43	1.1.2.1
+++ cluster/rgmanager/src/daemons/tests/test017.expected	2007/05/03 15:02:47	1.1.2.2
@@ -135,35 +135,26 @@
     mountpoint = "/mnt/cluster";
     device = "/dev/sdb8";
     fstype = "ext3";
-    nfslock = "(null)";
     nfsexport {
       name = "Dummy Export";
       device = "/dev/sdb8";
       path = "/mnt/cluster";
-      fsid = "(null)";
-      nfslock = "(null)";
       nfsclient {
         name = "Admin group";
         target = "@admin";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
       nfsclient {
         name = "User group";
         target = "@users";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw,sync";
       }
       nfsclient {
         name = "red";
         target = "red";
         path = "/mnt/cluster";
-        fsid = "(null)";
-        nfslock = "(null)";
         options = "rw";
       }
     }
@@ -183,42 +174,32 @@
     ip {
       address = "192.168.1.3";
       monitor_link = "yes";
-      nfslock = "(null)";
     }
     fs {
       name = "mount2";
       mountpoint = "/mnt/cluster2";
       device = "/dev/sdb9";
       fstype = "ext3";
-      nfslock = "(null)";
       nfsexport {
         name = "Dummy Export";
         device = "/dev/sdb9";
         path = "/mnt/cluster2";
-        fsid = "(null)";
-        nfslock = "(null)";
         nfsclient {
           name = "Admin group";
           target = "@admin";
           path = "/mnt/cluster2";
-          fsid = "(null)";
-          nfslock = "(null)";
           options = "rw";
         }
         nfsclient {
           name = "User group";
           target = "@users";
           path = "/mnt/cluster2";
-          fsid = "(null)";
-          nfslock = "(null)";
           options = "rw,sync";
         }
         nfsclient {
           name = "red";
           target = "red";
           path = "/mnt/cluster2";
-          fsid = "(null)";
-          nfslock = "(null)";
           options = "rw";
         }
       }
@@ -226,12 +207,10 @@
     script {
       name = "script2";
       file = "/etc/init.d/script2";
-      service_name = "(null)";
     }
     ip {
       address = "192.168.1.4";
       monitor_link = "yes";
-      nfslock = "(null)";
     }
   }
   script {
--- cluster/rgmanager/src/resources/fs.sh	2007/02/15 22:46:00	1.4.2.21
+++ cluster/rgmanager/src/resources/fs.sh	2007/05/03 15:02:47	1.4.2.22
@@ -145,7 +145,7 @@
 	    <content type="boolean"/>
 	</parameter>
 
-	<parameter name="nfslock" inherit="nfslock">
+	<parameter name="nfslock" inherit="service%nfslock">
 	    <longdesc lang="en">
 	        If set and unmounting the file system fails, the node will
 		try to kill lockd and issue reclaims across all remaining
--- cluster/rgmanager/src/resources/nfsclient.sh	2007/02/21 20:54:51	1.3.2.11
+++ cluster/rgmanager/src/resources/nfsclient.sh	2007/05/03 15:02:47	1.3.2.12
@@ -95,7 +95,7 @@
             <content type="string"/>
         </parameter>
 
-        <parameter name="nfslock" inherit="nfsexport%nfslock">
+        <parameter name="nfslock" inherit="service%nfslock">
             <longdesc lang="en">
 	    	This tells us whether the service in question has the
 		NFS lock workarounds enabled.  If so, we always unexport
--- cluster/rgmanager/src/resources/nfsexport.sh	2006/06/16 19:57:52	1.4.2.5
+++ cluster/rgmanager/src/resources/nfsexport.sh	2007/05/03 15:02:47	1.4.2.6
@@ -98,7 +98,7 @@
 	    <content type="string"/>
         </parameter>
 
-        <parameter name="nfslock" inherit="nfslock">
+        <parameter name="nfslock" inherit="service%nfslock">
             <longdesc lang="en">
                 If you can see this, your GUI is broken.
 		This inherits an unspecified nfslock parameter so that
--- cluster/rgmanager/src/utils/clulog.c	2006/08/18 20:35:14	1.1.2.2
+++ cluster/rgmanager/src/utils/clulog.c	2007/05/03 15:02:47	1.1.2.3
@@ -123,6 +123,12 @@
     /* Add two bytes for linefeed and NULL terminator */
     len = strlen(argv[argc-1]) + 2;
     logmsg = (char*)malloc(strlen(argv[argc-1])+2);
+    if (logmsg == NULL) {
+        fprintf(stderr,
+            "clulog: malloc fail err=%d\n", errno);
+        exit(0);
+    }
+
     snprintf(logmsg, len, "%s\n", argv[argc-1]);
 
     if (!cmdline_loglevel) {




More information about the Cluster-devel mailing list