[SCM] CTDB repository - branch master updated - ctdb-1.0.59-3-g6b76c52

Ronnie Sahlberg sahlberg at samba.org
Mon Oct 13 23:42:05 GMT 2008


The branch, master has been updated
       via  6b76c520f97127099bd9fbaa0fa7af1c61947fb7 (commit)
      from  dc9cd4779db4a89697731e4cf415be51067a07c1 (commit)

http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6b76c520f97127099bd9fbaa0fa7af1c61947fb7
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue Oct 14 10:40:29 2008 +1100

    update TAKEIP/RELEASEIP/GETPUBLICIP/GETNODEMAP controls so we retain an
    older ipv4-only version of these controls.
    
    We need this so that we are backwardcompatible with old versions of ctdb
    and so that we can interoperate with a ipv4-only recmaster during a
    rolling upgrade.

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

Summary of changes:
 client/ctdb_client.c   |   69 ++++++-
 common/ctdb_util.c     |   14 +-
 doc/ctdbd.1            |  562 ++++++++++++++++++++++++++++++++++++------------
 include/ctdb_private.h |   47 ++++-
 server/ctdb_control.c  |   15 ++
 server/ctdb_recover.c  |   35 +++
 server/ctdb_takeover.c |  143 +++++++++++--
 7 files changed, 710 insertions(+), 175 deletions(-)


Changeset truncated at 500 lines:

diff --git a/client/ctdb_client.c b/client/ctdb_client.c
index 6d80efc..a4d2a2b 100644
--- a/client/ctdb_client.c
+++ b/client/ctdb_client.c
@@ -2050,14 +2050,26 @@ int ctdb_ctrl_takeover_ip(struct ctdb_context *ctdb, struct timeval timeout,
 			  uint32_t destnode, struct ctdb_public_ip *ip)
 {
 	TDB_DATA data;
+	struct ctdb_public_ipv4 ipv4;
 	int ret;
 	int32_t res;
 
-	data.dsize = sizeof(*ip);
-	data.dptr  = (uint8_t *)ip;
+	if (ip->addr.sa.sa_family == AF_INET) {
+		ipv4.pnn = ip->pnn;
+		ipv4.sin = ip->addr.ip;
 
-	ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_TAKEOVER_IP, 0, data, NULL,
+		data.dsize = sizeof(ipv4);
+		data.dptr  = (uint8_t *)&ipv4;
+
+		ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_TAKEOVER_IPv4, 0, data, NULL,
+			   NULL, &res, &timeout, NULL);
+	} else {
+		data.dsize = sizeof(*ip);
+		data.dptr  = (uint8_t *)ip;
+
+		ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_TAKEOVER_IP, 0, data, NULL,
 			   NULL, &res, &timeout, NULL);
