[Cluster-devel] cluster/rgmanager ChangeLog src/daemons/restre ...
lhh at sourceware.org
lhh at sourceware.org
Fri Nov 3 16:26:21 UTC 2006
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 at 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 at 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
}
More information about the Cluster-devel
mailing list