FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Cluster Development

 
 
LinkBack Thread Tools
 
Old 11-30-2007, 08:01 PM
 
Default cluster/rgmanager/src clulib/msg_socket.c clul ...

CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh@sourceware.org 2007-11-30 21:01:27

Modified files:
rgmanager/src/clulib: msg_socket.c vft.c
rgmanager/src/daemons: depends.c reslist.c restree.c

Log message:
Merge from RHEL5 branch, pass 3

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/msg_socket.c.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/vft.c.diff?cvsroot=cluster&r1=1.21&r2=1.22
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/depends.c.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/reslist.c.diff?cvsroot=cluster&r1=1.20&r2=1.21
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/restree.c.diff?cvsroot=cluster&r1=1.38&r2=1.39

--- cluster/rgmanager/src/clulib/msg_socket.c 2007/10/26 19:02:43 1.2
+++ cluster/rgmanager/src/clulib/msg_socket.c 2007/11/30 21:01:27 1.3
@@ -44,7 +44,7 @@

memset(&sun, 0, sizeof(sun));
sun.sun_family = PF_LOCAL;
- snprintf(sun.sun_path, sizeof(sun.sun_path), RGMGR_SOCK);
+ snprintf(sun.sun_path, sizeof(sun.sun_path), "%s", RGMGR_SOCK);

sock = socket(PF_LOCAL, SOCK_STREAM, 0);
if (sock < 0) {
--- cluster/rgmanager/src/clulib/vft.c 2007/07/23 20:49:13 1.21
+++ cluster/rgmanager/src/clulib/vft.c 2007/11/30 21:01:27 1.22
@@ -734,7 +734,7 @@
if (!fp)
return -1;

-#if defined(__sparc__) || defined(__sparc64__)
+#if defined(__sparc__) || defined(__hppa__) || defined(__sparc64__) || defined (__hppa64__)
rv = fscanf(fp,"%ld.%d %ld.%d
", &tv->tv_sec, &tv->tv_usec,
&junk.tv_sec, &junk.tv_usec);
#else
@@ -1368,6 +1368,7 @@
{
vf_msg_t *hdrp;
int ret;
+ key_node_t *kn;

if ((nbytes <= 0) || (nbytes < sizeof(generic_msg_hdr)) ||
(msgp->gh_command != VF_MESSAGE))
@@ -1422,8 +1423,13 @@
#endif
pthread_mutex_lock(&key_list_mutex);
vf_buffer_commit(msgp->gh_arg2);
- ret = (vf_resolve_views(kn_find_trans(msgp->gh_arg2)) ?
- VFR_COMMIT : VFR_OK);
+ kn = kn_find_trans(msgp->gh_arg2);
+ if (!kn) {
+ pthread_mutex_unlock(&key_list_mutex);
+ return VFR_OK;
+ }
+
+ ret = (vf_resolve_views(kn) ? VFR_COMMIT : VFR_OK);
pthread_mutex_unlock(&key_list_mutex);
return ret;

--- cluster/rgmanager/src/daemons/depends.c 2007/03/20 17:09:57 1.3
+++ cluster/rgmanager/src/daemons/depends.c 2007/11/30 21:01:27 1.4
@@ -36,6 +36,8 @@
*/
#include <string.h>
#include <list.h>
+#include <time.h>
+#include <restart_counter.h>
#include <clulog.h>
#include <resgroup.h>
#include <reslist.h>
--- cluster/rgmanager/src/daemons/reslist.c 2007/11/30 20:36:17 1.20
+++ cluster/rgmanager/src/daemons/reslist.c 2007/11/30 21:01:27 1.21
@@ -824,7 +824,6 @@
}

if (!found) {
- //printf("No attributes found for %s
", base);
destroy_resource(res);
return NULL;
}
--- cluster/rgmanager/src/daemons/restree.c 2007/11/30 20:36:17 1.38
+++ cluster/rgmanager/src/daemons/restree.c 2007/11/30 21:01:27 1.39
@@ -561,7 +561,6 @@
free(ref);
}

