[SCM] CTDB repository - branch master updated - c26afe26cc5c1f9cd9eef74166b5fc39dde591d3

Andrew Tridgell tridge at samba.org
Sun Jul 13 23:46:44 GMT 2008


The branch, master has been updated
       via  c26afe26cc5c1f9cd9eef74166b5fc39dde591d3 (commit)
       via  f8c5f6ff1cae747aae917c454b49dc5db227e140 (commit)
       via  1de62d1ad71fa784d5e93f76da8f872cad9b9f42 (commit)
       via  15bc66ae801b0c69a65a7a2acf5df151e76edc2a (commit)
       via  f4a6dd98c86f2028c00b62313a071a94cafc95f9 (commit)
       via  b18a1b59ecd8913e03a59b1a105002f2c9221324 (commit)
       via  f7bdf96843a7e4ad61ad378786922d6281de9d93 (commit)
       via  dfaf2c1581e547df831b3171ad47acd27b4ca2af (commit)
       via  c47acc0eb2e1275a6c6fc05829bd1131d999f8fd (commit)
       via  2cc9aba3d7e608eccc29c897f710b69f30653bbf (commit)
       via  919af5aadb797cfdd10473b6a1269f4ae2a9dbda (commit)
       via  d94e76bfb3e464c0540331caf282efc13ff60e42 (commit)
       via  563cdf2bd9cca358d234c797d8e1d9c8838c6ca6 (commit)
       via  b2ccb891b81b041e2186e038b67bb4354b7892aa (commit)
       via  00025eef662b867293829228c681df491cd6f371 (commit)
       via  172d01fb34f032e098b1c77a7b0f17bf11301640 (commit)
       via  dd900d4ed8f07003c4f1db2d441cfc2ef2c89ef5 (commit)
       via  90ab48bb8e17f59fcb27ddbff51de546c4447b64 (commit)
       via  3c3d3ac5f7dec258589aaaf0633cab3b3af65cf3 (commit)
       via  77458b2b6b51b2970c12b0e5b097088d3fb9d358 (commit)
       via  02ed800f3c09e2a3d56de5ae226708d0953dd4a1 (commit)
       via  cb67382603ffabda7f7f958b494c79b4a3c5ebe2 (commit)
       via  a77850d8baebcf0b216d7c1391da9cce1c43ce2e (commit)
       via  8814997c1b9623397058088dd0e1775cecfe371b (commit)
       via  bd7b254b81dda4d9d62516abf32f93f2503eb9bb (commit)
       via  36be210bbc5e0af75c5fd6e57863272bfa0e942e (commit)
       via  becce6a9a759730d0c675a56516bb0a32a54c9f3 (commit)
       via  8f6cd88e74de24af8dde2b6cabb2348c4f914b99 (commit)
       via  77255bb5523b8d132770a0a7d4ba29ec9e5043cc (commit)
       via  fd7bb21c4f9289fc34a57f9d8cb7c13a02d06096 (commit)
       via  702ced6c2fe569c01fe96c60d0f35a7e61506a96 (commit)
       via  2030e9ff2ca044181b72c3b87d513bf27057b5a2 (commit)
       via  b1f1e80d3ad50280a300f2ed021513cf0a6f3a76 (commit)
       via  b4b2408ba1bdce22abb3fb19d398b72e96da6505 (commit)
       via  a4e89f57a8d733ea74df7b0de31eb977d6d37388 (commit)
       via  bfba5c7249eff8a10a43b53c1b89dd44b625fd10 (commit)
       via  60f3c04bd8b20ecbe937ffed08875cdc6898b422 (commit)
       via  6043f926f89b361c7fe14fc60d2769fd2ba63dfc (commit)
       via  80e249512f93bca2445d40590db38d31be2aafd7 (commit)
       via  f4929e164be1703f74fc332e740b85cfe1ae3e73 (commit)
       via  ff2985aaef999d180277db4cf644fee0ea79c14d (commit)
       via  45b6ff64f6ddf037b810c4e5f8b9f04d71067b98 (commit)
      from  5168e9fa138995581fe5805f99ae569ce3c127f7 (commit)

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


- Log -----------------------------------------------------------------
commit c26afe26cc5c1f9cd9eef74166b5fc39dde591d3
Author: Andrew Tridgell <tridge at samba.org>
Date:   Mon Jul 14 09:19:22 2008 +1000

    fixed up exit status for onnode

commit f8c5f6ff1cae747aae917c454b49dc5db227e140
Merge: 5168e9fa138995581fe5805f99ae569ce3c127f7 1de62d1ad71fa784d5e93f76da8f872cad9b9f42
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Jul 11 19:21:39 2008 +1000

    Merge commit 'ronnie/master'

commit 1de62d1ad71fa784d5e93f76da8f872cad9b9f42
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Fri Jul 11 11:48:41 2008 +1000

    new version 1.0.47
    
    Signed-off-by: Ronnie Sahlberg <ronniesahlberg at gmail.com>

commit 15bc66ae801b0c69a65a7a2acf5df151e76edc2a
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Fri Jul 11 10:33:46 2008 +1000

    Fix a very subtle race where we could get a double free of a talloced
    memory if ctdb_run_eventscript() would be called
    during processing of ctdb_event_script_timeout() for
    user unvoked eventscripts. (eventsccripts invoked by "ctdb eventscript ...")
    
    Signed-off-by: Ronnie Sahlberg <ronniesahlberg at gmail.com>

commit f4a6dd98c86f2028c00b62313a071a94cafc95f9
Author: Martin Schwenke <martin at meltin.net>
Date:   Fri Jul 11 09:24:21 2008 +1000

    Signed-off-by: Martin Schwenke <martin at meltin.net>
    
    Update packaging/RPM/ctdb.spec to reflect onnode changes.

