[SCM] Samba Shared Repository - branch master updated

Amitay Isaacs amitay at samba.org
Fri Aug 24 12:14:02 UTC 2018


The branch, master has been updated
       via  6fb80cb ctdb-tests: Check that no IPs are assigned when failover is disabled
       via  55893bf ctdb-tests: Add an extra conf loading test case
       via  78aad76 ctdb-doc: Switch tunable DisableIPFailover to a config option
       via  9296341 ctdb-config: Switch tunable DisableIPFailover to a config option
       via  d003a41 ctdb-config: Integrate failover options into conf-tool
       via  893dd62 ctdb-failover: Add failover configuration options
       via  8e160d3 ctdb-tests: Drop DisableIPFailover simple test
       via  914e9f2 ctdb-daemon: Pass DisableIPFailover tunable via environment variable
       via  21de59a ctdb-common: Allow boolean configuration values to have yes/no values
       via  a9758f4 ctdb-doc: Switch tunable TDBMutexEnabled to a config option
       via  f42486e ctdb-config: Switch tunable TDBMutexEnabled to a config option
       via  8ddfc26 ctdb-doc: Add support for migrating tunables to ctdb.conf options
       via  43adcd7 ctdb-doc: Change option "no realtime" option to "realtime scheduling"
       via  17068e7 ctdb-config: Change option "no realtime" option to "realtime scheduling"
       via  64d4a7a ctdb-doc: Handle boolean options in config migration more carefully
       via  d4afb60 ctdb-doc: Make config migration script notice removed CTDB_BASE option
       via  4833572 ctdb-common: Fix aliasing issue in IPv6 checksum
      from  0f3f63f PEP8: line up a couple of lists

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6fb80cbffb9cb8cba6abc3fbce228811d36e8c9a
Author: Martin Schwenke <martin at meltin.net>
Date:   Fri Aug 24 17:37:38 2018 +1000

    ctdb-tests: Check that no IPs are assigned when failover is disabled
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    
    Autobuild-User(master): Amitay Isaacs <amitay at samba.org>
    Autobuild-Date(master): Fri Aug 24 14:13:12 CEST 2018 on sn-devel-144

