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
********************************************

Reply via email to