[SCM] CTDB repository - branch master updated - ctdb-1.0.65-8-g6579a6a

Ronnie Sahlberg sahlberg at samba.org
Fri Nov 21 00:01:08 GMT 2008

The branch, master has been updated
       via  6579a6a2a7161214adedf0f67dce62f4a4ad1afe (commit)
       via  fe6ddf7992ca3e72a26dbac6666e0f6270da611f (commit)
       via  5403ed6dcfdfc101b05b43f83002e720d81b4e38 (commit)
       via  a5d5aa455c7f7eb93d3fa6f403d5b8e0b795109d (commit)
       via  000018f2f4fb9f2452f56731b027dd6a7beda111 (commit)
      from  0a6f9326cb99f14b5c9edd0d8854d8229df49910 (commit)


- Log -----------------------------------------------------------------
commit 6579a6a2a7161214adedf0f67dce62f4a4ad1afe
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Nov 21 08:05:59 2008 +1100

    fixed problem with looping ctdb recoveries
    After a node failure, GPFS can get into a state where non-blocking
    fcntl() locks can take a long time. This means to the ctdb set_recmode
    test timing out, which leads to a recovery failure, and a new
    recovery. The recovery loop can last a long time.
    The fix is to consider a fcntl timeout as a success of this test. The
    test is to see that we can't lock the shared reclock file, so a
    timeout is fine for a success.

commit fe6ddf7992ca3e72a26dbac6666e0f6270da611f
Merge: 5403ed6dcfdfc101b05b43f83002e720d81b4e38 0a6f9326cb99f14b5c9edd0d8854d8229df49910
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Nov 20 21:23:26 2008 +1100

    Merge commit 'ronnie/master'

commit 5403ed6dcfdfc101b05b43f83002e720d81b4e38
Merge: a5d5aa455c7f7eb93d3fa6f403d5b8e0b795109d 6fb2f8a36239e5902e27cf10213f85faf216d6f1
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 16 12:58:25 2008 +1100

    Merge commit 'ronnie/master'

commit a5d5aa455c7f7eb93d3fa6f403d5b8e0b795109d
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 9 18:45:12 2008 +1100

    added some more gpfs commands per-filesystem

commit 000018f2f4fb9f2452f56731b027dd6a7beda111
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 30 07:16:17 2008 -0700

    The author of the upstream code asked for this code to be GPLv2+ not GPLv3


Summary of changes:
 lib/util/idtree.c      |    2 +-
 server/ctdb_recover.c  |   11 +++++++++--
 tools/ctdb_diagnostics |    8 ++++++++
 3 files changed, 18 insertions(+), 3 deletions(-)

Changeset truncated at 500 lines:

diff --git a/lib/util/idtree.c b/lib/util/idtree.c
index 1b69319..06544e1 100644
--- a/lib/util/idtree.c
+++ b/lib/util/idtree.c
@@ -12,7 +12,7 @@
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
+   the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
diff --git a/server/ctdb_recover.c b/server/ctdb_recover.c
index c8b0ba0..39b73ac 100644
--- a/server/ctdb_recover.c
+++ b/server/ctdb_recover.c
@@ -477,7 +477,14 @@ static void ctdb_set_recmode_timeout(struct event_context *ev, struct timed_even
 	struct ctdb_set_recmode_state *state = talloc_get_type(private_data, 
 					   struct ctdb_set_recmode_state);
-	ctdb_request_control_reply(state->ctdb, state->c, NULL, -1, "timeout in ctdb_set_recmode");
+	/* we consider this a success, not a failure, as we failed to
+	   set the recovery lock which is what we wanted.  This can be
+	   caused by the cluster filesystem being very slow to
+	   arbitrate locks immediately after a node failure.	   
+	 */
+	DEBUG(DEBUG_NOTICE,(__location__ " set_recmode timeout - allowing recmode set\n"));
+	state->ctdb->recovery_mode = state->recmode;
+	ctdb_request_control_reply(state->ctdb, state->c, NULL, 0, NULL);
@@ -643,7 +650,7 @@ int32_t ctdb_control_set_recmode(struct ctdb_context *ctdb,
 	talloc_set_destructor(state, set_recmode_destructor);
 	state->te = event_add_timed(ctdb->ev, state, timeval_current_ofs(3, 0),
-			ctdb_set_recmode_timeout, state);
+				    ctdb_set_recmode_timeout, state);
 	state->fde = event_add_fd(ctdb->ev, state, state->fd[0],
diff --git a/tools/ctdb_diagnostics b/tools/ctdb_diagnostics
index 4415a90..8304a68 100755
--- a/tools/ctdb_diagnostics
+++ b/tools/ctdb_diagnostics
@@ -180,6 +180,14 @@ EOF
  show_all "/usr/lpp/mmfs/bin/mmlsquota"
  show_all "/usr/lpp/mmfs/bin/mmlscluster"
  show_all "/usr/lpp/mmfs/bin/mmlsmgr"
+ devlist=`mmlsfs all|grep ^File.system.attributes | cut -d/ -f3 | cut -d: -f1`
+ for d in $devlist; do
+     show_all mmdf $d
+     show_all mmlsdisk $d
+     show_all mmlsfileset $d
+     show_all mmlspolicy $d
+     show_all mmlssnapshot $d
+ done
  fslist=`mount|grep type.gpfs|awk '{print $1}'`
  for fs in $fslist; do
      show_all "/usr/lpp/mmfs/bin/mmlssnapshot $fs"

CTDB repository

More information about the samba-cvs mailing list