commit 55893bf8d2cc7e01b3a93d8e1fde16408244cb65
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 06:55:33 2018 +1000

    ctdb-tests: Add an extra conf loading test case
    
    This shows that config file loading continues in spite of unknown keys
    if ignore_unknown is true.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 78aad7623e100f05a7dfc142fba7ff2b0eba1913
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 17:25:53 2018 +1000

    ctdb-doc: Switch tunable DisableIPFailover to a config option
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 929634126a334e380f16c080b59d062873b4e5f9
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 13:41:22 2018 +1000

    ctdb-config: Switch tunable DisableIPFailover to a config option
    
    Use the "failover:disabled" option instead.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit d003a41a9cb9ea97a7da9dbb5bd3138f82da6cf1
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 11:44:03 2018 +1000

    ctdb-config: Integrate failover options into conf-tool
    
    Update and add tests accordingly.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 893dd623dfdec4d5c5da07f933069e4534fe58ae
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 11:30:39 2018 +1000

    ctdb-failover: Add failover configuration options
    
    Only a "disabled" option for now.  Not documented because it isn't
    used yet.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 8e160d331aaccd64b1a767c0bde9e310c80afe06
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 11:18:34 2018 +1000

    ctdb-tests: Drop DisableIPFailover simple test
    
    This is about to become a config file option that can't be dynamically
    changed at run-time, so drop this test for now.  This test will be added
    once the tunable becomes a config file option.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 914e9f22d85b9274871b7c7d5486354928080e51
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 09:36:00 2018 +1000

    ctdb-daemon: Pass DisableIPFailover tunable via environment variable
    
    Preparation for obsoleting this tunable.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 21de59ab7fe53240380b9a9a5b32d5af32d34237
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Aug 20 13:43:38 2018 +1000

    ctdb-common: Allow boolean configuration values to have yes/no values
    
    This make the new configuration style more consistent with the old one.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit a9758f413d06b0d114f4e5a0e053bbc8956c60b7
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 13:51:40 2018 +1000

    ctdb-doc: Switch tunable TDBMutexEnabled to a config option
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit f42486e8912eee45eb75d27b753bb74c3b37d80b
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Aug 20 15:01:50 2018 +1000

    ctdb-config: Switch tunable TDBMutexEnabled to a config option
    
    Use the "database:tdb mutexes" option instead.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 8ddfc26d79fda2fd0265f370a4c08dc584e6a6ac
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Aug 20 19:09:45 2018 +1000

    ctdb-doc: Add support for migrating tunables to ctdb.conf options
    
    This will become common, so will be useful to have support for.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 43adcd717cee689c2d0386bd2aa2878006aa9217
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Aug 21 13:45:32 2018 +1000

    ctdb-doc: Change option "no realtime" option to "realtime scheduling"
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 17068e756b9e46f7a6c77d533ef1777173bb3795
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Aug 20 13:35:33 2018 +1000

    ctdb-config: Change option "no realtime" option to "realtime scheduling"
    
    Negative options can be confusing, so switch to a positive option.
    
    This was supposed to be done months ago but was forgotten.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 64d4a7ae5ac3aed2b1b9e7ab85c372e6900826ac
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Aug 20 13:29:52 2018 +1000

    ctdb-doc: Handle boolean options in config migration more carefully
    
    Values for ctdb.conf options are now returned by
    get_ctdb_conf_option().  The main goal is to allow old boolean options
    to be replaced by new logically negated options.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit d4afb60a24b932a0b7a0c2f27526f41d0bf38fc2
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Aug 20 13:38:25 2018 +1000

    ctdb-doc: Make config migration script notice removed CTDB_BASE option
    
    This should never have been a user-level option, but some people used
    it.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13589
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 48335725deecdbdb24a9176cf31e9611c9deda49
Author: Martin Schwenke <martin at meltin.net>
Date:   Mon Aug 13 12:18:51 2018 +1000

    ctdb-common: Fix aliasing issue in IPv6 checksum
    
    Since commit 9c51b278b1700cd5f3e2addc19b7c711cc2ea10b the compiler has
    been able to inline the affected call to uint16_checksum().  Given
    that the data (phdr) is being accessed by an incompatible
    pointer (data) there is an aliasing problem when the call is inlined.
    This results in incorrect behaviour with -O2/-O3 when compiling with
    at least GCC 6, 7, and 8.
    
    Fix this by making the types compatible.
    
    Also fixes CID 1437604 (Reliance on integer endianness).  This is a
    false positive because the uint16_checksum doesn't depend on the order
    of the input uint16_t items.
    
    https://bugzilla.samba.org/show_bug.cgi?id=13588
    
    Pair-programmed-with: Amitay Isaacs <amitay at gmail.com>
    Signed-off-by: Martin Schwenke <martin at meltin.net>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

-----------------------------------------------------------------------

Summary of changes:
 ctdb/common/conf.c                                 |   4 +-
 ctdb/common/conf_tool.c                            |   2 +
 ctdb/common/system_socket.c                        |  12 ++-
 ctdb/common/tunable.c                              |   4 +-
 ctdb/database/database_conf.c                      |  21 +++++
 ctdb/database/database_conf.h                      |   3 +-
 ctdb/doc/ctdb-tunables.7.xml                       |  28 ------
 ctdb/doc/ctdb.1.xml                                |   2 -
 ctdb/doc/ctdb.conf.5.xml                           |  52 ++++++++++-
 ctdb/doc/examples/config_migrate.sh                | 104 +++++++++++++++------
 ctdb/doc/examples/config_migrate.test_input        |   7 +-
 .../database_conf.h => failover/failover_conf.c}   |  43 ++++++---
 .../event_conf.h => failover/failover_conf.h}      |  16 ++--
 ctdb/server/ctdb_config.c                          |  18 +++-
 ctdb/server/ctdb_config.h                          |   6 +-
 ctdb/server/ctdb_ltdb_server.c                     |   7 +-
 ctdb/server/ctdb_recoverd.c                        |  14 ++-
 ctdb/server/ctdb_takeover.c                        |  10 +-
 ctdb/server/ctdb_takeover_helper.c                 |   4 +-
 ctdb/server/ctdbd.c                                |   2 +-
 ctdb/server/legacy_conf.c                          |   4 +-
 ctdb/server/legacy_conf.h                          |   2 +-
 ctdb/tests/cunit/config_test_001.sh                |  25 ++++-
 ctdb/tests/cunit/config_test_006.sh                |   4 +-
 ctdb/tests/cunit/config_test_007.sh                |  24 +++++
 ctdb/tests/eventscripts/00.ctdb.setup.002.sh       |   2 -
 ctdb/tests/eventscripts/scripts/00.ctdb.sh         |   1 -
 ctdb/tests/simple/19_ip_takeover_noop.sh           |  36 ++++---
 ctdb/tests/simple/scripts/local_daemons.bash       |   5 +
 ctdb/tests/takeover_helper/016.sh                  |   4 +-
 ctdb/tests/tool/ctdb.listvars.001.sh               |   2 -
 ctdb/wscript                                       |   6 ++
 32 files changed, 340 insertions(+), 134 deletions(-)
 copy ctdb/{database/database_conf.h => failover/failover_conf.c} (53%)
 copy ctdb/{event/event_conf.h => failover/failover_conf.h} (68%)
 create mode 100755 ctdb/tests/cunit/config_test_007.sh


