Reviewed-by: Steven Dake <sdake@xxxxxxxxxx> On 01/10/2012 02:23 AM, Fabio M. Di Nitto wrote: > From: "Fabio M. Di Nitto" <fdinitto@xxxxxxxxxx> > > this is necessary to reset the wait_for_all data when a node is joining a cluster > that has already seen all nodes once. > > Signed-off-by: Fabio M. Di Nitto <fdinitto@xxxxxxxxxx> > --- > :100644 100644 a11b9b3... 5682522... M services/votequorum.c > services/votequorum.c | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/services/votequorum.c b/services/votequorum.c > index a11b9b3..5682522 100644 > --- a/services/votequorum.c > +++ b/services/votequorum.c > @@ -417,6 +417,7 @@ struct req_exec_quorum_nodeinfo { > unsigned int patch_version; /* Backwards/forwards compatible */ > unsigned int config_version; > unsigned int flags; > + unsigned int wait_for_all; > > } __attribute__((packed)); > > @@ -889,6 +890,7 @@ static int quorum_exec_send_nodeinfo() > req_exec_quorum_nodeinfo.patch_version = VOTEQUORUM_PATCH_VERSION; > req_exec_quorum_nodeinfo.flags = us->flags; > req_exec_quorum_nodeinfo.first_trans = first_trans; > + req_exec_quorum_nodeinfo.wait_for_all = wait_for_all; > if (have_disallowed()) > req_exec_quorum_nodeinfo.flags |= NODE_FLAGS_SEESDISALLOWED; > > @@ -1007,6 +1009,7 @@ static void exec_votequorum_nodeinfo_endian_convert (void *msg) > nodeinfo->patch_version = swab32(nodeinfo->patch_version); > nodeinfo->config_version = swab32(nodeinfo->config_version); > nodeinfo->flags = swab32(nodeinfo->flags); > + nodeinfo->wait_for_all = swab32(nodeinfo->wait_for_all); > } > > static void exec_votequorum_reconfigure_endian_convert (void *msg) > @@ -1066,7 +1069,7 @@ static void message_handler_req_exec_votequorum_nodeinfo ( > node->expected_votes = req_exec_quorum_nodeinfo->expected_votes; > node->state = NODESTATE_MEMBER; > > - log_printf(LOGSYS_LEVEL_DEBUG, "nodeinfo message: votes: %d, expected:%d\n", req_exec_quorum_nodeinfo->votes, req_exec_quorum_nodeinfo->expected_votes); > + log_printf(LOGSYS_LEVEL_DEBUG, "nodeinfo message: votes: %d, expected: %d wfa: %d\n", req_exec_quorum_nodeinfo->votes, req_exec_quorum_nodeinfo->expected_votes, req_exec_quorum_nodeinfo->wait_for_all); > > /* Check flags for disallowed (if enabled) */ > if (quorum_flags & VOTEQUORUM_FLAG_FEATURE_DISALLOWED) { > @@ -1095,6 +1098,10 @@ static void message_handler_req_exec_votequorum_nodeinfo ( > free(node); > } > > + if ((wait_for_all) && (!req_exec_quorum_nodeinfo->wait_for_all)) { > + wait_for_all = 0; > + } > + > LEAVE(); > } > _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss