cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/restre ...
@ 2007-08-30 16:05 lhh
  0 siblings, 0 replies; 4+ messages in thread
From: lhh @ 2007-08-30 16:05 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL51
Changes by:	lhh at sourceware.org	2007-08-30 16:05:14

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: restree.c rg_state.c 

Log message:
	Fix #229650, pass 3

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL51&r1=1.31.2.19.2.3&r2=1.31.2.19.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/restree.c.diff?cvsroot=cluster&only_with_tag=RHEL51&r1=1.23.2.8.2.2&r2=1.23.2.8.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL51&r1=1.24.2.10.2.2&r2=1.24.2.10.2.3

--- cluster/rgmanager/ChangeLog	2007/08/02 14:47:45	1.31.2.19.2.3
+++ cluster/rgmanager/ChangeLog	2007/08/30 16:05:14	1.31.2.19.2.4
@@ -1,3 +1,7 @@
+2007-08-30 Lon Hohberger <lhh@redhat.com>
+       * src/daemons/restree.c, rg_state.c: Fix tree-restart bug
+       This is another part of #229650
+
 2007-08-02 Lon Hohberger <lhh@redhat.com>
 	* general: More fixes around #248727
 	* include/reslist.h, src/daemons/restree.c: Make last-value be
--- cluster/rgmanager/src/daemons/restree.c	2007/08/02 14:47:45	1.23.2.8.2.2
+++ cluster/rgmanager/src/daemons/restree.c	2007/08/30 16:05:14	1.23.2.8.2.3
@@ -954,20 +954,17 @@
 		return _res_op(&node->rn_child, first, NULL, ret, op);
 
 	if (op == RS_START || op == RS_STATUS) {
-		rv =  _do_child_levels(tree, first, ret, op);
+		rv |= _do_child_levels(tree, first, ret, op);
 	       	if (rv & SFL_FAILURE)
 			return rv;
 
 		/* Start default level after specified ones */
-		rv =  _do_child_default_level(tree, first, ret, op);
+		rv |= _do_child_default_level(tree, first, ret, op);
 
 	} /* stop */ else {
 
-		rv =  _do_child_default_level(tree, first, ret, op);
-	       	if (rv != 0)
-			return rv;
-
-		rv =  _do_child_levels(tree, first, ret, op);
+		rv |= _do_child_default_level(tree, first, ret, op);
+		rv |= _do_child_levels(tree, first, ret, op);
 	}
 
 	return rv;
@@ -1245,22 +1242,8 @@
 
 	}
 
-	if (node->rn_child) {
-		rv = _res_op_by_level(&node, me?NULL:first, ret, op);
-		if (rv != 0) {
-			mark_nodes(node, RES_FAILED,
-				   RF_NEEDSTART | RF_NEEDSTOP);
-
-			/* If this node is independent of its siblings,
-			   that one of its dependent children failed
-			   does not matter: its dependent children must
-			   also be independent of this node's siblings. */
-			if (node->rn_flags & RF_INDEPENDENT)
-				return SFL_RECOVERABLE;
-
-			return SFL_FAILURE;
-		}
-	}
+	if (node->rn_child)
+		rv |= _res_op_by_level(&node, me?NULL:first, ret, op);
 
 	/* Stop should occur after children have stopped */
 	if (me && (op == RS_STOP)) {
--- cluster/rgmanager/src/daemons/rg_state.c	2007/08/02 14:47:45	1.24.2.10.2.2
+++ cluster/rgmanager/src/daemons/rg_state.c	2007/08/30 16:05:14	1.24.2.10.2.3
@@ -1130,10 +1130,13 @@
 static inline int
 handle_started_status(char *svcName, int ret, rg_state_t *svcStatus)
 {
+	int newowner;
+
 	if (ret & SFL_FAILURE) {
-		ret = msvc_check_cluster(svcName);
-		if (ret >= 0)
-			return 1;
+		newowner = msvc_check_cluster(svcName);
+		if (newowner >= 0)
+			return 0; /* running but not here */
+		return ret;	  /* not running anymore */
 	}
 
 	/* Ok, we have a recoverable service.  Try to perform



^ permalink raw reply	[flat|nested] 4+ messages in thread
* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/restre ...
@ 2007-08-30 16:09 lhh
  0 siblings, 0 replies; 4+ messages in thread
From: lhh @ 2007-08-30 16:09 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	lhh at sourceware.org	2007-08-30 16:09:39

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: restree.c rg_state.c 

Log message:
	Fix #229650, pass 3

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&r1=1.58&r2=1.59
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/restree.c.diff?cvsroot=cluster&r1=1.36&r2=1.37
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&r1=1.39&r2=1.40

--- cluster/rgmanager/ChangeLog	2007/08/22 14:02:28	1.58
+++ cluster/rgmanager/ChangeLog	2007/08/30 16:09:38	1.59
@@ -1,3 +1,7 @@
+2007-08-30 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/restree.c, rg_state.c: Fix tree-restart bug
+	This is another part of #229650
+
 2007-08-22 Fabio M. Di Nitto <fabbione@ubuntu.com>
 	* include/list.h: Fix build with gcc-4.2.
 
--- cluster/rgmanager/src/daemons/restree.c	2007/08/02 14:53:38	1.36
+++ cluster/rgmanager/src/daemons/restree.c	2007/08/30 16:09:39	1.37
@@ -959,20 +959,17 @@
 		return _res_op(&node->rn_child, first, NULL, ret, op);
 
 	if (op == RS_START || op == RS_STATUS) {
-		rv =  _do_child_levels(tree, first, ret, op);
+		rv |= _do_child_levels(tree, first, ret, op);
 	       	if (rv & SFL_FAILURE)
 			return rv;
 
 		/* Start default level after specified ones */
-		rv =  _do_child_default_level(tree, first, ret, op);
+		rv |= _do_child_default_level(tree, first, ret, op);
 
 	} /* stop */ else {
 
-		rv =  _do_child_default_level(tree, first, ret, op);
-	       	if (rv != 0)
-			return rv;
-
-		rv =  _do_child_levels(tree, first, ret, op);
+		rv |= _do_child_default_level(tree, first, ret, op);
+		rv |= _do_child_levels(tree, first, ret, op);
 	}
 
 	return rv;
@@ -1269,22 +1266,8 @@
 
 	}
 