commit b18a1b59ecd8913e03a59b1a105002f2c9221324
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 17:06:52 2008 +1000

    Revert "Yip yip yip!"
    
    This reverts commit f7bdf96843a7e4ad61ad378786922d6281de9d93.

commit f7bdf96843a7e4ad61ad378786922d6281de9d93
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Jul 10 16:56:30 2008 +1000

    Yip yip yip!

commit dfaf2c1581e547df831b3171ad47acd27b4ca2af
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Jul 10 14:19:52 2008 +1000

    When in verbose mode with -p, each line is prefixed with the node
    address/name.  To implement this stderr has redirected to stdout -
    this doesn't need to be done but is the simplest implementation.
    Remove -t option since it doesn't seem to accomplish much but causes
    spurious messages to be displayed by ssh.  Add explicit -h and --help
    options.  Make style of usage message consistent with documentation.
    Document new features in doc/onnode.1.xml.

commit c47acc0eb2e1275a6c6fc05829bd1131d999f8fd
Author: Martin Schwenke <martin at meltin.net>
Date:   Wed Jul 9 14:23:02 2008 +1000

    Update Makefile.in for new version of onnode.

commit 2cc9aba3d7e608eccc29c897f710b69f30653bbf
Author: Martin Schwenke <martin at meltin.net>
Date:   Wed Jul 9 14:18:15 2008 +1000

    Complete rewrite of tools/onnode.  Remove old tools/onnode.ssh,
    tools/onnode.rsh.

commit 919af5aadb797cfdd10473b6a1269f4ae2a9dbda
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 13:40:00 2008 +1000

    explain why you have to have a real ip address as well as the "virtual"
    ip address for lvs

commit d94e76bfb3e464c0540331caf282efc13ff60e42
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 13:00:50 2008 +1000

    new version 10.0.46

commit 563cdf2bd9cca358d234c797d8e1d9c8838c6ca6
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 12:50:16 2008 +1000

    add documentation for both LVS:single-ip and CAPABILITIES:wan-accelerator

commit b2ccb891b81b041e2186e038b67bb4354b7892aa
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 11:42:37 2008 +1000

    Update to the LVS eventscript.
    Do not assume all nodes are members of LVS so always deciding the recmaster will be lvsmaster wont work.
    
    Instead,
    Create the set of active LVS nodes as those nodes that are LVS capable and
    also HEALTHY.
    Except if ALL LVS capable nodes are unhealthy in which case we allow the unhealthy
    nodes to be part of the active set.
    
    In the active set, pick one of the active nodes as being the lvsmaster
    which will receive all incoming traffic and distribute it across
    the active lvs nodes in the cluster.

commit 00025eef662b867293829228c681df491cd6f371
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 11:12:58 2008 +1000

    Add three mode commands to the CTDB tool.
    
    lvs: which shows which nodes are active LVS servers
    lvsmaster: which shows which node is the lvs master multiplex node
    pnn: which prints the pnn of the local node

commit 172d01fb34f032e098b1c77a7b0f17bf11301640
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 10:37:22 2008 +1000

    make LVS a capability so that we can see which nodes are configured with
    LVS and which are not using LVS.
    
    "ctdb getcapabilities"

commit dd900d4ed8f07003c4f1db2d441cfc2ef2c89ef5
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 08:56:33 2008 +1000

    add an option to skip checking that all the samba shares are ok
    when monitoring the node health.
    this might be useful to skip for environments with thousands of shares

commit 90ab48bb8e17f59fcb27ddbff51de546c4447b64
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Thu Jul 10 08:05:34 2008 +1000

    remove the attempts to restart NFS.
    
    nfs should never stop spontaneously so trying to restart it is
    just counterproductive and at best a workaround to
    hide real bugs.

commit 3c3d3ac5f7dec258589aaaf0633cab3b3af65cf3
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 15:17:27 2008 +1000

    if we have enabled LVS   but we dont have all the required packages
    just log it to the messages
    dont stop ctdb from starting

commit 77458b2b6b51b2970c12b0e5b097088d3fb9d358
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 14:02:54 2008 +1000

    proper waitpid() fix.
    remove all waitpid() calls and use the event system to trap sigchld

commit 02ed800f3c09e2a3d56de5ae226708d0953dd4a1
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 13:14:47 2008 +1000

    Revert "pull the development files out into their own package"
    
    This reverts commit 36be210bbc5e0af75c5fd6e57863272bfa0e942e.

commit cb67382603ffabda7f7f958b494c79b4a3c5ebe2
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 13:14:34 2008 +1000

    Revert "add spec file for development rpm"
    
    This reverts commit bd7b254b81dda4d9d62516abf32f93f2503eb9bb.

commit a77850d8baebcf0b216d7c1391da9cce1c43ce2e
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 13:14:07 2008 +1000

    Revert "copy ctdb-dev to the spec directory"
    
    This reverts commit 8814997c1b9623397058088dd0e1775cecfe371b.

commit 8814997c1b9623397058088dd0e1775cecfe371b
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 13:07:17 2008 +1000

    copy ctdb-dev to the spec directory

commit bd7b254b81dda4d9d62516abf32f93f2503eb9bb
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 11:37:02 2008 +1000

    add spec file for development rpm

commit 36be210bbc5e0af75c5fd6e57863272bfa0e942e
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 11:32:19 2008 +1000

    pull the development files out into their own package

commit becce6a9a759730d0c675a56516bb0a32a54c9f3
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 11:08:44 2008 +1000

    install the readme in /usr/share/doc/ctdb/ instead of under /etc

commit 8f6cd88e74de24af8dde2b6cabb2348c4f914b99
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 10:24:19 2008 +1000

     mark /etc/ctdb/functions as a config file to keep rpmlint happy

commit 77255bb5523b8d132770a0a7d4ba29ec9e5043cc
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 10:17:39 2008 +1000

    From Chris Cowan,  patch to make aix compile again

