[Openais] Proposed change to default nodeid generation

Steven Dake sdake at redhat.com
Wed Aug 20 14:54:04 PDT 2008


On Wed, 2008-08-20 at 14:41 -0700, Joel Becker wrote:
> On Wed, Aug 20, 2008 at 11:17:18AM -0700, Steven Dake wrote:
> > On Wed, 2008-08-20 at 18:52 +0200, Andrew Beekhof wrote:
> > We talked on irc and came to the conclusion that apparently it is
> > impossible to fix the kernel issue with the assumption of 1^31 bits and
> > it is impossible to fix the openais/corosync assumption of 1^32 bits
> > nodeids.  
> 
> 	Boy, are we awesome.
> 
> > Therefore a patch (with man page) of an api that gets the nodeids in 31
> > bit fashion from cpg would be workable.
> > 
> > ie:
> > 
> > cpg_nodid_31bit_set(handle).
> > 
> > would be suitable if this would meet everyone's needs.
> 
> 	Well, what happens with CLM?  Does it report the 32bit nodeid?
> What about EVS?  Btw, it's interesting (though irrelevant) that EVS uses
> 'unsigned int' instead of uint32_t.  I think this is a little more core,
> and I'd like to explore what we're really after.
> 	I don't think we should force all openais/corosync nodeids to
> 2^31 bits.  The protocol should stay 2^32 bits.  I don't think Andrew
> was asking for this either.
> 	I think Andrew was just looking for a way to limit the
> autogenerated node numbers, because his software uses the
> autogeneration.  The cman stack never cares because it sets the nodeids
> itself, which requires a configuration file and explicit nodeid
> specification by the admin.
> 	So, first, Andrew, does pacemaker have a method for querying
> membership and nodeids?  Forget ocfs2_controld/dlm_controld.  I just
> write a random application, and I want it to use pacemaker.  Are there
> functions for "what is my nodeid?" and "what nodeids exist in the
> cluster?"?  What do those functions look like?  I'm assuming they work
> in the absence of cpg, so it isn't just cpg here.
> 	Both Andrew and Steve, I'm assuming that pacemaker exists as a
> kind of corosync plugin these days.  So it has some access to the config
> space.  Now, the cman config plugin fills in the nodeids, whereas
> pacemaker appears to get them from corosync's automatic method.  Is
> there any way a plugin could have a hook from the autogeneration code?
> That is, corosync determines it should be autogenerating a node number,
> so it calls ->auto_node_num().  This defaults to the current IP address
> method, but pacemaker could provide a new method that returns whatever
> value it wants.  Internal to corosync and on the wire, it's still
> stored/sent as uint32_t, just like cman's nodeids.
> 
> Joel

This would require transmitting both the autogenerated and the
non-autogenerated nodeid over the wire to transmit it up the stack to
the plugin's various node id functions such as confchg et al.  That
would break protocol compatibility.

Regards
-steve
> 



More information about the Openais mailing list