+	}
 
 	if (ret != 0 || res != 0) {
 		DEBUG(DEBUG_ERR,(__location__ " ctdb_control for takeover_ip failed\n"));
@@ -2075,14 +2087,26 @@ int ctdb_ctrl_release_ip(struct ctdb_context *ctdb, struct timeval timeout,
 			 uint32_t destnode, struct ctdb_public_ip *ip)
 {
 	TDB_DATA data;
+	struct ctdb_public_ipv4 ipv4;
 	int ret;
 	int32_t res;
 
-	data.dsize = sizeof(*ip);
-	data.dptr  = (uint8_t *)ip;
+	if (ip->addr.sa.sa_family == AF_INET) {
+		ipv4.pnn = ip->pnn;
+		ipv4.sin = ip->addr.ip;
 
-	ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_RELEASE_IP, 0, data, NULL,
-			   NULL, &res, &timeout, NULL);
+		data.dsize = sizeof(ipv4);
+		data.dptr  = (uint8_t *)&ipv4;
+
+		ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_RELEASE_IPv4, 0, data, NULL,
+				   NULL, &res, &timeout, NULL);
+	} else {
+		data.dsize = sizeof(*ip);
+		data.dptr  = (uint8_t *)ip;
+
+		ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_RELEASE_IP, 0, data, NULL,
+				   NULL, &res, &timeout, NULL);
+	}
 
 	if (ret != 0 || res != 0) {
 		DEBUG(DEBUG_ERR,(__location__ " ctdb_control for release_ip failed\n"));
@@ -2241,6 +2265,37 @@ int ctdb_ctrl_get_public_ips(struct ctdb_context *ctdb,
 	return 0;
 }
 
+int ctdb_ctrl_get_public_ipsv4(struct ctdb_context *ctdb, 
+			struct timeval timeout, uint32_t destnode, 
+			TALLOC_CTX *mem_ctx, struct ctdb_all_public_ips **ips)
+{
+	int ret, i, len;
+	TDB_DATA outdata;
+	int32_t res;
+	struct ctdb_all_public_ipsv4 *ipsv4;
+
+	ret = ctdb_control(ctdb, destnode, 0, 
+			   CTDB_CONTROL_GET_PUBLIC_IPSv4, 0, tdb_null, 
+			   mem_ctx, &outdata, &res, &timeout, NULL);
+	if (ret != 0 || res != 0) {
+		DEBUG(DEBUG_ERR,(__location__ " ctdb_control for getpublicips failed\n"));
+		return -1;
+	}
+
+	ipsv4 = (struct ctdb_all_public_ipsv4 *)outdata.dptr;
+	len = offsetof(struct ctdb_all_public_ips, ips) +
+		ipsv4->num*sizeof(struct ctdb_public_ip);
+	*ips = talloc_zero_size(mem_ctx, len);
+	for (i=0; i<ipsv4->num; i++) {
+		(*ips)->ips[i].pnn     = ipsv4->ips[i].pnn;
+		(*ips)->ips[i].addr.ip = ipsv4->ips[i].sin;
+	}
+
+	talloc_free(outdata.dptr);
+		    
+	return 0;
+}
+
 /*
   set/clear the permanent disabled bit on a remote node
  */
diff --git a/common/ctdb_util.c b/common/ctdb_util.c
index cc68291..7c2b171 100644
--- a/common/ctdb_util.c
+++ b/common/ctdb_util.c
@@ -362,12 +362,12 @@ void set_close_on_exec(int fd)
 }
 
 