commit fd7bb21c4f9289fc34a57f9d8cb7c13a02d06096
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Jul 9 10:03:21 2008 +1000

    Replace \s with [[:space:]] in our regexps we use for egrep.
    
    Kevin Collins noticed that RHEL5 grep-2.5.1-54.2.el5 built for
    x86 does not handle \s    while the exact same RHEL5 package for amd64
    does!
    
    [[:space:]] is more portable.  Even across the same package version ( different architecture ) from the same vendor :-)

commit 702ced6c2fe569c01fe96c60d0f35a7e61506a96
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue Jul 8 17:41:31 2008 +1000

    Revert "waitpid() can block if it takes a long time before the child terminates"
    
    This reverts commit bfba5c7249eff8a10a43b53c1b89dd44b625fd10.
    
    revert the waitpid changes.   we need to waitpid for some childredn so should
    refactor the approach completely

commit 2030e9ff2ca044181b72c3b87d513bf27057b5a2
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue Jul 8 17:40:53 2008 +1000

    Revert "set sigchild to SIG_IGN instead of SIG_DFL"
    
    This reverts commit b1f1e80d3ad50280a300f2ed021513cf0a6f3a76.

commit b1f1e80d3ad50280a300f2ed021513cf0a6f3a76
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue Jul 8 16:31:23 2008 +1000

    set sigchild to SIG_IGN instead of SIG_DFL

commit b4b2408ba1bdce22abb3fb19d398b72e96da6505
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue Jul 8 10:03:57 2008 +1000

    new version 1.0.45

commit a4e89f57a8d733ea74df7b0de31eb977d6d37388
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue Jul 8 09:58:10 2008 +1000

    update the monitor event for nfs to track how many times in a row it has failed
    to "ping" the local nfs daemon.
    
    Once it has failed more than 3 times in a row it will attempt to restart the nfs service.

commit bfba5c7249eff8a10a43b53c1b89dd44b625fd10
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Tue Jul 8 03:48:11 2008 +1000

    waitpid() can block if it takes a long time before the child terminates
    so we should not call it from the main daemon.
    
    1, set SIGCHLD to SIG_DFL to make sure we ignore this signal
    
    2, get rid of all waitpid() calls
    
    3, change reporting of event script status code from _exit()/waitpid()   to write()/read() one byte across the pipe.

commit 60f3c04bd8b20ecbe937ffed08875cdc6898b422
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Mon Jul 7 20:38:59 2008 +1000

    use more libral handling of event scripts timing out.
    
    If the event script that timed out was for the "monitor" event, then
    even if it timed out we still return SUCCESS back to the guy invoking the eventscript.
    Only consider the eventscript for "monitor" to have failed with an error
    IFF it actually terminated with an error,   or if it timed out 5 times in a row and hung.

commit 6043f926f89b361c7fe14fc60d2769fd2ba63dfc
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Mon Jul 7 09:07:49 2008 +1000

    new version .44

commit 80e249512f93bca2445d40590db38d31be2aafd7
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Mon Jul 7 08:53:22 2008 +1000

    zero out the sockaddr_in structure before we store the ipv4 data in it to make sure that all data is initialized. Othervise valgrind will complain about uninitialized data when we write this structure out on the wire

commit f4929e164be1703f74fc332e740b85cfe1ae3e73
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Mon Jul 7 08:52:04 2008 +1000

    we need a 'case x:' in our ugly 'encode the control opcode as a linenumber in valgrind output' hack to make it work

commit ff2985aaef999d180277db4cf644fee0ea79c14d
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Mon Jul 7 08:51:05 2008 +1000

    If a transaction commit fails. Log this error and cancel all pending transactions to the
    databases instead of calling ctdb_fatal()

commit 45b6ff64f6ddf037b810c4e5f8b9f04d71067b98
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Mon Jul 7 08:50:12 2008 +1000

     in the destructor for the lock-wait child, make sure that we cancel any pending
    transactions.

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

Summary of changes:
 Makefile.in              |   11 +-
 common/ctdb_util.c       |    2 +
 common/system_aix.c      |   82 +++++++----
 config/ctdb.init         |    3 +
 config/ctdb.sysconfig    |    5 +
 config/events.d/50.samba |    7 +-
 config/events.d/60.nfs   |    3 +-
 config/events.d/91.lvs   |   13 ++-
 config/functions         |    9 +-
 doc/ctdb.1               |   45 ++++++-
 doc/ctdb.1.html          |  132 ++++++++++++------
 doc/ctdb.1.xml           |   78 +++++++++++
 doc/ctdbd.1              |   93 ++++++++++++-
 doc/ctdbd.1.html         |  155 ++++++++++++++++++---
 doc/ctdbd.1.xml          |  179 ++++++++++++++++++++++++
 doc/onnode.1             |  347 ++++++++++++++++++++++++++++++++++++++++++----
 doc/onnode.1.html        |   69 +++++++---
 doc/onnode.1.xml         |  126 ++++++++++++++---
 include/ctdb_private.h   |    2 +
 packaging/RPM/ctdb.spec  |   66 ++++++++-
 server/ctdb_daemon.c     |   32 +++++
 server/ctdb_freeze.c     |   38 +++++-
 server/ctdb_lockwait.c   |    2 -
 server/ctdb_persistent.c |    2 -
 server/ctdb_recover.c    |    1 -
 server/ctdb_recoverd.c   |   43 +++++-
 server/ctdb_traverse.c   |    1 -
 server/ctdb_tunables.c   |    2 +-
 server/ctdbd.c           |    5 +
 server/eventscript.c     |   57 ++++++--
 tools/ctdb.c             |  164 +++++++++++++++++++++-
 tools/onnode             |  203 +++++++++++++++++++++++++++
 tools/onnode.rsh         |   44 ------
 tools/onnode.ssh         |   44 ------
 34 files changed, 1751 insertions(+), 314 deletions(-)
 mode change 100644 => 100755 Makefile.in
 create mode 100755 tools/onnode
 delete mode 100644 tools/onnode.rsh
 delete mode 100755 tools/onnode.ssh