-
curres->r_refs++;

*newnode = node;
@@ -822,7 +821,6 @@
{
resource_node_t *node;
int x, y;
- char *val;

list_do(tree, node) {
for (x = 0; x < level; x++)
@@ -847,14 +845,11 @@
node->rn_resource->r_attrs[x].ra_value; x++) {
for (y = 0; y < level+1; y++)
printf(" ");
-
- val = attr_value(node,
- node->rn_resource->r_attrs[x].ra_name);
- if (!val &&
- node->rn_resource->r_attrs[x].ra_flags&RA_INHERIT)
- continue;
printf("%s = "%s";
",
- node->rn_resource->r_attrs[x].ra_name, val);
+ node->rn_resource->r_attrs[x].ra_name,
+ attr_value(node,
+ node->rn_resource->r_attrs[x].ra_name)
+ );
}

_print_resource_tree(&node->rn_child, level + 1);
@@ -1080,38 +1075,20 @@
if (idx == -1) {
if (node->rn_checked)
return node->rn_last_status;
- return 0;
+ return 0;
}

- /* Clear all check levels lower than us */
- for (x = 0; node->rn_actions[x].ra_name; x++) {
- if (x == idx) {
- node->rn_actions[idx].ra_last = now;
- continue;
- }
- if (strcmp(node->rn_actions[x].ra_name, "status"))
- continue;
-
- if (node->rn_actions[x].ra_depth <
- node->rn_actions[idx].ra_depth)
- node->rn_actions[x].ra_last = now;
- }
-
- /*printf("-> %s:%s %s level %d interval = %d
",
- node->rn_resource->r_rule->rr_type,
- node->rn_resource->r_attrs->ra_value,
- node->rn_actions[idx].ra_name,
- node->rn_actions[idx].ra_depth,
- (int)node->rn_actions[idx].ra_interval);*/
-
- node->rn_actions[idx].ra_last = now;
- x = res_exec(node, RS_STATUS, NULL, node->rn_actions[idx].ra_depth);
-
- node->rn_last_status = x;
- node->rn_last_depth = node->rn_actions[idx].ra_depth;
- node->rn_checked = 1;
- if (x == 0)
- return 0;
+
+ node->rn_actions[idx].ra_last = now;
+ x = res_exec(node, RS_STATUS, NULL, node->rn_actions[idx].ra_depth);
+
+ node->rn_last_status = x;
+ node->rn_last_depth = node->rn_actions[idx].ra_depth;
+ node->rn_checked = 1;
+
+ if (x == 0)
+ return 0;
+
if (!has_recover)
return x;

@@ -1200,7 +1177,6 @@
@param realop Operation to perform if either first is found,
or no first is declared (in which case, all nodes
in the subtree).
- @param node Node we're operating on
@see _res_op_by_level res_exec
*/
static inline int
@@ -1306,9 +1282,23 @@

}

- if (node->rn_child)
- rv |= _res_op_by_level(&node, me?NULL:first, ret, op);
+ if (node->rn_child) {
+ rv |= _res_op_by_level(&node, me?NULL:first, ret, op);

+ /* If one or more child resources are failed and at least one
+ of them is not an independent subtree then let's check if
+ if we are an independent subtree. If so, mark ourself
+ and all our children as failed and return a flag stating
+ that this section is recoverable apart from siblings in
+ the resource tree. */
+ if (op == RS_STATUS && (rv & SFL_FAILURE) &&
+ (node->rn_flags & RF_INDEPENDENT)) {
+ mark_nodes(node, RES_FAILED,
+ RF_NEEDSTART | RF_NEEDSTOP);
+ rv = SFL_RECOVERABLE;
+ }
+ }
+
/* Stop should occur after children have stopped */
if (me && (op == RS_STOP)) {
node->rn_flags &= ~RF_NEEDSTOP;
 

Thread Tools




All times are GMT. The time now is 10:38 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org