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

lhh at sourceware.org lhh at sourceware.org
Fri Dec 14 19:37:01 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	lhh at sourceware.org	2007-12-14 19:37:00

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/include: resgroup.h 
	rgmanager/src/daemons: rg_state.c service_op.c 

Log message:
	Add return value for inability to run due to exclusive flag being present

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&r1=1.64&r2=1.65
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/include/resgroup.h.diff?cvsroot=cluster&r1=1.25&r2=1.26
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&r1=1.42&r2=1.43
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/service_op.c.diff?cvsroot=cluster&r1=1.1&r2=1.2

--- cluster/rgmanager/ChangeLog	2007/12/12 21:41:32	1.64
+++ cluster/rgmanager/ChangeLog	2007/12/14 19:37:00	1.65
@@ -1,3 +1,7 @@
+2007-12-14 Lon Hohberger <lhh at redhat.com>
+	* Add return code for inability to run because of exclusive 
+	tag
+
 2007-12-12 Lon Hohberger <lhh at redhat.com>
 	* Misc changes; add missing ds.h
 	* src/resources/default*.sl: Make clusvcadm -r go to a different
--- cluster/rgmanager/include/resgroup.h	2007/11/30 21:36:28	1.25
+++ cluster/rgmanager/include/resgroup.h	2007/12/14 19:37:00	1.26
@@ -202,6 +202,8 @@
 int my_id(void);
 
 /* Return codes */
+#define RG_EEXCL	-16		/* Service not runnable due to
+					   inability to start exclusively */
 #define RG_EDOMAIN	-15		/* Service not runnable given the
 					   set of nodes and its failover
 					   domain */
--- cluster/rgmanager/src/daemons/rg_state.c	2007/11/30 21:36:28	1.42
+++ cluster/rgmanager/src/daemons/rg_state.c	2007/12/14 19:37:00	1.43
@@ -2067,7 +2067,7 @@
 		if (check_exclusive_resources(membership, svcName) != 0) {
 			free_member_list(membership);
 			pthread_mutex_unlock(&exclusive_mutex);
-			return RG_EFAIL;
+			return RG_EEXCL;
 		}
 	}
 	free_member_list(membership);
--- cluster/rgmanager/src/daemons/service_op.c	2007/11/30 21:36:28	1.1
+++ cluster/rgmanager/src/daemons/service_op.c	2007/12/14 19:37:00	1.2
@@ -51,6 +51,7 @@
 {
 	int target;
 	int ret, x;
+	int excl = 0, dep = 0, fail = 0;
 	rg_state_t svcStatus;
 	
 	if (get_service_state_internal(svcName, &svcStatus) < 0) {
@@ -74,8 +75,14 @@
 			if (new_owner)
 				*new_owner = svcStatus.rs_owner;
 			return 0;
+		case RG_EEXCL:
+			++excl;
+			continue;
 		case RG_EDEPEND:
+			++dep;
+			continue;
 		case RG_EFAIL:
+			++fail;
 			continue;
 		case RG_EABORT:
 			svc_report_failure(svcName);
@@ -100,7 +107,15 @@
 		}
 	}
 
-	return RG_EFAIL;
+	ret = RG_EFAIL;
+	if (excl == target_list_len) 
+		ret = RG_EEXCL;
+	else if (dep == target_list_len)
+		ret = RG_EDEPEND;
+
+	clulog(LOG_INFO, "Start failed; node reports: %d failures, "
+	       "%d exclusive, %d dependency errors\n", fail, excl, dep);
+	return ret;
 }
 
 




More information about the Cluster-devel mailing list