-	if (node->rn_child) {
-		rv = _res_op_by_level(&node, me?NULL:first, ret, op);
-		if (rv != 0) {
-			mark_nodes(node, RES_FAILED,
-				   RF_NEEDSTART | RF_NEEDSTOP);
-
-			/* If this node is independent of its siblings,
-			   that one of its dependent children failed
-			   does not matter: its dependent children must
-			   also be independent of this node's siblings. */
-			if (node->rn_flags & RF_INDEPENDENT)
-				return SFL_RECOVERABLE;
-
-			return SFL_FAILURE;
-		}
-	}
+	if (node->rn_child)
+		rv |= _res_op_by_level(&node, me?NULL:first, ret, op);
 
 	/* Stop should occur after children have stopped */
 	if (me && (op == RS_STOP)) {
--- cluster/rgmanager/src/daemons/rg_state.c	2007/08/02 14:53:38	1.39
+++ cluster/rgmanager/src/daemons/rg_state.c	2007/08/30 16:09:39	1.40
@@ -1151,10 +1151,13 @@
 static inline int
 handle_started_status(char *svcName, int ret, rg_state_t *svcStatus)
 {
+	int newowner;
+
 	if (ret & SFL_FAILURE) {
-		ret = msvc_check_cluster(svcName);
-		if (ret >= 0)
-			return 1;
+		newowner = msvc_check_cluster(svcName);
+		if (newowner >= 0)
+			return 0; /* running but not here */
+		return ret;	  /* not running anymore */
 	}
 
 	/* Ok, we have a recoverable service.  Try to perform



^ permalink raw reply	[flat|nested] 4+ messages in thread
* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/restre ...
@ 2007-08-30 16:03 lhh
  0 siblings, 0 replies; 4+ messages in thread
From: lhh @ 2007-08-30 16:03 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	lhh at sourceware.org	2007-08-30 16:03:03

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: restree.c rg_state.c 

Log message:
	Fix #229650, pass 3

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.31.2.25&r2=1.31.2.26
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/restree.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.23.2.10&r2=1.23.2.11
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.24.2.12&r2=1.24.2.13

--- cluster/rgmanager/ChangeLog	2007/08/15 18:41:10	1.31.2.25
+++ cluster/rgmanager/ChangeLog	2007/08/30 16:03:02	1.31.2.26
@@ -1,3 +1,7 @@
+2007-08-30 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/restree.c, rg_state.c: Fix tree-restart bug
+	This is another part of #229650
+
 2007-08-15 Lon Hohberger <lhh@redhat.com>
 	* src/utils/clustat.c: Remove uninitialized var & fix logic /
 	spotted by Ryan McCabe
--- cluster/rgmanager/src/daemons/restree.c	2007/08/02 14:46:51	1.23.2.10
+++ cluster/rgmanager/src/daemons/restree.c	2007/08/30 16:03:03	1.23.2.11
@@ -954,20 +954,17 @@
 		return _res_op(&node->rn_child, first, NULL, ret, op);
 
 	if (op == RS_START || op == RS_STATUS) {
-		rv =  _do_child_levels(tree, first, ret, op);
+		rv |= _do_child_levels(tree, first, ret, op);
 	       	if (rv & SFL_FAILURE)
 			return rv;
 
 		/* Start default level after specified ones */
-		rv =  _do_child_default_level(tree, first, ret, op);
+		rv |= _do_child_default_level(tree, first, ret, op);
 
 	} /* stop */ else {
 
-		rv =  _do_child_default_level(tree, first, ret, op);
-	       	if (rv != 0)
-			return rv;
-
-		rv =  _do_child_levels(tree, first, ret, op);
+		rv |= _do_child_default_level(tree, first, ret, op);
+		rv |= _do_child_levels(tree, first, ret, op);
 	}
 
 	return rv;
@@ -1245,22 +1242,8 @@
 
 	}
 