-static bool parse_ipv4(const char *s, unsigned port, ctdb_sock_addr *saddr)
+bool parse_ipv4(const char *s, unsigned port, struct sockaddr_in *sin)
 {
-	saddr->ip.sin_family = AF_INET;
-	saddr->ip.sin_port   = htons(port);
+	sin->sin_family = AF_INET;
+	sin->sin_port   = htons(port);
 
-	if (inet_pton(AF_INET, s, &saddr->ip.sin_addr) != 1) {
+	if (inet_pton(AF_INET, s, &sin->sin_addr) != 1) {
 		DEBUG(DEBUG_ERR, (__location__ " Failed to translate %s into sin_addr\n", s));
 		return false;
 	}
@@ -427,7 +427,7 @@ bool parse_ip_port(const char *addr, ctdb_sock_addr *saddr)
 	/* now is this a ipv4 or ipv6 address ?*/
 	p = index(s, ':');
 	if (p == NULL) {
-		ret = parse_ipv4(s, port, saddr);
+		ret = parse_ipv4(s, port, &saddr->ip);
 	} else {
 		ret = parse_ipv6(s, port, saddr);
 	}
@@ -447,7 +447,7 @@ bool parse_ip(const char *addr, ctdb_sock_addr *saddr)
 	/* now is this a ipv4 or ipv6 address ?*/
 	p = index(addr, ':');
 	if (p == NULL) {
-		ret = parse_ipv4(addr, 0, saddr);
+		ret = parse_ipv4(addr, 0, &saddr->ip);
 	} else {
 		ret = parse_ipv6(addr, 0, saddr);
 	}
@@ -493,7 +493,7 @@ bool parse_ip_mask(const char *str, ctdb_sock_addr *addr, unsigned *mask)
 	/* now is this a ipv4 or ipv6 address ?*/
 	p = index(s, ':');
 	if (p == NULL) {
-		ret = parse_ipv4(s, 0, addr);
+		ret = parse_ipv4(s, 0, &addr->ip);
 	} else {
 		ret = parse_ipv6(s, 0, addr);
 	}
diff --git a/doc/ctdbd.1 b/doc/ctdbd.1
index 0ffcb8a..356818f 100644
--- a/doc/ctdbd.1
+++ b/doc/ctdbd.1
@@ -1,443 +1,729 @@
 .\"     Title: ctdbd
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.2 <http://docbook.sf.net/>
-.\"      Date: 09/15/2008
-.\"    Manual: 
-.\"    Source: 
+.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 10/14/2008
+.\"    Manual: [FIXME: manual]
+.\"    Source: [FIXME: source]
+.\"  Language: English
 .\"
-.TH "CTDBD" "1" "09/15/2008" "" ""
+.TH "CTDBD" "1" "10/14/2008" "[FIXME: source]" "[FIXME: manual]"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
-ctdbd - The CTDB cluster daemon
-.SH "SYNOPSIS"
-.HP 6
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+ctdbd \- The CTDB cluster daemon
+.SH "Synopsis"
+.fam C
+.HP \w'\fBctdbd\fR\ 'u
 \fBctdbd\fR
-.HP 6
+.fam
+.fam C
+.HP \w'\fBctdbd\fR\ 'u
 \fBctdbd\fR [\-?\ \-\-help] [\-d\ \-\-debug=<INTEGER>] {\-\-dbdir=<directory>} {\-\-dbdir\-persistent=<directory>} [\-\-event\-script\-dir=<directory>] [\-i\ \-\-interactive] [\-\-listen=<address>] [\-\-logfile=<filename>] [\-\-lvs] {\-\-nlist=<filename>} [\-\-no\-lmaster] [\-\-no\-recmaster] [\-\-nosetsched] [\-\-public\-addresses=<filename>] [\-\-public\-interface=<interface>] {\-\-reclock=<filename>} [\-\-single\-public\-ip=<address>] [\-\-socket=<filename>] [\-\-start\-as\-disabled] [\-\-syslog] [\-\-torture] [\-\-transport=<STRING>] [\-\-usage]
+.fam
 .SH "DESCRIPTION"
 .PP
-ctdbd is the main ctdb daemon\.
+ctdbd is the main ctdb daemon\&.
 .PP
-ctdbd provides a clustered version of the TDB database with automatic rebuild/recovery of the databases upon nodefailures\.
+ctdbd provides a clustered version of the TDB database with automatic rebuild/recovery of the databases upon nodefailures\&.
 .PP
-Combined with a cluster filesystem ctdbd provides a full HA environment for services such as clustered Samba and NFS as well as other services\.
+Combined with a cluster filesystem ctdbd provides a full HA environment for services such as clustered Samba and NFS as well as other services\&.
 .PP
-ctdbd provides monitoring of all nodes in the cluster and automatically reconfigures the cluster and recovers upon node failures\.
+ctdbd provides monitoring of all nodes in the cluster and automatically reconfigures the cluster and recovers upon node failures\&.
 .PP
-ctdbd is the main component in clustered Samba that provides a high\-availability load\-sharing CIFS server cluster\.
+ctdbd is the main component in clustered Samba that provides a high\-availability load\-sharing CIFS server cluster\&.
 .SH "OPTIONS"
 .PP
 \-? \-\-help
 .RS 4
-Print some help text to the screen\.
+Print some help text to the screen\&.
 .RE
 .PP
 \-d \-\-debug=<DEBUGLEVEL>
 .RS 4
-This option sets the debuglevel on the ctdbd daemon which controls what will be written to the logfile\. The default is 0 which will only log important events and errors\. A larger number will provide additional logging\.
+This option sets the debuglevel on the ctdbd daemon which controls what will be written to the logfile\&. The default is 0 which will only log important events and errors\&. A larger number will provide additional logging\&.
 .RE
 .PP
 \-\-dbdir=<directory>
 .RS 4
-This is the directory on local storage where ctdbd keeps the local copy of the TDB databases\. This directory is local for each node and should not be stored on the shared cluster filesystem\.
+This is the directory on local storage where ctdbd keeps the local copy of the TDB databases\&. This directory is local for each node and should not be stored on the shared cluster filesystem\&.
 .sp
-This directory would usually be /var/ctdb \.
+This directory would usually be /var/ctdb \&.
 .RE
 .PP
 \-\-dbdir\-persistent=<directory>
 .RS 4
-This is the directory on local storage where ctdbd keeps the local copy of the persistent TDB databases\. This directory is local for each node and should not be stored on the shared cluster filesystem\.
+This is the directory on local storage where ctdbd keeps the local copy of the persistent TDB databases\&. This directory is local for each node and should not be stored on the shared cluster filesystem\&.
 .sp
-This directory would usually be /etc/ctdb/persistent \.
+This directory would usually be /etc/ctdb/persistent \&.
 .RE
 .PP
 \-\-event\-script\-dir=<directory>
 .RS 4
-This option is used to specify the directory where the CTDB event scripts are stored\.
+This option is used to specify the directory where the CTDB event scripts are stored\&.
 .sp
-This will normally be /etc/ctdb/events\.d which is part of the ctdb distribution\.
+This will normally be /etc/ctdb/events\&.d which is part of the ctdb distribution\&.
 .RE
 .PP
 \-i \-\-interactive
 .RS 4
-By default ctdbd will detach itself from the shell and run in the background as a daemon\. This option makes ctdbd to start in interactive mode\.
+By default ctdbd will detach itself from the shell and run in the background as a daemon\&. This option makes ctdbd to start in interactive mode\&.
 .RE
 .PP
 \-\-listen=<address>
 .RS 4
-This specifies which ip address ctdb will bind to\. By default ctdbd will bind to the first address it finds in the /etc/ctdb/nodes file and which is also present on the local system in which case you do not need to provide this option\.
+This specifies which ip address ctdb will bind to\&. By default ctdbd will bind to the first address it finds in the /etc/ctdb/nodes file and which is also present on the local system in which case you do not need to provide this option\&.
 .sp
-This option is only required when you want to run multiple ctdbd daemons/nodes on the same physical host in which case there would be multiple entries in /etc/ctdb/nodes what would match a local interface\.
+This option is only required when you want to run multiple ctdbd daemons/nodes on the same physical host in which case there would be multiple entries in /etc/ctdb/nodes what would match a local interface\&.
 .RE
 .PP
 \-\-logfile=<filename>
 .RS 4
-This is the file where ctdbd will write its log\. This is usually /var/log/log\.ctdb \.
+This is the file where ctdbd will write its log\&. This is usually /var/log/log\&.ctdb \&.
 .RE
 .PP
 \-\-lvs
 .RS 4
-This option is used to activate the LVS capability on a CTDB node\. Please see the LVS section\.
+This option is used to activate the LVS capability on a CTDB node\&. Please see the LVS section\&.
 .RE
 .PP
 \-\-nlist=<filename>
 .RS 4
-This file contains a list of the private ip addresses of every node in the cluster\. There is one line/ip address for each node\. This file must be the same for all nodes in the cluster\.
+This file contains a list of the private ip addresses of every node in the cluster\&. There is one line/ip address for each node\&. This file must be the same for all nodes in the cluster\&.
 .sp
-This file is usually /etc/ctdb/nodes \.
+This file is usually /etc/ctdb/nodes \&.
 .RE
 .PP
 \-\-no\-lmaster
 .RS 4
-This argument specifies that this node can NOT become an lmaster for records in the database\. This means that it will never show up in the vnnmap\. This feature is primarily used for making a cluster span across a WAN link and use CTDB as a WAN\-accelerator\.
+This argument specifies that this node can NOT become an lmaster for records in the database\&. This means that it will never show up in the vnnmap\&. This feature is primarily used for making a cluster span across a WAN link and use CTDB as a WAN\-accelerator\&.
 .sp
-Please see the "remote cluster nodes" section for more information\.
+Please see the "remote cluster nodes" section for more information\&.
 .RE
 .PP
 \-\-no\-recmaster
 .RS 4
-This argument specifies that this node can NOT become a recmaster for the database\. This feature is primarily used for making a cluster span across a WAN link and use CTDB as a WAN\-accelerator\.
+This argument specifies that this node can NOT become a recmaster for the database\&. This feature is primarily used for making a cluster span across a WAN link and use CTDB as a WAN\-accelerator\&.
 .sp
-Please see the "remote cluster nodes" section for more information\.
+Please see the "remote cluster nodes" section for more information\&.
 .RE
 .PP
 \-\-nosetsched
 .RS 4
-This is a ctdbd debugging option\. this option is only used when debugging ctdbd\.
+This is a ctdbd debugging option\&. this option is only used when debugging ctdbd\&.
 .sp
-Normally ctdb will change its scheduler to run as a real\-time process\. This is the default mode for a normal ctdbd operation to gurarantee that ctdbd always gets the cpu cycles that it needs\.
+Normally ctdb will change its scheduler to run as a real\-time process\&. This is the default mode for a normal ctdbd operation to gurarantee that ctdbd always gets the cpu cycles that it needs\&.
 .sp
-This option is used to tell ctdbd to NOT run as a real\-time process and instead run ctdbd as a normal userspace process\. This is useful for debugging and when you want to run ctdbd under valgrind or gdb\. (You dont want to attach valgrind or gdb to a real\-time process\.)
+This option is used to tell ctdbd to NOT run as a real\-time process and instead run ctdbd as a normal userspace process\&. This is useful for debugging and when you want to run ctdbd under valgrind or gdb\&. (You dont want to attach valgrind or gdb to a real\-time process\&.)
 .RE
 .PP
 \-\-public_addresses=<filename>
 .RS 4
-When used with IP takeover this specifies a file containing the public ip addresses to use on the cluster\. This file contains a list of ip addresses netmasks and interfaces\. When ctdb is operational it will distribute these public ip addresses evenly across the available nodes\.
+When used with IP takeover this specifies a file containing the public ip addresses to use on the cluster\&. This file contains a list of ip addresses netmasks and interfaces\&. When ctdb is operational it will distribute these public ip addresses evenly across the available nodes\&.
 .sp
 This is usually the file /etc/ctdb/public_addresses
 .RE
 .PP
 \-\-public\-interface=<interface>
 .RS 4
-This option tells ctdb which interface to attach public\-addresses to and also where to attach the single\-public\-ip when used\.
+This option tells ctdb which interface to attach public\-addresses to and also where to attach the single\-public\-ip when used\&.
 .sp
-This is only required when using public ip addresses and only when you dont specify the interface explicitly in /etc/ctdb/public_addresses or when you are using \-\-single\-public\-ip\.
+This is only required when using public ip addresses and only when you dont specify the interface explicitly in /etc/ctdb/public_addresses or when you are using \-\-single\-public\-ip\&.
 .sp
-If you omit this argument when using public addresses or single public ip, ctdb will not be able to send out Gratious ARPs correctly or be able to kill tcp connections correctly which will lead to application failures\.
+If you omit this argument when using public addresses or single public ip, ctdb will not be able to send out Gratious ARPs correctly or be able to kill tcp connections correctly which will lead to application failures\&.
 .RE
 .PP
 \-\-reclock=<filename>
 .RS 4
-This is the name of the lock file stored of the shared cluster filesystem that ctdbd uses to arbitrate which node has the role of recovery\-master\. This file must be stored on shared storage\.
+This is the name of the lock file stored of the shared cluster filesystem that ctdbd uses to arbitrate which node has the role of recovery\-master\&. This file must be stored on shared storage\&.
 .RE
 .PP
 \-\-single\-public\-ip=<address>
 .RS 4
-This option is used to activate the "ipmux" or the "lvs" functionality of ctdb where the cluster provides a single public ip address for the entire cluster\. When using this option you must also use the \-\-public\-interface option\.
+This option is used to activate the "ipmux" or the "lvs" functionality of ctdb where the cluster provides a single public ip address for the entire cluster\&. When using this option you must also use the \-\-public\-interface option\&.
 .sp


-- 
CTDB repository


More information about the samba-cvs mailing list