diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h index cb83f863381..19f85f2e11e 100644 --- a/ctdb/include/ctdb_private.h +++ b/ctdb/include/ctdb_private.h @@ -407,6 +407,7 @@ struct ctdb_context { struct ctdb_call_state *pending_calls; struct ctdb_client_ip *client_ip_list; bool do_setsched; + bool do_checkpublicip; void *saved_scheduler_param; struct _trbt_tree_t *server_ids; const char *event_script_dir; diff --git a/ctdb/packaging/RPM/ctdb.spec b/ctdb/packaging/RPM/ctdb.spec index a3e8bb4b18a..d8bd76bcb30 100644 --- a/ctdb/packaging/RPM/ctdb.spec +++ b/ctdb/packaging/RPM/ctdb.spec @@ -5,7 +5,7 @@ Vendor: Samba Team Packager: Samba Team Name: ctdb Version: 1.0 -Release: 65 +Release: 66 Epoch: 0 License: GNU GPL version 3 Group: System Environment/Daemons @@ -120,6 +120,17 @@ fi %{_includedir}/ctdb_private.h %changelog +* Mon Nov 24 2008 : Version 1.0.66 + - Allow to change the recmaster even when we are not frozen. + - Remove two redundant SAMBA_CHECK variables from the sysconf example + - After a node failure it can take very long before some lock operations + ctdb needs to perform are allowed/works with gpfs again. Workaround this + by treating a hang/timeout as success. + - Dont override CTDB_BASE is fet in the shell already + - Always send keepalive packets regardless of whether the link is idle or not. + - Rewrite the disable/enable flag update logic to prevent a race between + "ctdb disable/enable" and the recovery daemon when updating the flags to + all nodes. * Thu Nov 13 2008 : Version 1.0.65 - Update the sysconfig example: The default debug level is 2 (NOTICE) and not 0 (ERROR) diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index bef4bb15d8c..4faa2f898b2 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -2510,9 +2510,11 @@ again: /* verify that we have all ip addresses we should have and we dont * have addresses we shouldnt have. */ - if (verify_ip_allocation(ctdb, pnn) != 0) { - DEBUG(DEBUG_ERR, (__location__ " Public IPs were inconsistent.\n")); - goto again; + if (ctdb->do_checkpublicip) { + if (verify_ip_allocation(ctdb, pnn) != 0) { + DEBUG(DEBUG_ERR, (__location__ " Public IPs were inconsistent.\n")); + goto again; + } } diff --git a/ctdb/server/ctdbd.c b/ctdb/server/ctdbd.c index b95aaca16e5..351948c9e5b 100644 --- a/ctdb/server/ctdbd.c +++ b/ctdb/server/ctdbd.c @@ -47,6 +47,7 @@ static struct { int no_recmaster; int lvs; int script_log_level; + int no_publicipcheck; } options = { .nlist = ETCDIR "/ctdb/nodes", .transport = "tcp", @@ -130,6 +131,7 @@ int main(int argc, const char *argv[]) { "no-recmaster", 0, POPT_ARG_NONE, &options.no_recmaster, 0, "disable recmaster role on this node", NULL }, { "lvs", 0, POPT_ARG_NONE, &options.lvs, 0, "lvs is enabled on this node", NULL }, { "script-log-level", 0, POPT_ARG_INT, &options.script_log_level, DEBUG_ERR, "log level of event script output", NULL }, + { "nopublicipcheck", 0, POPT_ARG_NONE, &options.no_publicipcheck, 0, "dont check we have/dont have the correct public ip addresses", NULL }, POPT_TABLEEND }; int opt, ret; @@ -300,6 +302,8 @@ int main(int argc, const char *argv[]) ctdb->do_setsched = !options.no_setsched; + ctdb->do_checkpublicip = !options.no_publicipcheck; + if (getenv("CTDB_BASE") == NULL) { /* setup a environment variable for the event scripts to use to find the installation directory */