From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7717 invoked by alias); 17 Apr 2008 14:19:57 -0000 Received: (qmail 7682 invoked by uid 9476); 17 Apr 2008 14:19:56 -0000 Date: Thu, 17 Apr 2008 14:19:00 -0000 Message-ID: <20080417141956.7667.qmail@sourceware.org> From: lhh@sourceware.org To: cluster-cvs@sources.redhat.com, cluster-devel@redhat.com Subject: Cluster Project branch, RHEL4, updated. gfs-kernel_2_6_9_76-46-gceee2fe X-Git-Refname: refs/heads/RHEL4 X-Git-Reftype: branch X-Git-Oldrev: 157b65b58448d29b0111b23990721e03bab1bcaa X-Git-Newrev: ceee2fe27ece59ef6b3643ab1e7a4cce6688727c Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2008-q2/txt/msg00134.txt.bz2 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Cluster Project". http://sources.redhat.com/git/gitweb.cgi?p=cluster.git;a=commitdiff;h=ceee2fe27ece59ef6b3643ab1e7a4cce6688727c The branch, RHEL4 has been updated via ceee2fe27ece59ef6b3643ab1e7a4cce6688727c (commit) from 157b65b58448d29b0111b23990721e03bab1bcaa (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ceee2fe27ece59ef6b3643ab1e7a4cce6688727c Author: Lon Hohberger Date: Tue Mar 11 10:43:37 2008 -0400 [CMAN] Fix "Node X is undead" loop bug This was caused by an improper assignment to ps_incarnation after a node decides to evict another node. The fix is to simply make the internal (memory) assignments before calling qd_write_status() ----------------------------------------------------------------------- Summary of changes: cman/qdisk/main.c | 34 +++++++++++++++++----------------- 1 files changed, 17 insertions(+), 17 deletions(-) diff --git a/cman/qdisk/main.c b/cman/qdisk/main.c index 8e63c88..a29a5d0 100644 --- a/cman/qdisk/main.c +++ b/cman/qdisk/main.c @@ -253,23 +253,6 @@ check_transitions(qd_ctx *ctx, node_info_t *ni, int max, memb_mask_t mask) state_run(ni[x].ni_status.ps_state)) { /* - Write eviction notice if we're the master. - */ - if (ctx->qc_status == S_MASTER) { - clulog(LOG_NOTICE, - "Writing eviction notice for node %d\n", - ni[x].ni_status.ps_nodeid); - qd_write_status(ctx, ni[x].ni_status.ps_nodeid, - S_EVICT, NULL, NULL, NULL); - if (ctx->qc_flags & RF_ALLOW_KILL) { - clulog(LOG_DEBUG, "Telling CMAN to " - "kill the node\n"); - cman_kill_node(ctx->qc_ch, - ni[x].ni_status.ps_nodeid); - } - } - - /* Mark our internal views as dead if nodes miss too many heartbeats... This will cause a master transition if no live master exists. @@ -286,6 +269,23 @@ check_transitions(qd_ctx *ctx, node_info_t *ni, int max, memb_mask_t mask) ni[x].ni_evil_incarnation = ni[x].ni_status.ps_incarnation; + /* + Write eviction notice if we're the master. + */ + if (ctx->qc_status == S_MASTER) { + clulog(LOG_NOTICE, + "Writing eviction notice for node %d\n", + ni[x].ni_status.ps_nodeid); + qd_write_status(ctx, ni[x].ni_status.ps_nodeid, + S_EVICT, NULL, NULL, NULL); + if (ctx->qc_flags & RF_ALLOW_KILL) { + clulog(LOG_DEBUG, "Telling CMAN to " + "kill the node\n"); + cman_kill_node(ctx->qc_ch, + ni[x].ni_status.ps_nodeid); + } + } + /* Clear our master mask for the node after eviction */ if (mask) clear_bit(mask, (ni[x].ni_status.ps_nodeid-1), hooks/post-receive -- Cluster Project