All of lore.kernel.org
 help / color / mirror / Atom feed
From: lhh@sourceware.org <lhh@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/rgmanager ChangeLog include/resgroup.h ...
Date: 18 Aug 2006 15:26:25 -0000	[thread overview]
Message-ID: <20060818152625.24927.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	lhh at sourceware.org	2006-08-18 15:26:23

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/include: resgroup.h 
	rgmanager/src/clulib: ckpt_state.c 
	rgmanager/src/daemons: groups.c main.c rg_state.c 
	rgmanager/src/resources: clusterfs.sh fs.sh nfsclient.sh 
	                         ra-api-1-modified.dtd script.sh 

Log message:
	2006-08-18 Lon Hohberger <lhh@redhat.com>
	* include/resgroup.h: Change ordering and add magic field to
	rgmanager state field (warning: breaks compatibility from 08/08 CVS!)
	* src/clulib/ckpt_state.c, src/daemons/rg_state.c: Fix bug
	preventing correct operation of ckpt operation after initial boot.
	Get rid of debug info.
	* src/daemons/groups,c, main.c: Fix #202499 - shutdown while handling
	transitions sometimes allows services to restart (due to not locking
	RGs locally)
	* src/resources/clusterfs.sh, fs.sh, nfsclient.sh: Add proper
	warning messages if status check fails
	* src/resources/ra-api-1-modified.dtd: Allow 'migrate' option

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&r1=1.19&r2=1.20
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/include/resgroup.h.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/ckpt_state.c.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/groups.c.diff?cvsroot=cluster&r1=1.20&r2=1.21
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/main.c.diff?cvsroot=cluster&r1=1.28&r2=1.29
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&r1=1.19&r2=1.20
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/clusterfs.sh.diff?cvsroot=cluster&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/fs.sh.diff?cvsroot=cluster&r1=1.16&r2=1.17
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/nfsclient.sh.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/ra-api-1-modified.dtd.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/script.sh.diff?cvsroot=cluster&r1=1.7&r2=1.8

--- cluster/rgmanager/ChangeLog	2006/08/09 21:48:34	1.19
+++ cluster/rgmanager/ChangeLog	2006/08/18 15:26:21	1.20
@@ -1,3 +1,16 @@
+2006-08-18 Lon Hohberger <lhh@redhat.com>
+	* include/resgroup.h: Change ordering and add magic field to
+	rgmanager state field (warning: breaks compatibility from 08/08 CVS!)
+	* src/clulib/ckpt_state.c, src/daemons/rg_state.c: Fix bug
+	preventing correct operation of ckpt operation after initial boot.
+	Get rid of debug info.
+	* src/daemons/groups,c, main.c: Fix #202499 - shutdown while handling
+	transitions sometimes allows services to restart (due to not locking
+	RGs locally)
+	* src/resources/clusterfs.sh, fs.sh, nfsclient.sh: Add proper
+	warning messages if status check fails
+	* src/resources/ra-api-1-modified.dtd: Allow 'migrate' option
+
 2006-08-08 Lon Hohberger <lhh@redhat.com>
 	* src/clulib/members.c: Fix gained/lost list creation so that the
 	count is actually nonzero (#201713)
--- cluster/rgmanager/include/resgroup.h	2006/07/19 18:43:32	1.12
+++ cluster/rgmanager/include/resgroup.h	2006/08/18 15:26:22	1.13
@@ -27,31 +27,30 @@
  */
 typedef struct {
 	char		rs_name[64];	/**< Service name */
+	uint32_t	rs_id;		/**< Service ID */
+	uint32_t	rs_magic;	/**< Magic ID */
 	uint32_t	rs_owner;	/**< Member ID running service. */
 	uint32_t	rs_last_owner;	/**< Last member to run the service. */
 	uint32_t	rs_state;	/**< State of service. */
 	uint32_t	rs_restarts;	/**< Number of cluster-induced 
 					     restarts */
 	uint64_t	rs_transition;	/**< Last service transition time */
-	uint32_t	rs_id;		/**< Service ID */
-	uint32_t	rs_pad;		/**< pad to 64-bit boundary */
 } rg_state_t;
 
 #define swab_rg_state_t(ptr) \
 {\
+	swab32((ptr)->rs_id);\
+	swab32((ptr)->rs_magic);\
 	swab32((ptr)->rs_owner);\
 	swab32((ptr)->rs_last_owner);\
 	swab32((ptr)->rs_state);\
 	swab32((ptr)->rs_restarts);\
 	swab64((ptr)->rs_transition);\
-	swab32((ptr)->rs_pad);\
 }
 
 
 #define RG_PORT    177
-#define RG_VF_PORT 178
-#define RG_PURPOSE 0x11398fed
-#define RG_SERVICE_GROUP "usrm::manager"
+#define RG_MAGIC   0x11398fed
 
 #define RG_ACTION_REQUEST	/* Message header */ 0x138582
 #define RG_EVENT		0x138583
--- cluster/rgmanager/src/clulib/ckpt_state.c	2006/08/07 22:05:01	1.1
+++ cluster/rgmanager/src/clulib/ckpt_state.c	2006/08/18 15:26:22	1.2
@@ -75,8 +75,10 @@
 {
 	SaCkptCheckpointCreationAttributesT attrs;
 	SaCkptCheckpointOpenFlagsT flags;
+#if 0
 	SaCkptCheckpointDescriptorT status;
-	SaAisErrorT err;
+#endif
+	SaAisErrorT err = SA_AIS_OK;
 	key_node_t *newnode = NULL;
 	
 	newnode = kn_find_key(keyid);
@@ -111,6 +113,7 @@
 				   &newnode->kn_cph);
 
 	if (err == SA_AIS_OK) {
+#if 0
 		saCkptCheckpointStatusGet(newnode->kn_cph,
 					  &status);
 
@@ -141,12 +144,10 @@
 			(int)status.checkpointCreationAttributes.maxSectionIdSize);
 		printf("Section count = %d\n", status.numberOfSections);
 		printf("\n");
-		
+#endif
 		goto good;
 	}
 
-	printf("Retrying w/ create\n");
-
 	attrs.creationFlags = SA_CKPT_WR_ALL_REPLICAS;
 	attrs.checkpointSize = (SaSizeT)maxsize;
 	attrs.retentionDuration = SA_TIME_ONE_HOUR;
@@ -175,7 +176,9 @@
 	newnode->kn_ready = 1;
 	newnode->kn_next = key_list;
 	key_list = newnode;
+#if 0
 	printf("Opened ckpt %s\n", keyid);
+#endif
 
 	return err;
 }
--- cluster/rgmanager/src/daemons/groups.c	2006/07/19 18:43:32	1.20
+++ cluster/rgmanager/src/daemons/groups.c	2006/08/18 15:26:22	1.21
@@ -418,7 +418,7 @@
 	int ret;
 
 	if (rg_locked()) {
-		clulog(LOG_NOTICE,
+		clulog(LOG_DEBUG,
 			"Resource groups locked; not evaluating\n");
 		return -EAGAIN;
 	}
--- cluster/rgmanager/src/daemons/main.c	2006/08/09 21:48:34	1.28
+++ cluster/rgmanager/src/daemons/main.c	2006/08/18 15:26:22	1.29
@@ -792,6 +792,7 @@
 void *
 shutdown_thread(void *arg)
 {
+	rg_lockall(L_SYS);
 	rg_doall(RG_STOP_EXITING, 1, NULL);
 	running = 0;
 
--- cluster/rgmanager/src/daemons/rg_state.c	2006/08/07 22:05:01	1.19
+++ cluster/rgmanager/src/daemons/rg_state.c	2006/08/18 15:26:22	1.20
@@ -306,11 +306,12 @@
 		if (errno == ENOENT) {
 			ds_key_init(res, DS_MIN_SIZE, 10);
 		} else {
+			perror("ds_read");
 			return -1;
 		}
 	}
 
-	if (datalen < 0) {
+	if (datalen <= 0) {
 
 		ret = init_rg(name, svcblk);
 		if (ret < 0) {
@@ -326,6 +327,7 @@
 	}
 
 	memcpy(svcblk, data, sizeof(*svcblk));
+
 	return 0;
 #else
 	membership = member_list();
--- cluster/rgmanager/src/resources/clusterfs.sh	2006/06/02 17:37:10	1.10
+++ cluster/rgmanager/src/resources/clusterfs.sh	2006/08/18 15:26:22	1.11
@@ -889,12 +889,16 @@
 	;;
 status|monitor)
   	isMounted ${OCF_RESKEY_device} ${OCF_RESKEY_mountpoint}
- 	[ $? -ne $YES ] && exit $OCF_ERR_GENERIC
+ 	if [ $? -ne $YES ]; then
+		ocf_log err "fs:${OCF_RESKEY_name}: ${OCF_RESKEY_device} is not mounted on ${OCF_RESKEY_mountpoint}"
+		exit $OCF_ERR_GENERIC
+	fi
 
  	isAlive ${OCF_RESKEY_mountpoint}
- 	[ $? -ne $YES ] && exit $OCF_ERR_GENERIC
- 	
-	exit 0
+ 	[ $? -eq $YES ] && exit 0
+
+	ocf_log err "fs:${OCF_RESKEY_name}: Mount point is not accessible!"
+	exit $OCF_ERR_GENERIC
 	;;
 restart)
 	stopFilesystem
--- cluster/rgmanager/src/resources/fs.sh	2006/06/02 17:37:10	1.16
+++ cluster/rgmanager/src/resources/fs.sh	2006/08/18 15:26:22	1.17
@@ -243,7 +243,7 @@
 {
 	if [ -z "$OCF_RESKEY_mountpoint" ]; then
 		ocf_log err "No mount point specified."
-		return 1
+		return $OCF_ERR_ARGS
 	fi
 
 	if ! [ -e "$OCF_RESKEY_mountpoint" ]; then
@@ -514,7 +514,7 @@
 	dev=$(real_device $1)
 	if [ -z "$dev" ]; then
 		ocf_log err \
-			"isMounted: Could not match $1 with a real device"
+			"fs (isMounted): Could not match $1 with a real device"
 		return $FAIL
 	fi
 	mp=$2
@@ -553,14 +553,14 @@
 	declare rw
 	
 	if [ $# -ne 1 ]; then
-	        logAndPrint $LOG_ERR "Usage: isAlive mount_point"
+	        ocf_log err "Usage: isAlive mount_point"
 		return $FAIL
 	fi
 	mount_point=$1
 	
 	test -d $mount_point
 	if [ $? -ne 0 ]; then
-		logAndPrint $LOG_ERR "$mount_point is not a directory"
+		ocf_log err "fs (isAlive): $mount_point is not a directory"
 		return $FAIL
 	fi
 	
@@ -707,6 +707,7 @@
 	return $ret
 }
 
+
 activeMonitor() {
 	declare monpath=$OCF_RESKEY_mountpoint/.clumanager
 	declare p
@@ -733,7 +734,7 @@
 	case $1 in
 	start)
 		ocf_log info "Starting active monitoring of $OCF_RESKEY_mountpoint"
-		mkdir -p $(dirname $monpath) || return 1
+		mkdir -p $(dirname $monpath) || return $OCF_ERR_GENERIC
 		devmon $args -p $monpath/devmon.data -P $monpath/devmon.pid
 		;;
 	stop)
@@ -794,7 +795,7 @@
 
 	if [ -z "`which quotaon`" ]; then
 		ocf_log err "quotaon not found in $PATH"
-		return 1
+		return $OCF_ERR_GENERIC
 	fi
 
 	for mopt in `echo $opts | sed -e s/,/\ /g`; do
@@ -1211,29 +1212,35 @@
 	;;
 status|monitor)
   	isMounted ${OCF_RESKEY_device} ${OCF_RESKEY_mountpoint}
