1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00
samba-mirror/ctdb/config
Martin Schwenke 176ae6c704 ctdb-eventscripts: Deleting IPs should use the promote_secondaries option
If a primary IP address is being deleted from an interface, the
secondaries are remembered and added back after the primary is
deleted.  This is done under a lock shared by the add/del script code.
It is necessary because, by default, Linux deletes secondaries when
the corresponding primary is deleted.

There is a race here between ctdbd and the scripts, since ctdbd
doesn't know about the lock.  If ctdbd receives a release IP control
and the IP address is not on an interface then it is regarded as a
"Redundant release of IP" so no "releaseip" event is generated.  This
can occur if the IP address in question is a secondary that has been
temporarily dropped.  It is more likely if the number of secondaries
is large.

Since Linux 2.6.12 (i.e. 2005) Linux has supported a
promote_secondaries option on interfaces.  This option is currently
undocumented but that will change in Linux 3.14.  With
promote_secondaries enabled the kernel will not drop secondaries but
will promote a corresponding secondary instead.  The kernel does all
necessary locking.

Use promote_secondaries to simplify the code, avoid re-adding
secondaries, avoid re-adding routes and provide improved performance.

This could be done conditionally, with a fallback to legacy
secondary-re-adding code, but no supported Linux distribution is
running a pre-2.6.12 kernel so this is unnecessary.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
2014-02-13 02:03:24 +01:00
..
events.d ctdb-eventscripts: Deleting IPs should use the promote_secondaries option 2014-02-13 02:03:24 +01:00
nfs-rpc-checks.d eventscripts: Become unhealthy faster on nfsd failure 2013-08-14 16:10:30 +10:00
ctdb-crash-cleanup.sh scripts: drop_all_public_ips() now prints messages to stdout, not log 2013-06-20 13:01:09 +10:00
ctdb.init Add missing $remote_fs LSB dependency 2013-10-24 16:54:08 +11:00
ctdb.service initscript: Update systemd configuration to put PID file in /run/ctdb 2013-10-25 12:06:07 +11:00
ctdb.sudoers statd-callout: Make sure statd callout script always runs as root 2013-04-08 11:14:28 +10:00
ctdb.sysconfig ctdb-config: Simplify the default CTDB configuration file 2013-11-27 18:46:17 +01:00
ctdbd_wrapper initscript: New configuration variable CTDB_DBDIR_STATE 2013-10-22 14:34:05 +11:00
debug_locks.sh ctdb-scripts: Be careful when generating unique pids for stack traces 2013-11-27 18:46:17 +01:00
debug-hung-script.sh scripts: Do not run ctdb tool commands when debugging hung "init" event 2013-08-09 11:04:55 +10:00
functions ctdb-eventscripts: Deleting IPs should use the promote_secondaries option 2014-02-13 02:03:24 +01:00
gcore_trace.sh common: Debug ctdb_addr_to_str() using new function ctdb_external_trace() 2012-10-18 20:05:42 +11:00
notify.d.README scripts: Rework notify.sh to use notify.d/ directory 2013-05-23 16:18:23 +10:00
notify.sh scripts: Rework notify.sh to use notify.d/ directory 2013-05-23 16:18:23 +10:00
README Eventscript support - Remove unused interface_modify.sh 2012-03-22 15:30:27 +11:00
statd-callout ctdb-scripts: Add an early exit to statd-callout's notify case 2013-11-27 18:46:16 +01:00

This directory contains run-time support scripts for CTDB.

Selected highlights:

  ctdb.init

    An initscript for starting ctdbd at boot time.

  events.d/

    Eventscripts.  See events.d/README for more details.

  functions

    Support functions, sourced by eventscripts and other scripts.

  statd-callout

    rpc.statd high-availability callout to support lock migration on
    failover.

Notes:

* All of these scripts are written in POSIX Bourne shell.  Please
  avoid bash-isms, including the use of "local" variables (which are
  not available in POSIX shell).

* Do not use absolute paths for commands.  Unit tests attempt to
  replace many commands with stubs and can not do this if commands are
  specified with absolute paths.  The functions file controls $PATH so
  absolute paths should not be required.