? clumanager-1.2.35.2-1.2.36.patch
? clumanager-1.2.37-1.src.rpm
? clumanager-1.2.37.tar.gz
? clumanager.spec
? cscope.files
? cscope.out
? librhcm/sizes.h
? src/daemons/.clumembd.c.swp
? src/daemons/clusvcmgrd.c.new
? src/daemons/cscope.files
? src/daemons/cscope.out
? src/daemons/foo.out
? src/iolib/raw/clurawtest
Index: Makefile.top
===================================================================
RCS file: /cvs/devel/clumanager/Makefile.top,v
retrieving revision 1.117
diff -u -r1.117 Makefile.top
--- Makefile.top	10 Jan 2008 17:32:35 -0000	1.117
+++ Makefile.top	12 May 2008 19:43:31 -0000
@@ -1,7 +1,7 @@
 #
 # Make rules
 #
-VERSION = 1.2.37
+VERSION = 1.2.37.1
 CC		= gcc
 CFLAGS  = -Wall -Werror -Wstrict-prototypes -Wshadow -ggdb -fpic\
 	-DVERSION="\"$(VERSION)\"" -pthread $(EXTRA_CFLAGS)
Index: src/daemons/clulockd.c
===================================================================
RCS file: /cvs/devel/clumanager/src/daemons/clulockd.c,v
retrieving revision 1.35
diff -u -r1.35 clulockd.c
--- src/daemons/clulockd.c	10 Jan 2008 17:09:44 -0000	1.35
+++ src/daemons/clulockd.c	12 May 2008 19:43:31 -0000
@@ -334,6 +334,13 @@
 		return msg_send_simple(fd, LOCK_INVALID, 0, 0);
 	}
 
+	/* If the lock isn't held, grant an unlock request */
+	if (locks[lockid].lb_state == 0) {
+		clulog(LOG_DEBUG, "lockd_unlock: unlock of lock %d "
+		       "while not held by anyone\n", lockid);
+		return msg_send_simple(fd, LOCK_ACK, 0, 0);
+	}
+
 	if (locks[lockid].lb_holder.h_node != nodeid) {
 		/* Not holder */
 		/* XXX What if we haven't gotten a nodestate yet? */
Index: src/daemons/clusvcmgrd.c
===================================================================
RCS file: /cvs/devel/clumanager/src/daemons/clusvcmgrd.c,v
retrieving revision 1.70
diff -u -r1.70 clusvcmgrd.c
--- src/daemons/clusvcmgrd.c	10 Jan 2008 19:47:29 -0000	1.70
+++ src/daemons/clusvcmgrd.c	12 May 2008 19:43:31 -0000
@@ -584,7 +584,7 @@
 			clulog(LOG_WARNING, "Setting child to normal priority "
 			       "failed: %s\n", strerror(errno));
 		else
-			clulog(LOG_INFO, "Using normal priority\n");
+			clulog(LOG_DEBUG, "Using normal priority\n");
 	}
 
 	/* lhh - Unblock signals so the user script doesn't break */
Index: src/locklib/clulock.c
===================================================================
RCS file: /cvs/devel/clumanager/src/locklib/clulock.c,v
retrieving revision 1.24
diff -u -r1.24 clulock.c
--- src/locklib/clulock.c	11 Nov 2005 20:33:30 -0000	1.24
+++ src/locklib/clulock.c	12 May 2008 19:43:31 -0000
@@ -134,17 +134,21 @@
 	fd = msg_open_local(PROCID_CLULOCKD, 10);
 	if (fd == -1) {
 		fd = msg_open(PROCID_CLULOCKD, -1);
-		if (fd == -1) 
+		if (fd == -1) {
+			errno = EAGAIN;
 			return -1;
+		}
 	}
 
 	if (msg_send_simple(fd, LOCK_MASTER_QUERY, 0, 0) == -1) {
 		msg_close(fd);
+		errno = EAGAIN;
 		return -1;
 	}
 
 	if (msg_receive_timeout(fd, &resp, sizeof(resp), 15) != sizeof(resp)) {
 		msg_close(fd);
+		errno = EAGAIN;
 		return -1;
 	}
 
@@ -174,7 +178,7 @@
 	if (_keeper == -1) {
 		_keeper = lock_keeper();
 		if (_keeper == -1) {
-			errno = ENOLCK;
+			/* return errno from lock_keeper */
 			return -1;
 		}
 	}
@@ -314,7 +318,8 @@
 		   Otherwise, retry forever. */
 		ret = lock_send(pc, lock, LOCK_UNLOCK);
 
-		if (ret < 0 && errno == EAGAIN) {
+		/* Retry in all cases unless we've lost quorum */
+		if (ret < 0 && errno != ENOLCK) {
 			/*sleep(1);*/
 			continue;
 		}