Changeset truncated at 500 lines:

diff --git a/ctdb/common/conf.c b/ctdb/common/conf.c
index 74af7f8..669ac23 100644
--- a/ctdb/common/conf.c
+++ b/ctdb/common/conf.c
@@ -122,12 +122,12 @@ static int string_to_integer(const char *str, int *int_val)
 
 static int string_to_boolean(const char *str, bool *bool_val)
 {
-	if (strcasecmp(str, "true") == 0) {
+	if (strcasecmp(str, "true") == 0 || strcasecmp(str, "yes") == 0) {
 		*bool_val = true;
 		return 0;
 	}
 
-	if (strcasecmp(str, "false") == 0) {
+	if (strcasecmp(str, "false") == 0 || strcasecmp(str, "no") == 0) {
 		*bool_val = false;
 		return 0;
 	}
diff --git a/ctdb/common/conf_tool.c b/ctdb/common/conf_tool.c
index 329b204..e6020c5 100644
--- a/ctdb/common/conf_tool.c
+++ b/ctdb/common/conf_tool.c
@@ -32,6 +32,7 @@
 #include "cluster/cluster_conf.h"
 #include "database/database_conf.h"
 #include "event/event_conf.h"
+#include "failover/failover_conf.h"
 #include "server/legacy_conf.h"
 
 #include "common/conf_tool.h"
@@ -243,6 +244,7 @@ int conf_tool_run(struct conf_tool_context *ctx, int *result)
 	cluster_conf_init(ctx->conf);
 	database_conf_init(ctx->conf);
 	event_conf_init(ctx->conf);
+	failover_conf_init(ctx->conf);
 	legacy_conf_init(ctx->conf);
 
 	if (! conf_valid(ctx->conf)) {
diff --git a/ctdb/common/system_socket.c b/ctdb/common/system_socket.c
index 22776f7..4a7a8c8 100644
--- a/ctdb/common/system_socket.c
+++ b/ctdb/common/system_socket.c
@@ -135,16 +135,20 @@ static uint16_t ip_checksum(uint16_t *data, size_t n, struct ip *ip)
 
 static uint16_t ip6_checksum(uint16_t *data, size_t n, struct ip6_hdr *ip6)
 {
-	uint32_t phdr[2];
+	uint16_t phdr[3];
 	uint32_t sum = 0;
 	uint16_t sum2;
+	uint32_t len;
 
 	sum += uint16_checksum((uint16_t *)(void *)&ip6->ip6_src, 16);
 	sum += uint16_checksum((uint16_t *)(void *)&ip6->ip6_dst, 16);
 
-	phdr[0] = htonl(n);
-	phdr[1] = htonl(ip6->ip6_nxt);
-	sum += uint16_checksum((uint16_t *)phdr, 8);
+	len = htonl(n);
+	phdr[0] = len & UINT16_MAX;
+	phdr[1] = (len >> 16) & UINT16_MAX;
+	/* ip6_nxt is only 8 bits, so fits comfortably into a uint16_t */
+	phdr[2] = htons(ip6->ip6_nxt);
+	sum += uint16_checksum(phdr, sizeof(phdr));
 
 	sum += uint16_checksum(data, n);
 
diff --git a/ctdb/common/tunable.c b/ctdb/common/tunable.c
index 4c1714c..f516d8c 100644
--- a/ctdb/common/tunable.c
+++ b/ctdb/common/tunable.c
@@ -83,7 +83,7 @@ static struct {
 		offsetof(struct ctdb_tunable_list,  reclock_ping_period) },
 	{ "NoIPFailback", 0, false,
 		offsetof(struct ctdb_tunable_list, no_ip_failback) },
-	{ "DisableIPFailover", 0, false,
+	{ "DisableIPFailover", 0, true,
 		offsetof(struct ctdb_tunable_list, disable_ip_failover) },
 	{ "VerboseMemoryNames", 0, false,
 		offsetof(struct ctdb_tunable_list, verbose_memory_names) },
@@ -145,7 +145,7 @@ static struct {
 		offsetof(struct ctdb_tunable_list, no_ip_host_on_all_disabled) },
 	{ "Samba3AvoidDeadlocks", 0, true,
 		offsetof(struct ctdb_tunable_list, samba3_hack) },
-	{ "TDBMutexEnabled", 1, false,
+	{ "TDBMutexEnabled", 1, true,
 		offsetof(struct ctdb_tunable_list, mutex_enabled) },
 	{ "LockProcessesPerDB", 200, false,
 		offsetof(struct ctdb_tunable_list, lock_processes_per_db) },
diff --git a/ctdb/database/database_conf.c b/ctdb/database/database_conf.c
index 0333ce0..6bdb372 100644
--- a/ctdb/database/database_conf.c
+++ b/ctdb/database/database_conf.c
@@ -54,6 +54,22 @@ static bool check_static_string_change(const char *key,
 	return true;
 }
 
+static bool check_static_boolean_change(const char *key,
+					bool old_value,
+					bool new_value,
+					enum conf_update_mode mode)
+{
+	if (mode == CONF_MODE_RELOAD || CONF_MODE_API) {
+		if (old_value != new_value) {
+			D_WARNING("Ignoring update of [%s] -> %s\n",
+				  DATABASE_CONF_SECTION,
+				  key);
+		}
+	}
+
+	return true;
+}
+
 static bool database_conf_validate_lock_debug_script(const char *key,
 						     const char *old_script,
 						     const char *new_script,
@@ -141,4 +157,9 @@ void database_conf_init(struct conf_context *conf)
 			   DATABASE_CONF_LOCK_DEBUG_SCRIPT,
 			   NULL,
 			   database_conf_validate_lock_debug_script);
+	conf_define_boolean(conf,
+			    DATABASE_CONF_SECTION,
+			    DATABASE_CONF_TDB_MUTEXES,
+			    true,
+			    check_static_boolean_change);
 }
diff --git a/ctdb/database/database_conf.h b/ctdb/database/database_conf.h
index 4891b00..6fa579c 100644
--- a/ctdb/database/database_conf.h
+++ b/ctdb/database/database_conf.h
@@ -27,7 +27,8 @@
 #define DATABASE_CONF_VOLATILE_DB_DIR           "volatile database directory"
 #define DATABASE_CONF_PERSISTENT_DB_DIR         "persistent database directory"
 #define DATABASE_CONF_STATE_DB_DIR              "state database directory"
-#define DATABASE_CONF_LOCK_DEBUG_SCRIPT          "lock debug script"
+#define DATABASE_CONF_LOCK_DEBUG_SCRIPT         "lock debug script"
+#define DATABASE_CONF_TDB_MUTEXES               "tdb mutexes"
 
 void database_conf_init(struct conf_context *conf);
 
diff --git a/ctdb/doc/ctdb-tunables.7.xml b/ctdb/doc/ctdb-tunables.7.xml
index a925ca5..71cb0e3 100644
--- a/ctdb/doc/ctdb-tunables.7.xml
+++ b/ctdb/doc/ctdb-tunables.7.xml
@@ -178,23 +178,6 @@ MonitorInterval=20
     </refsect2>
 
     <refsect2>
-      <title>DisableIPFailover</title>
-      <para>Default: 0</para>
-      <para>
-	When set to non-zero, ctdb will not perform failover or
-	failback. Even if a node fails while holding public IPs, ctdb
-	will not recover the IPs or assign them to another node.
-      </para>
-      <para>
-	When this tunable is enabled, ctdb will no longer attempt
-	to recover the cluster by failing IP addresses over to other
-	nodes. This leads to a service outage until the administrator
-	has manually performed IP failover to replacement nodes using the
-	'ctdb moveip' command.
-      </para>
-    </refsect2>
-
-    <refsect2>
       <title>ElectionTimeout</title>
       <para>Default: 3</para>
       <para>
@@ -661,17 +644,6 @@ MonitorInterval=20
     </refsect2>
 
     <refsect2>
-      <title>TDBMutexEnabled</title>
-      <para>Default: 1</para>
-      <para>
-	This parameter enables TDB_MUTEX_LOCKING feature on volatile
-	databases if the robust mutexes are supported. This optimizes the
-	record locking using robust mutexes and is much more efficient
-	that using posix locks.
-      </para>
-    </refsect2>
-
-    <refsect2>
       <title>TickleUpdateInterval</title>
       <para>Default: 20</para>
       <para>
diff --git a/ctdb/doc/ctdb.1.xml b/ctdb/doc/ctdb.1.xml
index 5c3ce41..355547a 100644
--- a/ctdb/doc/ctdb.1.xml
+++ b/ctdb/doc/ctdb.1.xml
@@ -800,7 +800,6 @@ DatabaseMaxDead         = 5
 RerecoveryTimeout       = 10
 EnableBans              = 1
 NoIPFailback            = 0
-DisableIPFailover       = 0
 VerboseMemoryNames      = 0
 RecdPingTimeout         = 60
 RecdFailCount           = 10
@@ -828,7 +827,6 @@ DBRecordCountWarn       = 100000
 DBRecordSizeWarn        = 10000000
 DBSizeWarn              = 100000000
 PullDBPreallocation     = 10485760
-TDBMutexEnabled         = 1
 LockProcessesPerDB      = 200
 RecBufferSizeLimit      = 1000000
 QueueBufferSize         = 1024
diff --git a/ctdb/doc/ctdb.conf.5.xml b/ctdb/doc/ctdb.conf.5.xml
index bcb67b3..01c09bf 100644
--- a/ctdb/doc/ctdb.conf.5.xml
+++ b/ctdb/doc/ctdb.conf.5.xml
@@ -305,6 +305,23 @@
       </varlistentry>
 
       <varlistentry>
+	<term>tdb mutexes = true|false</term>
+	<listitem>
+	  <para>
+	    This parameter enables TDB_MUTEX_LOCKING feature on
+	    volatile databases if the robust mutexes are
+	    supported. This optimizes the record locking using robust
+	    mutexes and is much more efficient that using posix locks.
+	  </para>
+	  <para>
+	    If robust mutexes are unreliable on the platform being
+	    used then they can be disabled by setting this to
+	    <literal>false</literal>.
+	  </para>
+	</listitem>
+      </varlistentry>
+
+      <varlistentry>
 	<term>lock debug script = <parameter>FILENAME</parameter></term>
 	<listitem>
 	  <para>
@@ -376,6 +393,35 @@
 
   <refsect1>
     <title>
+      FAILOVER CONFIGURATION
+    </title>
+
+    <para>
+      Options in this section affect CTDB failover. They are
+      valid within the <emphasis>failover</emphasis> section of file,
+      indicated by <literal>[failover]</literal>.
+    </para>
+
+    <variablelist>
+
+      <varlistentry>
+	<term>disabled = true|false</term>
+	<listitem>
+	  <para>
+	    If set to <literal>true</literal> then public IP failover
+	    is disabled.
+	  </para>
+	  <para>
+	    Default: <literal>false</literal>
+	  </para>
+	</listitem>
+      </varlistentry>
+
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>
       LEGACY CONFIGURATION
     </title>
 
@@ -436,17 +482,17 @@
       </varlistentry>
 
       <varlistentry>
-	<term>no realtime = true|false</term>
+	<term>realtime scheduling = true|false</term>
 	<listitem>
 	  <para>
 	    Usually CTDB runs with real-time priority. This helps it
 	    to perform effectively on a busy system, such as when
 	    there are thousands of Samba clients. If you are running
 	    CTDB on a platform that does not support real-time
-	    priority, you can set this to <literal>true</literal>.
+	    priority, you can set this to <literal>false</literal>.
 	  </para>
 	  <para>
-	    Default: <literal>false</literal>
+	    Default: <literal>true</literal>
 	  </para>
 	</listitem>
       </varlistentry>
diff --git a/ctdb/doc/examples/config_migrate.sh b/ctdb/doc/examples/config_migrate.sh
index 8eefd03..8479aeb 100755
--- a/ctdb/doc/examples/config_migrate.sh
+++ b/ctdb/doc/examples/config_migrate.sh
@@ -109,33 +109,44 @@ out_file_remove_if_empty ()
 # script
 #
 
-# Convert a ctdbd.conf opt+val into a ctdb.conf section+opt
+# Convert a ctdbd.conf opt+val into a ctdb.conf section+opt+val
 #
 # If opt is matched and val is empty then output is printed, allowing
 # this function to be reused to check if opt is valid.
+#
+# Note that for boolean options, the expected value and the new value
+# form part of the data.
 get_ctdb_conf_option ()
 {
 	_opt="$1"
 	_val="$2"
 
 	awk -v opt="${_opt}" -v val="${_val}" \
-	    '$3 == opt { if (!$4 || !val || val ==$4) { print $1, $2 } }' <<EOF
-cluster		node-address			CTDB_NODE_ADDRESS
-cluster		recovery-lock			CTDB_RECOVERY_LOCK
-cluster		transport			CTDB_TRANSPORT
-database	lock-debug-script		CTDB_DEBUG_LOCKS
-database	persistent-database-directory	CTDB_DBDIR_PERSISTENT
-database	state-database-directory	CTDB_DBDIR_STATE
-database	volatile-database-directory	CTDB_DBDIR
-event		debug-script			CTDB_DEBUG_HUNG_SCRIPT
-legacy		lmaster-capability		CTDB_CAPABILITY_LMASTER	     no
-legacy		no-realtime			CTDB_NOSETSCHED		     yes
-legacy		recmaster-capability		CTDB_CAPABILITY_RECMASTER    no
-legacy		script-log-level		CTDB_SCRIPT_LOG_LEVEL
-legacy		start-as-disabled		CTDB_START_AS_DISABLED	     yes
-legacy		start-as-stopped		CTDB_START_AS_STOPPED	     yes
-logging		location			CTDB_LOGGING
-logging		log-level			CTDB_DEBUGLEVEL
+	    '$3 == opt {
+		if (!$4 || !val || val == $4) {
+		    if ($5) {
+			print $1, $2, $5
+		    } else {
+			print $1, $2, val
+		    }
+		}
+	    }' <<EOF
+cluster	  node-address			CTDB_NODE_ADDRESS
+cluster   recovery-lock			CTDB_RECOVERY_LOCK
+cluster   transport			CTDB_TRANSPORT
+database  lock-debug-script		CTDB_DEBUG_LOCKS
+database  persistent-database-directory CTDB_DBDIR_PERSISTENT
+database  state-database-directory	CTDB_DBDIR_STATE
+database  volatile-database-directory	CTDB_DBDIR
+event     debug-script			CTDB_DEBUG_HUNG_SCRIPT
+legacy    lmaster-capability		CTDB_CAPABILITY_LMASTER		no  false
+legacy    realtime-scheduling		CTDB_NOSETSCHED			yes false
+legacy    recmaster-capability		CTDB_CAPABILITY_RECMASTER       no  false
+legacy    script-log-level		CTDB_SCRIPT_LOG_LEVEL
+legacy    start-as-disabled		CTDB_START_AS_DISABLED		yes true
+legacy    start-as-stopped		CTDB_START_AS_STOPPED		yes true
+logging   location			CTDB_LOGGING
+logging   log-level			CTDB_DEBUGLEVEL
 EOF
 
 }
@@ -149,12 +160,48 @@ check_ctdb_conf_option ()
 	[ -n "$_out" ]
 }
 
+# Convert a ctdbd.conf tunable option into a ctdb.conf section+opt
+#
+# The difference between this and get_ctdb_conf_option() is that only
+# the tunable part of the option is passed as opt and it is matched
+# case-insensitively.
+get_ctdb_conf_tunable_option ()
+{
+	_opt="$1"
+	_val="$2"
+
+	awk -v opt="${_opt}" -v val="${_val}" \
+	    'tolower($3) == tolower(opt) {
+		if (!$4 || !val || (val == 0 ? 0 : 1) == $4) {
+		    if ($5) {
+			print $1, $2, $5
+		    } else {
+			print $1, $2, val
+		    }
+		}
+	    }' <<EOF
+database  tdb-mutexes			TDBMutexEnabled		0 false
+failover  disabled			DisableIPFailover	1 true
+EOF
+
+}
+
+# Check if a tunable will convert to a ctdb.conf option
+check_ctdb_conf_tunable_option ()
+{
+	_opt="$1"
+
+	_out=$(get_ctdb_conf_tunable_option "$_opt" "")
+	[ -n "$_out" ]
+}
+
 # Check if an option has been removed
 check_removed_option ()
 {
 	_option="$1"
 
 	grep -Fqx "$_option" <<EOF
+CTDB_BASE
 CTDB_PIDFILE
 CTDB_SOCKET
 CTDB_EVENT_SCRIPT_DIR
@@ -496,23 +543,25 @@ build_ctdb_conf ()
 
 	list_options |
 	while read -r _opt _val ; do
-		_out=$(get_ctdb_conf_option "$_opt" "$_val")
+		case "$_opt" in
+		CTDB_SET_*)
+			_opt="${_opt#CTDB_SET_}"
+			_out=$(get_ctdb_conf_tunable_option "$_opt" "$_val")
+			;;
+		*)
+			_out=$(get_ctdb_conf_option "$_opt" "$_val")
+		esac
 		if [ -z "$_out" ] ; then
 			continue
 		fi
 
-		# ctdb.conf needs true/false, not yes/no
-		case "$_val" in
-		yes) _val="true"  ;;
-		no)  _val="false" ;;
-		esac
-
 		# $_out is section and key, replace dashes with spaces
 		# Intentional word splitting
 		# shellcheck disable=SC2086
 		set -- $_out
 		_section=$(echo "$1" | sed -e 's|-| |g')
 		_key=$(echo "$2" | sed -e 's|-| |g')
