[Cluster-devel] cluster/rgmanager ChangeLog src/daemons/rg_for ...

lhh at sourceware.org lhh at sourceware.org
Wed Sep 27 18:58:54 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	lhh at sourceware.org	2006-09-27 18:58:53

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: rg_forward.c rg_thread.c 

Log message:
	Fix 202498

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&r1=1.26&r2=1.27
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_forward.c.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_thread.c.diff?cvsroot=cluster&r1=1.14&r2=1.15

--- cluster/rgmanager/ChangeLog	2006/09/27 16:32:13	1.26
+++ cluster/rgmanager/ChangeLog	2006/09/27 18:58:53	1.27
@@ -13,7 +13,7 @@
 	the "local" flag).  Fix node ID type.
 	* src/daemons/fo_domain.c: Fix node ID type, fix shadow declaration
 	of member_online
-	* src/daemons/sgroups.c: Unfix logic error that wasn't broken in the
+	* src/daemons/groups.c: Unfix logic error that wasn't broken in the
 	first place.
 	* src/daemons/main.c: Fix node ID types.  Add fourth ("clean")
 	param to node_event* to decide whether a node death is clean or not.
@@ -25,6 +25,8 @@
 	* src/utils/clustat.c: Fix logic error preventing nodes from properly
 	being flagged.  Apply patch from Fabio M. Di Nitto to fix bug where
 	clustat -s foo wasn't getting expanded to service:foo
+	* src/daemons/rg_forward.c, rg_thread.c: Make forwarding of enable
+	to specified target node work (#202498)
 
 2006-09-01 Lon Hohberger <lhh at redhat.com>
 	* include/resgroup.h: Add proto for rg_strerror
--- cluster/rgmanager/src/daemons/rg_forward.c	2006/08/07 22:05:01	1.6
+++ cluster/rgmanager/src/daemons/rg_forward.c	2006/09/27 18:58:53	1.7
@@ -27,7 +27,7 @@
 
 
 void
-build_message(SmMessageSt *msgp, int action, char *svcName, uint64_t target)
+build_message(SmMessageSt *msgp, int action, char *svcName, int target)
 {
 	msgp->sm_hdr.gh_magic = GENERIC_HDR_MAGIC;
 	msgp->sm_hdr.gh_command = RG_ACTION_REQUEST;
@@ -71,10 +71,18 @@
 	/* Construct message */
 	build_message(&msg, req->rr_request, req->rr_group, req->rr_target);
 
-	/* 
+	if (rgs.rs_owner == 0)
+		rgs.rs_owner = req->rr_target;
+	if (rgs.rs_owner == 0) {
+		msg_close(req->rr_resp_ctx);
+		msg_free_ctx(req->rr_resp_ctx);
+		rq_free(req);
+		clulog(LOG_ERR, "Attempt to forward to invalid node ID\n");
+		pthread_exit(NULL);
+	}
+
 	clulog(LOG_DEBUG, "Forwarding %s request to %d\n",
-	       rg_req_str(req->rr_request), (int)rgs.rs_owner);
-	 */
+	       rg_req_str(req->rr_request), rgs.rs_owner);
 
 	if (msg_open(MSG_CLUSTER, rgs.rs_owner, RG_PORT, &ctx, 10) < 0)  {
 		msg_close(req->rr_resp_ctx);
--- cluster/rgmanager/src/daemons/rg_thread.c	2006/07/19 18:43:32	1.14
+++ cluster/rgmanager/src/daemons/rg_thread.c	2006/09/27 18:58:53	1.15
@@ -232,8 +232,14 @@
 							req->rr_request);
 			break;
 
-		case RG_START:
 		case RG_ENABLE:
+			if (req->rr_target != 0 &&
+			    req->rr_target != my_id()) {
+				error = RG_EFORWARD;
+				ret = RG_NONE;
+				break;
+			}
+		case RG_START:
 			error = handle_start_req(myname, req->rr_request,
 						 &newowner);
 			break;
@@ -431,7 +437,6 @@
 		    (req->rr_resp_ctx)) {
 			send_response(error, req);
 		}
-
 		
 		rq_free(req);
 	}




More information about the Cluster-devel mailing list