Changeset truncated at 500 lines:

diff --git a/Makefile.in b/Makefile.in
old mode 100644
new mode 100755
index 161e2e9..9b5ebe0
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,10 +1,12 @@
 #!gmake
 
+
 CC = @CC@
 prefix = @prefix@
 exec_prefix = @exec_prefix@
 datarootdir = @datarootdir@
 includedir = @includedir@
+docdir = /usr/share/doc
 libdir = @libdir@
 bindir = @bindir@
 sbindir = @sbindir@
@@ -170,15 +172,16 @@ install: all
 	mkdir -p $(DESTDIR)$(includedir)
 	mkdir -p $(DESTDIR)$(etcdir)/ctdb
 	mkdir -p $(DESTDIR)$(etcdir)/ctdb/events.d
+	mkdir -p $(DESTDIR)$(docdir)/ctdb
 	${INSTALLCMD} -m 755 bin/ctdb $(DESTDIR)$(bindir)
 	${INSTALLCMD} -m 755 bin/ctdb_ipmux $(DESTDIR)$(bindir)
 	${INSTALLCMD} -m 755 bin/ctdbd $(DESTDIR)$(sbindir)
 	${INSTALLCMD} -m 755 bin/smnotify $(DESTDIR)$(bindir)
 	${INSTALLCMD} -m 644 include/ctdb.h $(DESTDIR)$(includedir)
 	${INSTALLCMD} -m 644 include/ctdb_private.h $(DESTDIR)$(includedir) # for samba3
-	${INSTALLCMD} -m 755 config/functions $(DESTDIR)$(etcdir)/ctdb
+	${INSTALLCMD} -m 644 config/functions $(DESTDIR)$(etcdir)/ctdb
 	${INSTALLCMD} -m 755 config/statd-callout $(DESTDIR)$(etcdir)/ctdb
-	${INSTALLCMD} -m 644 config/events.d/README $(DESTDIR)$(etcdir)/ctdb/events.d
+	${INSTALLCMD} -m 644 config/events.d/README $(DESTDIR)/$(docdir)/ctdb/README.eventscripts
 	${INSTALLCMD} -m 755 config/events.d/00.ctdb $(DESTDIR)$(etcdir)/ctdb/events.d
 	${INSTALLCMD} -m 755 config/events.d/10.interface $(DESTDIR)$(etcdir)/ctdb/events.d
 	${INSTALLCMD} -m 755 config/events.d/40.vsftpd $(DESTDIR)$(etcdir)/ctdb/events.d
@@ -190,13 +193,11 @@ install: all
 	${INSTALLCMD} -m 755 config/events.d/90.ipmux $(DESTDIR)$(etcdir)/ctdb/events.d
 	${INSTALLCMD} -m 755 config/events.d/91.lvs $(DESTDIR)$(etcdir)/ctdb/events.d
 	${INSTALLCMD} -m 755 tools/ctdb_diagnostics $(DESTDIR)$(bindir)
-	${INSTALLCMD} -m 755 tools/onnode.ssh $(DESTDIR)$(bindir)
-	${INSTALLCMD} -m 755 tools/onnode.rsh $(DESTDIR)$(bindir)
+	${INSTALLCMD} -m 755 tools/onnode $(DESTDIR)$(bindir)
 	if [ -f doc/ctdb.1 ];then ${INSTALLCMD} -d $(DESTDIR)$(mandir)/man1; fi
 	if [ -f doc/ctdb.1 ];then ${INSTALLCMD} -m 644 doc/ctdb.1 $(DESTDIR)$(mandir)/man1; fi
 	if [ -f doc/ctdbd.1 ];then ${INSTALLCMD} -m 644 doc/ctdbd.1 $(DESTDIR)$(mandir)/man1; fi
 	if [ -f doc/onnode.1 ];then ${INSTALLCMD} -m 644 doc/onnode.1 $(DESTDIR)$(mandir)/man1; fi
-	cd $(DESTDIR)$(bindir) && ln -sf onnode.ssh onnode
 
 test: all
 	tests/run_tests.sh