+		_newval="$3"
 
 		if ! grep -Fqx "[${_section}]" "$_out_file" ; then
 			# Add blank line if file is not empty
@@ -525,7 +574,7 @@ build_ctdb_conf ()
 
 		# Must escape leading TAB or sed eats it
 		sed -i -e "/\\[${_section}\\]/a\
-\\	${_key} = ${_val}
+\\	${_key} = ${_newval}
 " "$_out_file"
 
 	done
@@ -556,6 +605,9 @@ build_ctdb_tunables ()
 
 	list_tunables |
 	while read -r _var _val ; do
+		if check_ctdb_conf_tunable_option "$_var" ; then
+			continue
+		fi
 		if ! check_valid_tunable "$_var" ; then
 			continue
 		fi
diff --git a/ctdb/doc/examples/config_migrate.test_input b/ctdb/doc/examples/config_migrate.test_input
index 593ca4c..e823fd4 100644
--- a/ctdb/doc/examples/config_migrate.test_input
+++ b/ctdb/doc/examples/config_migrate.test_input
@@ -1,3 +1,5 @@
+CTDB_BASE="/etc/ctdb"
+
 CTDB_RECOVERY_LOCK="/some/place/on/shared/storage"
 
 CTDB_NODES="/etc/ctdb/nodes"