-	if (node->rn_child) {
-		rv = _res_op_by_level(&node, me?NULL:first, ret, op);
-		if (rv != 0) {
-			mark_nodes(node, RES_FAILED,
-				   RF_NEEDSTART | RF_NEEDSTOP);
-
-			/* If this node is independent of its siblings,
-			   that one of its dependent children failed
-			   does not matter: its dependent children must
-			   also be independent of this node's siblings. */
-			if (node->rn_flags & RF_INDEPENDENT)
-				return SFL_RECOVERABLE;
-
-			return SFL_FAILURE;
-		}
-	}
+	if (node->rn_child)
+		rv |= _res_op_by_level(&node, me?NULL:first, ret, op);
 
 	/* Stop should occur after children have stopped */
 	if (me && (op == RS_STOP)) {
--- cluster/rgmanager/src/daemons/rg_state.c	2007/08/02 14:46:51	1.24.2.12
+++ cluster/rgmanager/src/daemons/rg_state.c	2007/08/30 16:03:03	1.24.2.13
@@ -1130,10 +1130,13 @@
 static inline int
 handle_started_status(char *svcName, int ret, rg_state_t *svcStatus)
 {
+	int newowner;
+
 	if (ret & SFL_FAILURE) {
-		ret = msvc_check_cluster(svcName);
-		if (ret >= 0)
-			return 1;
+		newowner = msvc_check_cluster(svcName);
+		if (newowner >= 0)
+			return 0; /* running but not here */
+		return ret;	  /* not running anymore */
 	}
 
 	/* Ok, we have a recoverable service.  Try to perform



^ permalink raw reply	[flat|nested] 4+ messages in thread
* [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/restre ...
@ 2006-11-03 16:26 lhh
  0 siblings, 0 replies; 4+ messages in thread
From: lhh @ 2006-11-03 16:26 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	lhh at sourceware.org	2006-11-03 16:26:19

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: restree.c rg_thread.c 
	rgmanager/src/resources: fs.sh 

Log message:
	Fix #213246 (Patch by Jeff Layton), #213312

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.23&r2=1.5.2.24
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/restree.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.10.2.12&r2=1.10.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_thread.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.7.2.6&r2=1.7.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/fs.sh.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.4.2.17&r2=1.4.2.18

--- cluster/rgmanager/ChangeLog	2006/10/05 17:52:27	1.5.2.23
+++ cluster/rgmanager/ChangeLog	2006/11/03 16:26:18	1.5.2.24
@@ -1,3 +1,9 @@
+2006-11-03 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/restree.c: Merge patch from Jeff Layton to instrument
+	res_exec more closely. (#213246)
+	* src/daemons/rg_thread.c: Fix segfault caused by improper loop 
+	semantics (#213312)
+
 2006-10-05 Lon Hohberger <lhh@redhat.com>
 	* src/clulib/clulog.c: Change stdout/stderr to nonblocking (#207144
 	part 1)
--- cluster/rgmanager/src/daemons/restree.c	2006/09/21 18:03:30	1.10.2.12
+++ cluster/rgmanager/src/daemons/restree.c	2006/11/03 16:26:18	1.10.2.13
@@ -340,18 +340,30 @@
 	resource_t *res = node->rn_resource;
 	char fullpath[2048];
 
-	if (!res->r_rule->rr_agent)
+	if (!res->r_rule->rr_agent) {
+		clulog(LOG_DEBUG,
+		       "%s on %s \"%s\" no rr_agent\n",
+		       res_ops[op], res->r_rule->rr_type,
+		       res->r_attrs->ra_value);
 		return 0;
+	}
 
 #ifdef DEBUG
 	env = build_env(node, op);
-	if (!env)
+	if (!env) {
+		clulog(LOG_DEBUG,
+		       "%s on %s \"%s\" build_env failed %d\n",
+		       res_ops[op], res->r_rule->rr_type,
+		       res->r_attrs->ra_value, errno);
 		return -errno;
+	}
 #endif
 
 	childpid = fork();
-	if (childpid < 0)
+	if (childpid < 0) {
+		clulog(LOG_ERR, "%s: fork failed (%d)!\n", __func__, errno);
 		return -errno;
+	}
 
 	if (!childpid) {
 		/* Child */ 
@@ -368,8 +380,13 @@
 		env = build_env(node, op, depth);
 #endif
 
-		if (!env)
+		if (!env) {
+			clulog(LOG_DEBUG,
+		       		"%s on %s \"%s\" build_env failed (ENOMEM)\n",
+		       		res_ops[op], res->r_rule->rr_type,
+		       		res->r_attrs->ra_value);
 			exit(-ENOMEM);
+		}
 
 		if (res->r_rule->rr_agent[0] != '/')
 			snprintf(fullpath, sizeof(fullpath), "%s/%s",
@@ -399,7 +416,13 @@
 
 		if (ret) {
 			clulog(LOG_NOTICE,
-			       "%s on %s \"%s\" returned %d (%s)\n",
+			       "%s on %s:%s returned %d (%s)\n",
+			       res_ops[op], res->r_rule->rr_type,
+			       res->r_attrs->ra_value, ret,
+			       ocf_strerror(ret));
+		} else {
+			clulog(LOG_DEBUG,
+			       "%s on %s:%s returned %d (%s)\n",
 			       res_ops[op], res->r_rule->rr_type,
 			       res->r_attrs->ra_value, ret,
 			       ocf_strerror(ret));
@@ -411,6 +434,11 @@
 	if (!WIFSIGNALED(ret))
 		assert(0);
 
+	clulog(LOG_ERR,
+	       "%s on %s:%s caught signal %d\n",
+	       res_ops[op], res->r_rule->rr_type,
+	       res->r_attrs->ra_value, WTERMSIG(ret));
+
 	return -EFAULT;
 }
 
--- cluster/rgmanager/src/daemons/rg_thread.c	2006/05/12 21:28:31	1.7.2.6
+++ cluster/rgmanager/src/daemons/rg_thread.c	2006/11/03 16:26:18	1.7.2.7
@@ -110,18 +110,22 @@
 purge_status_checks(request_t **list)
 {
 	request_t *curr;
+	int found;
 	
 	if (!list)
 		return;
 
-	list_do(list, curr) {
-		if (curr->rr_request != RG_STATUS)
-			continue;
-
-		list_remove(list, curr);
-		rq_free(curr);
-		curr = *list;
-	} while (!list_done(list, curr));
+	do {
+		found = 0;
+		list_do(list, curr) {
+			if (curr->rr_request == RG_STATUS) {
+				list_remove(list, curr);
+				rq_free(curr);
+				found = 1;
+				break;
+			}
+		} while (!list_done(list, curr));
+	} while (found);
 }
 
 
--- cluster/rgmanager/src/resources/fs.sh	2006/10/20 20:34:25	1.4.2.17
+++ cluster/rgmanager/src/resources/fs.sh	2006/11/03 16:26:19	1.4.2.18
@@ -530,8 +530,8 @@
 			# place
 			#
 			if [ -n "$tmp_mp"  -a "$tmp_mp"  != "$mp" ]; then
-				ocf_log warn "\
-Device $dev is mounted on $tmp_mp instead of $mp"
+				ocf_log warn \
+"Device $dev is mounted on $tmp_mp instead of $mp"
 			fi
 			return $YES
 		fi
@@ -788,6 +788,7 @@
 enable_fs_quotas()
 {
 	declare -i need_check=0
+	declare -i rv
 	declare quotaopts=""
 	declare mopt
 	declare opts=$1
@@ -835,8 +836,13 @@
 	ocf_log info "Enabling Quotas on $mp"
 	ocf_log debug "quotaon -$quotaopts $mp"
 	quotaon -$quotaopts $mp
+	rv=$?
+	if [ $rv -ne 0 ]; then
+		# Just a warning
+		ocf_log warn "Unable to turn on quotas for $mp; return = $rv"
+	fi
 
-	return $?
+	return $rv
 }
 
 



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-08-30 16:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-30 16:05 [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/restre lhh
  -- strict thread matches above, loose matches on Subject: below --
2007-08-30 16:09 lhh
2007-08-30 16:03 lhh
2006-11-03 16:26 lhh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).