diff --git a/common/ctdb_util.c b/common/ctdb_util.c
index 6856c17..1b0988d 100644
--- a/common/ctdb_util.c
+++ b/common/ctdb_util.c
@@ -394,6 +394,8 @@ bool parse_ip(const char *addr, ctdb_sock_addr *saddr)
  */
 bool parse_ip_mask(const char *s, struct sockaddr_in *ip, unsigned *mask)
 {
+	ZERO_STRUCT(*ip);
+
 	if (!parse_ip_num(s, &ip->sin_addr, mask, '/')) {
 		return false;
 	}
diff --git a/common/system_aix.c b/common/system_aix.c
index 8742a39..b08692d 100644
--- a/common/system_aix.c
+++ b/common/system_aix.c
@@ -23,8 +23,10 @@
 #include "system/network.h"
 #include "system/filesys.h"
 #include "system/wait.h"
-#include <netinet/if_ether.h>
 #include "../include/ctdb_private.h"
+#include <netinet/if_ether.h>
+#include <netinet/ip6.h>
+#include <net/if_arp.h>
 #include <sys/ndd_var.h>
 #include <sys/kinfo.h>
 #include <pcap.h>
@@ -113,47 +115,71 @@ static uint16_t tcp_checksum(uint16_t *data, size_t n, struct ip *ip)
   This can also be used to send RST segments (if rst is true) and also
   if correct seq and ack numbers are provided.
  */
-int ctdb_sys_send_tcp(int s,
-		      const struct sockaddr_in *dest, 
-		      const struct sockaddr_in *src,
+int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
+		      const ctdb_sock_addr *src,
 		      uint32_t seq, uint32_t ack, int rst)
 {
-	int ret;
+	int s;
+  	int ret;
+	uint32_t one = 1;
+	ctdb_sock_addr *tmpdest;
+	
 	struct {
 		struct ip ip;
 		struct tcphdr tcp;
-	} pkt;
+	} ip4pkt;
+
 
 	/* for now, we only handle AF_INET addresses */
-	if (src->sin_family != AF_INET || dest->sin_family != AF_INET) {
+	if (src->ip.sin_family != AF_INET || dest->ip.sin_family != AF_INET) {
 		DEBUG(DEBUG_CRIT,(__location__ " not an ipv4 address\n"));
 		return -1;
 	}
 
-	memset(&pkt, 0, sizeof(pkt));
-	pkt.ip.ip_v     = 4;
-	pkt.ip.ip_hl    = sizeof(pkt.ip)/4;
-	pkt.ip.ip_len   = htons(sizeof(pkt));
-	pkt.ip.ip_ttl   = 255;
-	pkt.ip.ip_p     = IPPROTO_TCP;
-	pkt.ip.ip_src.s_addr   = src->sin_addr.s_addr;
-	pkt.ip.ip_dst.s_addr   = dest->sin_addr.s_addr;
-	pkt.ip.ip_sum   = 0;
-
-	pkt.tcp.th_sport   = src->sin_port;
-	pkt.tcp.th_dport     = dest->sin_port;
-	pkt.tcp.th_seq      = seq;
-	pkt.tcp.th_ack    = ack;
-	pkt.tcp.th_flags  = TH_ACK;
+
+
+	s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+	if (s == -1) {
+		DEBUG(DEBUG_CRIT,(" failed to open raw socket (%s)\n",
+			 strerror(errno)));
+		return -1;
+	}
+
+	ret = setsockopt(s, IPPROTO_IP, IP_HDRINCL, &one, sizeof(one));
+	if (ret != 0) {
+		DEBUG(DEBUG_CRIT, (" failed to setup IP headers (%s)\n",
+			 strerror(errno)));
+		close(s);
+		return -1;
+	}
+
+	set_nonblocking(s);
+	set_close_on_exec(s);
+
+	memset(&ip4pkt, 0, sizeof(ip4pkt));
+	ip4pkt.ip.ip_v     = 4;
+	ip4pkt.ip.ip_hl    = sizeof(ip4pkt.ip)/4;
+	ip4pkt.ip.ip_len   = htons(sizeof(ip4pkt));
+	ip4pkt.ip.ip_ttl   = 255;
+	ip4pkt.ip.ip_p     = IPPROTO_TCP;
+	ip4pkt.ip.ip_src.s_addr   = src->ip.sin_addr.s_addr;
+	ip4pkt.ip.ip_dst.s_addr   = dest->ip.sin_addr.s_addr;
+	ip4pkt.ip.ip_sum   = 0;
+
+	ip4pkt.tcp.th_sport   = src->ip.sin_port;
+	ip4pkt.tcp.th_dport     = dest->ip.sin_port;
+	ip4pkt.tcp.th_seq      = seq;
+	ip4pkt.tcp.th_ack    = ack;
+	ip4pkt.tcp.th_flags  = TH_ACK;
 	if (rst) {
-		pkt.tcp.th_flags      = TH_RST;
+		ip4pkt.tcp.th_flags      = TH_RST;
 	}
-	pkt.tcp.th_off    = sizeof(pkt.tcp)/4;
-	pkt.tcp.th_win   = htons(1234);
-	pkt.tcp.th_sum    = tcp_checksum((uint16_t *)&pkt.tcp, sizeof(pkt.tcp), &pkt.ip);
+	ip4pkt.tcp.th_off    = sizeof(ip4pkt.tcp)/4;
+	ip4pkt.tcp.th_win   = htons(1234);
+	ip4pkt.tcp.th_sum    = tcp_checksum((uint16_t *)&ip4pkt.tcp, sizeof(ip4pkt.tcp), &ip4pkt.ip);
 
-	ret = sendto(s, &pkt, sizeof(pkt), 0, (struct sockaddr *)dest, sizeof(*dest));
-	if (ret != sizeof(pkt)) {
+	ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0, (struct sockaddr *)dest, sizeof(*dest));
+	if (ret != sizeof(ip4pkt)) {
 		DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
 		return -1;
 	}
diff --git a/config/ctdb.init b/config/ctdb.init
index 760d6de..72de84d 100755
--- a/config/ctdb.init
+++ b/config/ctdb.init
@@ -72,6 +72,9 @@ CTDB_OPTIONS="$CTDB_OPTIONS --reclock=$CTDB_RECOVERY_LOCK"
 [ -z "$CTDB_CAPABILITY_LMASTER" ] || [ "$CTDB_CAPABILITY_LMASTER" != "no" ] || {
 	CTDB_OPTIONS="$CTDB_OPTIONS --no-lmaster"
 }
+[ -z "$CTDB_LVS_PUBLIC_IP" ] || {
+	CTDB_OPTIONS="$CTDB_OPTIONS --lvs"
+}
 
 if [ "$CTDB_VALGRIND" = "yes" ]; then
     init_style="valgrind"
diff --git a/config/ctdb.sysconfig b/config/ctdb.sysconfig
index 25b3f28..9084f8e 100644
--- a/config/ctdb.sysconfig
+++ b/config/ctdb.sysconfig
@@ -42,6 +42,11 @@
 # default is to not manage Samba
 # CTDB_MANAGES_SAMBA=yes
 
+# should we skip the check of whether the shares that samba is exporting
+# is available or not. This may be useful if there are a huge number of shares
+# since checking each one of them might take a long time.
+# CTDB_SAMBA_SKIP_SHARE_CHECK="yes"
+
 # should ctdb manage starting/stopping Winbind service?
 # if left comented out then it will be autodetected based on smb.conf
 # CTDB_MANAGES_WINBIND=yes
diff --git a/config/events.d/50.samba b/config/events.d/50.samba
index 8363a1a..04ca6e7 100755
--- a/config/events.d/50.samba
+++ b/config/events.d/50.samba
@@ -113,8 +113,11 @@ case $cmd in
 	    exit 1
 	}
 
-	smb_dirs=`testparm -s 2> /dev/null | egrep '^[[:space:]]*path = '  | cut -d= -f2`
-	ctdb_check_directories "Samba" $smb_dirs	
+	[ "$CTDB_SAMBA_SKIP_SHARE_CHECK" != "yes" ] && {
+echo do da test
+		smb_dirs=`testparm -s 2> /dev/null | egrep '^[[:space:]]*path = '  | cut -d= -f2`
+		ctdb_check_directories "Samba" $smb_dirs	
+	}
 
 	smb_ports=`testparm -s --parameter-name="smb ports" 2> /dev/null`
 	ctdb_check_tcp_ports "Samba" $smb_ports
diff --git a/config/events.d/60.nfs b/config/events.d/60.nfs
index c62eed3..b3b0e69 100755
--- a/config/events.d/60.nfs
+++ b/config/events.d/60.nfs
@@ -93,6 +93,7 @@ case $cmd in
 	fi
 
 
+
 	# check that NFS responds to rpc requests
 	ctdb_check_rpc "NFS" 100003 3
 
@@ -114,7 +115,7 @@ case $cmd in
 		rpc.mountd $RPCMOUNTDOPTS &
 		exit 1
 	}
