Send Linux-ha-cvs mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs
or, via email, send a message with subject or body 'help' to
[EMAIL PROTECTED]
You can reach the person managing the list at
[EMAIL PROTECTED]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Linux-ha-cvs digest..."
Today's Topics:
1. Linux-HA CVS: lib by davidlee from
([email protected])
2. Linux-HA CVS: crm by andrew from
([email protected])
----------------------------------------------------------------------
Message: 1
Date: Tue, 21 Mar 2006 07:01:16 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: lib by davidlee from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : davidlee
Host :
Project : linux-ha
Module : lib
Dir : linux-ha/lib/clplumbing
Modified Files:
GSource.c
Log Message:
alignment patch (bugzilla 1114; email thread 'proposed patch', 10th March 2006)
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/lib/clplumbing/GSource.c,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -3 -r1.79 -r1.80
--- GSource.c 8 Mar 2006 22:22:01 -0000 1.79
+++ GSource.c 21 Mar 2006 14:01:15 -0000 1.80
@@ -1,4 +1,4 @@
-/* $Id: GSource.c,v 1.79 2006/03/08 22:22:01 andrew Exp $ */
+/* $Id: GSource.c,v 1.80 2006/03/21 14:01:15 davidlee Exp $ */
/*
* Copyright (c) 2002 Alan Robertson <[EMAIL PROTECTED]>
*
@@ -64,12 +64,35 @@
unsigned magno; /* Magic number */ \
long maxdispatchms; /* Time limit for dispatch function */ \
long maxdispatchdelayms; /* Max delay before processing */ \
-longclock_t detecttime; /* Time last input detected */ \
+char detecttime[sizeof(longclock_t)]; \
+ /* Time last input detected */ \
void* udata; /* User-defined data */ \
guint gsourceid; /* Source id of this source */ \
const char * description; /* Description of this source */ \
GDestroyNotify dnotify
+/*
+ * On architectures with alignment constraints, our casting between
+ * "(GSource*)" and "(GFDSource_s*)" etc. causes trouble, because of
+ * the massive alignment requirements of "longclock_t".
+ *
+ * Use the following to store and fetch.
+ */
+static
+void
+lc_store(char *destptr, longclock_t value) {
+ longclock_t _ltt;
+ _ltt = value;
+ memcpy((destptr), &_ltt, sizeof(longclock_t));
+}
+
+static
+longclock_t
+lc_fetch(char *ptr) {
+ longclock_t _ltt;
+ memcpy(&_ltt, (ptr), sizeof(longclock_t));
+ return _ltt;
+}
struct GFDSource_s {
COMMON_STRUCTSTART;
@@ -140,12 +163,14 @@
#define CHECK_DISPATCH_DELAY(i) {
\
unsigned long ms; \
+ longclock_t dettime; \
dispstart = time_longclock(); \
- ms = longclockto_ms(sub_longclock(dispstart,(i)->detecttime)); \
+ dettime = lc_fetch((i)->detecttime); \
+ ms = longclockto_ms(sub_longclock(dispstart,dettime)); \
if ((i)->maxdispatchdelayms > 0 \
&& ms > (i)->maxdispatchdelayms) { \
WARN_DELAY(ms, (i)); \
- EXPLAINDELAY(dispstart, (i)->detecttime); \
+ EXPLAINDELAY(dispstart, dettime); \
} \
}
@@ -156,7 +181,7 @@
if ((i)->maxdispatchms > 0 && ms > (i)->maxdispatchms) { \
WARN_TOOLONG(ms, (i)); \
} \
- (i)->detecttime = zero_longclock; \
+ lc_store(((i)->detecttime), zero_longclock); \
}
#define WARN_TOOMUCH(ms, input) cl_log(LOG_WARNING
\
@@ -236,7 +261,7 @@
ret->gpfd.events = DEF_EVENTS;
ret->gpfd.revents = 0;
ret->dnotify = notify;
- ret->detecttime = zero_longclock;
+ lc_store((ret->detecttime), zero_longclock);
g_source_add_poll(source, &ret->gpfd);
@@ -310,7 +335,7 @@
GFDSource* fdp = (GFDSource*)source;
g_assert(IS_FDSOURCE(fdp));
if (fdp->gpfd.revents) {
- fdp->detecttime = time_longclock();
+ lc_store((fdp->detecttime), time_longclock());
return TRUE;
}
return FALSE;
@@ -421,7 +446,7 @@
chp->magno = MAG_GCHSOURCE;
chp->maxdispatchdelayms = DEFAULT_MAXDELAY;
chp->maxdispatchms = DEFAULT_MAXDISPATCH;
- chp->detecttime = zero_longclock;
+ lc_store((chp->detecttime), zero_longclock);
chp->ch = ch;
chp->dispatch = dispatch;
chp->udata=userdata;
@@ -550,7 +575,7 @@
}
ret = chp->ch->ops->is_message_pending(chp->ch);
if (ret) {
- chp->detecttime = time_longclock();
+ lc_store((chp->detecttime), time_longclock());
}
CHECKEND(chp);
return ret;
@@ -582,7 +607,7 @@
|| (!chp->fd_fdx && chp->outfd.revents != 0)
|| chp->ch->ops->is_message_pending(chp->ch));
if (ret) {
- chp->detecttime = time_longclock();
+ lc_store((chp->detecttime), time_longclock());
}
CHECKEND(chp);
return ret;
@@ -733,7 +758,7 @@
wcp->magno = MAG_GWCSOURCE;
wcp->maxdispatchdelayms = DEFAULT_MAXDELAY;
wcp->maxdispatchms = DEFAULT_MAXDISPATCH;
- wcp->detecttime = zero_longclock;
+ lc_store((wcp->detecttime), zero_longclock);
wcp->udata = userdata;
wcp->gpfd.fd = wch->ops->get_select_fd(wch);
wcp->gpfd.events = DEF_EVENTS;
@@ -809,7 +834,7 @@
g_assert(IS_WCSOURCE(wcp));
if (wcp->gpfd.revents != 0) {
- wcp->detecttime = time_longclock();
+ lc_store((wcp->detecttime), time_longclock());
return TRUE;
}
return FALSE;
@@ -1019,15 +1044,17 @@
clock_t diff;
/* detecttime is reset in the dispatch function */
- if (cmp_longclock(sig_src->detecttime, zero_longclock) != 0) {
+ if (cmp_longclock(lc_fetch(sig_src->detecttime),
zero_longclock) != 0) {
cl_log(LOG_ERR, "%s: detecttime already set?",
__FUNCTION__);
return TRUE;
}
/* Otherwise, this is when it was first detected */
now = times(&dummy_tms_struct);
diff = now - sig_src->sh_detecttime; /* How long since
signal occurred? */
- sig_src->detecttime
- = sub_longclock(time_longclock(), (longclock_t)diff);
+ lc_store(
+ sig_src->detecttime,
+ sub_longclock(time_longclock(), (longclock_t)diff)
+ );
return TRUE;
}
return FALSE;
@@ -1049,14 +1076,16 @@
static struct tms dummy_tms_struct;
clock_t now;
clock_t diff;
- if (cmp_longclock(sig_src->detecttime, zero_longclock) != 0){
+ if (cmp_longclock(lc_fetch(sig_src->detecttime),
zero_longclock) != 0){
return TRUE;
}
/* Otherwise, this is when it was first detected */
now = times(&dummy_tms_struct);
diff = now - sig_src->sh_detecttime;
- sig_src->detecttime
- = sub_longclock(time_longclock(), (longclock_t)diff);
+ lc_store(
+ sig_src->detecttime,
+ sub_longclock(time_longclock(), (longclock_t)diff)
+ );
return TRUE;
}
return FALSE;
@@ -1265,7 +1294,7 @@
trig_src->dispatch = dispatch;
trig_src->udata = userdata;
trig_src->dnotify = notify;
- trig_src->detecttime = zero_longclock;
+ lc_store((trig_src->detecttime), zero_longclock);
trig_src->manual_trigger = FALSE;
@@ -1303,7 +1332,7 @@
g_assert(IS_TRIGSOURCE(trig_src));
trig_src->manual_trigger = TRUE;
- trig_src->detecttime = time_longclock();
+ lc_store((trig_src->detecttime), time_longclock());
}
@@ -1335,8 +1364,8 @@
if (trig_src->manual_trigger
- && cmp_longclock(trig_src->detecttime, zero_longclock) == 0) {
- trig_src->detecttime = time_longclock();
+ && cmp_longclock(lc_fetch(trig_src->detecttime), zero_longclock)
== 0) {
+ lc_store((trig_src->detecttime), time_longclock());
}
return trig_src->manual_trigger;
}
@@ -1353,8 +1382,8 @@
g_assert(IS_TRIGSOURCE(trig_src));
if (trig_src->manual_trigger
- && cmp_longclock(trig_src->detecttime, zero_longclock) == 0) {
- trig_src->detecttime = time_longclock();
+ && cmp_longclock(lc_fetch(trig_src->detecttime), zero_longclock)
== 0) {
+ lc_store((trig_src->detecttime), time_longclock());
}
return trig_src->manual_trigger;
}
@@ -1383,7 +1412,7 @@
}
CHECK_DISPATCH_TIME(trig_src);
}
- trig_src->detecttime = zero_longclock;
+ lc_store((trig_src->detecttime), zero_longclock);
return TRUE;
}
@@ -1468,7 +1497,7 @@
append->maxdispatchms = DEFAULT_MAXDISPATCH;
append->maxdispatchdelayms = DEFAULT_MAXDELAY;
append->description = "(timeout)";
- append->detecttime = zero_longclock;
+ lc_store((append->detecttime), zero_longclock);
append->udata = NULL;
append->nexttime = add_longclock(time_longclock()
@@ -1549,7 +1578,7 @@
gboolean ret;
g_assert(IS_TIMEOUTSRC(append));
- append->detecttime = append->nexttime;
+ lc_store(append->detecttime, append->nexttime);
CHECK_DISPATCH_DELAY(append);
------------------------------
Message: 2
Date: Tue, 21 Mar 2006 10:56:37 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: crm by andrew from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : andrew
Host :
Project : linux-ha
Module : crm
Dir : linux-ha/crm/pengine
Modified Files:
complex.h group.c incarnation.c native.c stages.c
Log Message:
If probed is set to false we should force all resources to be probed
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/complex.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- complex.h 27 Jan 2006 11:15:49 -0000 1.30
+++ complex.h 21 Mar 2006 17:56:35 -0000 1.31
@@ -1,4 +1,4 @@
-/* $Id: complex.h,v 1.30 2006/01/27 11:15:49 andrew Exp $ */
+/* $Id: complex.h,v 1.31 2006/03/21 17:56:35 andrew Exp $ */
/*
* Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
*
@@ -71,7 +71,7 @@
color_t *(*color)(resource_t *, pe_working_set_t *);
void (*create_actions)(resource_t *, pe_working_set_t *);
gboolean (*create_probe)(
- resource_t *, node_t *, action_t *, pe_working_set_t *);
+ resource_t *, node_t *, action_t *, gboolean,
pe_working_set_t *);
void (*internal_constraints)(resource_t *, pe_working_set_t *);
void (*agent_constraints)(resource_t *);
@@ -136,7 +136,7 @@
notify_data_t *n_data,pe_working_set_t *data_set);
extern void native_assign_color(resource_t *rsc, color_t *color);
extern gboolean native_create_probe(
- resource_t *rsc, node_t *node, action_t *complete,
+ resource_t *rsc, node_t *node, action_t *complete, gboolean force,
pe_working_set_t *data_set);
extern void group_unpack(resource_t *rsc, pe_working_set_t *data_set);
@@ -166,7 +166,7 @@
resource_t *rsc, action_t *op,
notify_data_t *n_data,pe_working_set_t *data_set);
extern gboolean group_create_probe(
- resource_t *rsc, node_t *node, action_t *complete,
+ resource_t *rsc, node_t *node, action_t *complete, gboolean force,
pe_working_set_t *data_set);
extern void clone_unpack(resource_t *rsc, pe_working_set_t *data_set);
@@ -195,7 +195,7 @@
resource_t *rsc, action_t *op,
notify_data_t *n_data,pe_working_set_t *data_set);
extern gboolean clone_create_probe(
- resource_t *rsc, node_t *node, action_t *complete,
+ resource_t *rsc, node_t *node, action_t *complete, gboolean force,
pe_working_set_t *data_set);
extern void master_unpack(resource_t *rsc, pe_working_set_t *data_set);
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/group.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- group.c 18 Mar 2006 17:23:48 -0000 1.54
+++ group.c 21 Mar 2006 17:56:35 -0000 1.55
@@ -1,4 +1,4 @@
-/* $Id: group.c,v 1.54 2006/03/18 17:23:48 andrew Exp $ */
+/* $Id: group.c,v 1.55 2006/03/21 17:56:35 andrew Exp $ */
/*
* Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
*
@@ -608,7 +608,7 @@
gboolean
group_create_probe(resource_t *rsc, node_t *node, action_t *complete,
- pe_working_set_t *data_set)
+ gboolean force, pe_working_set_t *data_set)
{
gboolean any_created = FALSE;
group_variant_data_t *group_data = NULL;
@@ -618,7 +618,7 @@
child_rsc, resource_t, group_data->child_list, lpc,
any_created = child_rsc->fns->create_probe(
- child_rsc, node, complete, data_set) || any_created;
+ child_rsc, node, complete, force, data_set) ||
any_created;
);
return any_created;
}
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/incarnation.c,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -3 -r1.74 -r1.75
--- incarnation.c 18 Mar 2006 17:23:48 -0000 1.74
+++ incarnation.c 21 Mar 2006 17:56:35 -0000 1.75
@@ -1,4 +1,4 @@
-/* $Id: incarnation.c,v 1.74 2006/03/18 17:23:48 andrew Exp $ */
+/* $Id: incarnation.c,v 1.75 2006/03/21 17:56:35 andrew Exp $ */
/*
* Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
*
@@ -1383,7 +1383,7 @@
gboolean
clone_create_probe(resource_t *rsc, node_t *node, action_t *complete,
- pe_working_set_t *data_set)
+ gboolean force, pe_working_set_t *data_set)
{
int num_probes = 0;
gboolean any_created = FALSE;
@@ -1412,7 +1412,7 @@
break;
}
if(child_rsc->fns->create_probe(
- child_rsc, node, complete, data_set)) {
+ child_rsc, node, complete, force, data_set)) {
any_created = TRUE;
num_probes++;
}
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/native.c,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -3 -r1.115 -r1.116
--- native.c 19 Mar 2006 18:27:14 -0000 1.115
+++ native.c 21 Mar 2006 17:56:36 -0000 1.116
@@ -1,4 +1,4 @@
-/* $Id: native.c,v 1.115 2006/03/19 18:27:14 andrew Exp $ */
+/* $Id: native.c,v 1.116 2006/03/21 17:56:36 andrew Exp $ */
/*
* Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
*
@@ -1965,7 +1965,7 @@
gboolean
native_create_probe(resource_t *rsc, node_t *node, action_t *complete,
- pe_working_set_t *data_set)
+ gboolean force, pe_working_set_t *data_set)
{
char *key = NULL;
char *target_rc = NULL;
@@ -1979,7 +1979,7 @@
}
running = pe_find_node_id(rsc->known_on, node->details->id);
- if(running != NULL) {
+ if(force == FALSE && running != NULL) {
/* we already know the status of the resource on this node */
return FALSE;
}
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/pengine/stages.c,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -3 -r1.88 -r1.89
--- stages.c 16 Mar 2006 23:32:14 -0000 1.88
+++ stages.c 21 Mar 2006 17:56:36 -0000 1.89
@@ -1,4 +1,4 @@
-/* $Id: stages.c,v 1.88 2006/03/16 23:32:14 andrew Exp $ */
+/* $Id: stages.c,v 1.89 2006/03/21 17:56:36 andrew Exp $ */
/*
* Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
*
@@ -168,6 +168,7 @@
slist_iter(
node, node_t, data_set->nodes, lpc,
+ gboolean force_probe = FALSE;
const char *probed = g_hash_table_lookup(
node->details->attrs, CRM_OP_PROBED);
@@ -190,7 +191,10 @@
probe_complete->pseudo = TRUE;
}
-
+
+ if(probed != NULL) {
+ force_probe = TRUE;
+ }
probe_node_complete = custom_action(
NULL, crm_strdup(CRM_OP_PROBED),
@@ -204,10 +208,10 @@
slist_iter(
rsc, resource_t, data_set->resources, lpc2,
-
if(rsc->fns->create_probe(
- rsc, node, probe_node_complete, data_set)) {
+ rsc, node, probe_node_complete,
+ force_probe, data_set)) {
custom_action_order(
NULL, NULL, probe_complete,
rsc, start_key(rsc), NULL,
------------------------------
_______________________________________________
Linux-ha-cvs mailing list
[email protected]
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs
End of Linux-ha-cvs Digest, Vol 28, Issue 53
********************************************