@@ -24,6 +26,8 @@ CTDB_START_AS_STOPPED="yes"
 CTDB_CAPABILITY_RECMASTER="no"
 CTDB_CAPABILITY_LMASTER="yes"
 
+CTDB_NOSETSCHED="yes"
+
 CTDB_FOO="bar"
 
 CTDB_NATGW_PUBLIC_IP=10.1.1.121/24
@@ -32,9 +36,10 @@ CTDB_NATGW_DEFAULT_GATEWAY=10.1.1.254
 CTDB_NATGW_PRIVATE_NETWORK=192.168.1.0/24
 CTDB_NATGW_NODES=/etc/ctdb/natgw_nodes
 
-CTDB_SET_TDBMutexEnabled=1
+CTDB_SET_TDBMutexEnabled=0
 CTDB_SET_IPALLOCALGORITHM=0
 CTDB_SET_noiphostonalldisabled=0
+CTDB_SET_DisableIpFailover=1
 CTDB_SET_foobar=0
 
 CTDB_SUPPRESS_COREFILE="yes"
diff --git a/ctdb/database/database_conf.h b/ctdb/failover/failover_conf.c
similarity index 53%
copy from ctdb/database/database_conf.h
copy to ctdb/failover/failover_conf.c
index 4891b00..0f199cb 100644
--- a/ctdb/database/database_conf.h
+++ b/ctdb/failover/failover_conf.c
@@ -17,18 +17,37 @@
    along with this program; if not, see <http://www.gnu.org/licenses/>.


-- 
Samba Shared Repository



More information about the samba-cvs mailing list