- 	[ $? -ne $YES ] && exit $OCF_ERR_GENERIC
+ 	if [ $? -ne $YES ]; then
+		ocf_log err "fs:${OCF_RESKEY_name}: ${OCF_RESKEY_device} is not mounted on ${OCF_RESKEY_mountpoint}"
+		exit $OCF_ERR_GENERIC
+	fi
 
 	if [ "$OCF_RESKEY_active_monitor" = "yes" ] ||
 	   [ "$OCF_RESKEY_active_monitor" = "1" ]; then
 
-		activeMonitor status || exit $OCF_ERR_GENERIC
-		exit 0
+	   	activeMonitor status
+		[ $? -eq 0 ] && exit 0
+		ocf_log err "fs:${OCF_RESKEY_name}: Active Monitoring reported a failure"
+		exit $OCF_ERR_GENERIC
 	fi
  	
  	isAlive ${OCF_RESKEY_mountpoint}
- 	[ $? -ne $YES ] && exit $OCF_ERR_GENERIC
- 	
-	exit 0
+ 	[ $? -eq $YES ] && exit 0
+
+	ocf_log err "fs:${OCF_RESKEY_name}: Mount point is not accessible!"
+	exit $OCF_ERR_GENERIC
 	;;
 restart)
 	stopFilesystem
 	if [ $? -ne 0 ]; then