-	;;
+       	;;
 
 esac
 
diff --git a/config/events.d/91.lvs b/config/events.d/91.lvs
index e93f237..4860030 100755
--- a/config/events.d/91.lvs
+++ b/config/events.d/91.lvs
@@ -9,7 +9,7 @@ loadconfig ctdb
 
 [ -x /sbin/ipvsadm ] || {
     echo "LVS configured but /sbin/ipvsadm is not installed."
-    exit 1
+    exit 0
 }
 
 
@@ -54,8 +54,11 @@ case $cmd in
 	ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0
 	kill_tcp_connections $CTDB_LVS_PUBLIC_IP
 
-	# are we the recmaster ? 
-	ctdb isnotrecmaster >/dev/null 2>/dev/null || {
+	PNN=`ctdb pnn | sed -e "s/.*PNN://"`
+	LVSMASTER=`ctdb lvsmaster | sed -e "s/.*Node //" -e "s/ .*//"`
+
+	[ "$PNN" != "$LVSMASTER" ] && {
+	    # we are not the lvs master so we have to
 	    # change the ip address to have scope host so we wont respond
 	    # to arps
 	    ip addr del $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
@@ -70,10 +73,12 @@ case $cmd in
 	ipvsadm -A -t $CTDB_LVS_PUBLIC_IP:0 -p 9999 -s lc
 	ipvsadm -A -u $CTDB_LVS_PUBLIC_IP:0 -p 9999 -s lc
 
-	ctdb status 2>/dev/null | egrep "^pnn:" | grep -v DISCONNECTED | grep -v "(THIS NODE)" | sed -e "s/^pnn:[0-9]* //" -e "s/[ 	].*//" | while read IP; do
+	# add all nodes (except ourselves) to the lvs config
+	ctdb lvs | egrep -v "^$PNN:" | sed -e "s/.*://" | while read IP; do
 		ipvsadm -a -t $CTDB_LVS_PUBLIC_IP:0 -r $IP -g
 		ipvsadm -a -u $CTDB_LVS_PUBLIC_IP:0 -r $IP -g
 	done
+	# and add the localhost too
 	ipvsadm -a -t $CTDB_LVS_PUBLIC_IP:0 -r 127.0.0.1
 	ipvsadm -a -u $CTDB_LVS_PUBLIC_IP:0 -r 127.0.0.1
 
diff --git a/config/functions b/config/functions
index 3c47e4a..d15c4b5 100644
--- a/config/functions
+++ b/config/functions
@@ -1,4 +1,3 @@
-#!/bin/sh
 # utility functions for ctdb event scripts
 
 #######################################
@@ -84,9 +83,9 @@ ctdb_wait_tcp_ports() {
 	      elif [ -x /usr/bin/nc ]; then
 	          /usr/bin/nc -z 127.0.0.1 $p > /dev/null || all_ok=0
 	      elif [ -x /usr/bin/netstat ]; then
-	          (netstat -a -n | egrep "0.0.0.0:$p\s*LISTEN" > /dev/null) || all_ok=0
+	          (netstat -a -n | egrep "0.0.0.0:$p[[:space:]]*LISTEN" > /dev/null) || all_ok=0
 	      elif [ -x /bin/netstat ]; then
-	          (netstat -a -n | egrep "0.0.0.0:$p\s*LISTEN" > /dev/null) || all_ok=0
+	          (netstat -a -n | egrep "0.0.0.0:$p[[:space:]]*LISTEN" > /dev/null) || all_ok=0
 	      else 
 		  echo "No tool to check tcp ports availabe. can not check in ctdb_wait_tcp_ports"
 		  return
@@ -211,7 +210,7 @@ kill_tcp_connections() {
 
     _killcount=0
     connfile="$CTDB_BASE/state/connections.$_IP"
-    netstat -tn |egrep "^tcp.*\s+$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' > $connfile
+    netstat -tn |egrep "^tcp.*[[:space:]]+$_IP:.*ESTABLISHED" | awk '{print $4" "$5}' > $connfile
     while read dest src; do
 	srcip=`echo $src | cut -d: -f1`
 	srcport=`echo $src | cut -d: -f2`
@@ -230,7 +229,7 @@ kill_tcp_connections() {
 	return;
     }
     _count=0
-    while netstat -tn |egrep "^tcp.*\s+$_IP:.*ESTABLISHED" > /dev/null; do
+    while netstat -tn |egrep "^tcp.*[[:space:]]+$_IP:.*ESTABLISHED" > /dev/null; do
 	sleep 1
 	_count=`expr $_count + 1`
 	[ $_count -gt 3 ] && {
diff --git a/doc/ctdb.1 b/doc/ctdb.1
index 9dcf495..e9380f3 100644
--- a/doc/ctdb.1
+++ b/doc/ctdb.1
@@ -1,11 +1,11 @@
 .\"     Title: ctdb
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.71.0 <http://docbook.sf.net/>
-.\"      Date: 03/04/2008
+.\"      Date: 07/10/2008
 .\"    Manual: 
 .\"    Source: 
 .\"
-.TH "CTDB" "1" "03/04/2008" "" ""
+.TH "CTDB" "1" "07/10/2008" "" ""
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -68,6 +68,9 @@ You only need to specify this parameter if you run multiple ctdb daemons on the
 .SH "ADMINISTRATIVE COMMANDS"
 .PP
 These are commands used to monitor and administrate a CTDB cluster.
+.SS "pnn"
+.PP
+This command displays the pnn of the current node.
 .SS "status"
 .PP
 This command shows the current status of the ctdb node.
@@ -250,6 +253,44 @@ RecoveryBanPeriod   = 300
       
 .fi
 .RE
+.SS "lvsmaster"
+.PP
+This command shows which node is currently the LVSMASTER. The LVSMASTER is the node in the cluster which drives the LVS system and which receives all incoming traffic from clients.
+.PP
+LVS is the mode where the entire CTDB/Samba cluster uses a single ip address for the entire cluster. In this mode all clients connect to one specific node which will then multiplex/loadbalance the clients evenly onto the other nodes in the cluster. This is an alternative to using public ip addresses. See the manpage for ctdbd for more information about LVS.
+.SS "lvs"
+.PP
+This command shows which nodes in the cluster are currently active in the LVS configuration. I.e. which nodes we are currently loadbalancing the single ip address across.
+.PP
+LVS will by default only loadbalance across those nodes that are both LVS capable and also HEALTHY. Except if all nodes are UNHEALTHY in which case LVS will loadbalance across all UNHEALTHY nodes as well. LVS will never use nodes that are DISCONNECTED, BANNED or DISABLED.
+.PP
+Example output:
+.sp
+.RS 3n
+.nf
+2:10.0.0.13
+3:10.0.0.14
+      
+.fi
+.RE
+.SS "getcapabilities"
+.PP
+This command shows the capabilities of the current node. Please see manpage for ctdbd for a full list of all capabilities and more detailed description.
+.PP
+RECMASTER and LMASTER capabilities are primarily used when CTDBD is used to create a cluster spanning across WAN links. In which case ctdbd acts as a WAN accelerator.
+.PP
+LVS capabile means that the node is participating in LVS, a mode where the entire CTDB cluster uses one single ip address for the entire cluster instead of using public ip address failover. This is an alternative to using a loadbalancing layer\-4 switch.
+.PP
+Example output:
+.sp
+.RS 3n
+.nf
+RECMASTER: YES
+LMASTER: YES
+LVS: NO
+      
+.fi
+.RE
 .SS "statistics"
 .PP
 Collect statistics from the CTDB daemon about how many calls it has served.
diff --git a/doc/ctdb.1.html b/doc/ctdb.1.html
index 5fb9952..b9bbbd0 100644
--- a/doc/ctdb.1.html
+++ b/doc/ctdb.1.html
@@ -1,6 +1,6 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ctdb</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en"><a name="ctdb.1"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ctdb &#8212; clustered tdb database management utility</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">ctdb [ OPTIONS ] COMMAND ...</code> </p></div><div class="cmdsynopsis"><p><code class="command">ctdb</code>  [-n &lt;node&gt;] [-Y] [-t &lt;timeout&gt;] [-T &lt;timelimit&gt;] [-? --help] [--usage] [-d --debug=&lt;INTEGER&gt;] [--socket=&lt;filename&gt;]</p></div></div><div class="refsect1" lang="en"><a name="id2480881"></a><h2>DESCRIPTION</h2><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ctdb</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en"><a name="ctdb.1"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ctdb &#8212; clustered tdb database management utility</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">ctdb [ OPTIONS ] COMMAND ...</code> </p></div><div class="cmdsynopsis"><p><code class="command">ctdb</code>  [-n &lt;node&gt;] [-Y] [-t &lt;timeout&gt;] [-T &lt;timelimit&gt;] [-? --help] [--usage] [-d --debug=&lt;INTEGER&gt;] [--socket=&lt;filename&gt;]</p></div></div><div class="refsect1" lang="en"><a name="id2480874"></a><h2>DESCRIPTION</h2><p>
       ctdb is a utility to view and manage a ctdb cluster.
-    </p></div><div class="refsect1" lang="en"><a name="id2480890"></a><h2>OPTIONS</h2><div class="variablelist"><dl><dt><span class="term">-n &lt;pnn&gt;</span></dt><dd><p>
+    </p></div><div class="refsect1" lang="en"><a name="id2480884"></a><h2>OPTIONS</h2><div class="variablelist"><dl><dt><span class="term">-n &lt;pnn&gt;</span></dt><dd><p>
             This specifies the physical node number on which to execute the 
 	    command. Default is to run the command on the deamon running on 
 	    the local host.
@@ -28,11 +28,13 @@
             You only need to specify this parameter if you run multiple ctdb 
             daemons on the same physical host and thus can not use the default
             name for the domain socket.
-          </p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2481201"></a><h2>Administrative Commands</h2><p>
+          </p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2481194"></a><h2>Administrative Commands</h2><p>
       These are commands used to monitor and administrate a CTDB cluster.
-    </p><div class="refsect2" lang="en"><a name="id2481210"></a><h3>status</h3><p>
+    </p><div class="refsect2" lang="en"><a name="id2481203"></a><h3>pnn</h3><p>
+        This command displays the pnn of the current node.
+      </p></div><div class="refsect2" lang="en"><a name="id2481213"></a><h3>status</h3><p>
         This command shows the current status of the ctdb node.
-      </p><div class="refsect3" lang="en"><a name="id2481219"></a><h4>node status</h4><p>
+      </p><div class="refsect3" lang="en"><a name="id2481222"></a><h4>node status</h4><p>
           Node status reflects the current status of the node. There are four possible states:
         </p><p>
           OK - This node is fully functional.
@@ -44,7 +46,7 @@
           UNHEALTHY - A service provided by this node is malfunctioning and should be investigated. The CTDB daemon itself is operational and participates in the cluster. Its public IP address has been taken over by a different node and no services are currnetly being hosted. All unhealthy nodes should be investigated and require an administrative action to rectify.
         </p><p>
           BANNED - This node failed too many recovery attempts and has been banned from participating in the cluster for a period of RecoveryBanPeriod seconds. Any public IP address has been taken over by other nodes. This node does not provide any services. All banned nodes should be investigated and require an administrative action to rectify. This node does not perticipate in the CTDB cluster but can still be communicated with. I.e. ctdb commands can be sent to it.
-        </p></div><div class="refsect3" lang="en"><a name="id2481270"></a><h4>generation</h4><p>
+        </p></div><div class="refsect3" lang="en"><a name="id2481273"></a><h4>generation</h4><p>
           The generation id is a number that indicates the current generation 
           of a cluster instance. Each time a cluster goes through a 
           reconfiguration or a recovery its generation id will be changed.
@@ -65,10 +67,10 @@
 	  All nodes start with generation "INVALID" and are not assigned a real
 	  generation id until they have successfully been merged with a cluster
 	  through a recovery.
-        </p></div><div class="refsect3" lang="en"><a name="id2481306"></a><h4>VNNMAP</h4><p>
+        </p></div><div class="refsect3" lang="en"><a name="id2481308"></a><h4>VNNMAP</h4><p>
           The list of Virtual Node Numbers. This is a list of all nodes that actively participates in the cluster and that share the workload of hosting the Clustered TDB database records.
           Only nodes that are participating in the vnnmap can become lmaster or dmaster for a database record.
-        </p></div><div class="refsect3" lang="en"><a name="id2481320"></a><h4>Recovery mode</h4><p>
+        </p></div><div class="refsect3" lang="en"><a name="id2481323"></a><h4>Recovery mode</h4><p>
           This is the current recovery mode of the cluster. There are two possible modes:
         </p><p>
           NORMAL - The cluster is fully operational.
@@ -88,7 +90,7 @@
 	have been recovered, the node mode will change into NORMAL mode
 	and the databases will be "thawed", allowing samba to access the
 	databases again.
-	</p></div><div class="refsect3" lang="en"><a name="id2528425"></a><h4>Recovery master</h4><p>
+	</p></div><div class="refsect3" lang="en"><a name="id2528429"></a><h4>Recovery master</h4><p>
           This is the cluster node that is currently designated as the recovery master. This node is responsible of monitoring the consistency of the cluster and to perform the actual recovery process when reqired.
         </p><p>
 	Only one node at a time can be the designated recovery master. Which
@@ -110,7 +112,7 @@ hash:2 lmaster:2
 hash:3 lmaster:3
 Recovery mode:NORMAL (0)
 Recovery master:0
-      </pre></div><div class="refsect2" lang="en"><a name="id2528458"></a><h3>ping</h3><p>
+      </pre></div><div class="refsect2" lang="en"><a name="id2528467"></a><h3>ping</h3><p>
         This command will "ping" all CTDB daemons in the cluster to verify that they are processing commands correctly.
       </p><p>
 	Example: ctdb ping
@@ -121,7 +123,7 @@ response from 0 time=0.000054 sec  (3 clients)
 response from 1 time=0.000144 sec  (2 clients)
 response from 2 time=0.000105 sec  (2 clients)
 response from 3 time=0.000114 sec  (2 clients)
-      </pre></div><div class="refsect2" lang="en"><a name="id2528484"></a><h3>ip</h3><p>
+      </pre></div><div class="refsect2" lang="en"><a name="id2528493"></a><h3>ip</h3><p>
         This command will display the list of public addresses that are provided by the cluster and which physical node is currently serving this ip.
       </p><p>
 	Example: ctdb ip
@@ -133,7 +135,7 @@ Number of addresses:4
 12.1.1.2         1
 12.1.1.3         2
 12.1.1.4         3
-      </pre></div><div class="refsect2" lang="en"><a name="id2528510"></a><h3>getvar &lt;name&gt;</h3><p>
+      </pre></div><div class="refsect2" lang="en"><a name="id2528519"></a><h3>getvar &lt;name&gt;</h3><p>
         Get the runtime value of a tuneable variable.
       </p><p>
 	Example: ctdb getvar MaxRedirectCount
@@ -141,11 +143,11 @@ Number of addresses:4
 	Example output:
       </p><pre class="screen">
 MaxRedirectCount    = 3
-      </pre></div><div class="refsect2" lang="en"><a name="id2528533"></a><h3>setvar &lt;name&gt; &lt;value&gt;</h3><p>
+      </pre></div><div class="refsect2" lang="en"><a name="id2528542"></a><h3>setvar &lt;name&gt; &lt;value&gt;</h3><p>
         Set the runtime value of a tuneable variable.
       </p><p>
 	Example: ctdb setvar MaxRedirectCount 5


-- 
CTDB repository


More information about the samba-cvs mailing list