-		exit 1
+		exit $OCF_ERR_GENERIC
 	fi
 
 	startFilesystem
 	if [ $? -ne 0 ]; then
-		exit 1
+		exit $OCF_ERR_GENERIC
 	fi
 
 	exit 0
--- cluster/rgmanager/src/resources/nfsclient.sh	2006/08/02 17:24:31	1.12
+++ cluster/rgmanager/src/resources/nfsclient.sh	2006/08/18 15:26:22	1.13
@@ -320,7 +320,11 @@
 		sed -e 's/*/[*]/g' -e 's/?/[?]/g' -e 's/\./\\./g') 
         exportfs -v | tr -d "\n" | sed -e 's/([^)]*)/\n/g' | grep -q \
 		"^${OCF_RESKEY_path}[\t ]*.*${OCF_RESKEY_target_regexp}" 
+
 	rv=$? 
+	if [ $rv -ne 0 ]; then
+		ocf_log err "nfsclient:$OCF_RESKEY_name is missing!"
+	fi
 	;;
 
 recover)
--- cluster/rgmanager/src/resources/ra-api-1-modified.dtd	2006/07/19 18:43:32	1.3
+++ cluster/rgmanager/src/resources/ra-api-1-modified.dtd	2006/08/18 15:26:22	1.4
@@ -25,7 +25,8 @@
 	primary (1|0)   "0"
 	required (1|0)	"0"
 	inherit CDATA	""
-	unique	(1|0)	"0">
+	unique	(1|0)	"0"
+	reconfig (1|0)  "0">
 
 <!ELEMENT longdesc ANY>
 <!ATTLIST longdesc
@@ -42,7 +43,7 @@
 
 <!ELEMENT action EMPTY>
 <!ATTLIST action
-	name	(start|stop|recover|status|monitor|reload|meta-data|verify-all|migrate)	#REQUIRED
+	name	(start|stop|recover|status|reconfig|monitor|reload|meta-data|verify-all|migrate)	#REQUIRED
 	timeout		CDATA	#REQUIRED
 	interval 	CDATA	#IMPLIED
 	start-delay 	CDATA	#IMPLIED
--- cluster/rgmanager/src/resources/script.sh	2005/11/21 21:48:42	1.7
+++ cluster/rgmanager/src/resources/script.sh	2006/08/18 15:26:23	1.8
@@ -110,4 +110,10 @@
 
 # Don't need to catch return codes; this one will work.
 ocf_log info "Executing ${OCF_RESKEY_file} $1"
-exec /bin/sh ${OCF_RESKEY_file} $1
+${OCF_RESKEY_file} $1
+
+declare -i rv=$?
+if [ $rv -ne 0 ]; then
+	ocf_log err "script:$OCF_RESKEY_name: $1 of $OCF_RESKEY_file failed (returned $rv)"
+	return $OCF_ERR_GENERIC
+fi



             reply	other threads:[~2006-08-18 15:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-18 15:26 lhh [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-09-01 19:02 [Cluster-devel] cluster/rgmanager ChangeLog include/resgroup.h lhh
2006-10-06 21:22 lhh
2007-04-27 18:10 lhh
2007-06-14 13:36 mgrac
2007-06-14 15:06 mgrac
2007-06-26 21:55 lhh
2007-06-27 14:03 lhh
2007-11-30 20:36 lhh
2007-12-14 19:37 lhh
2007-12-30  8:27 fabbione

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060818152625.24927.qmail@sourceware.org \
    --to=lhh@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.