[SCM] Samba Shared Repository - branch master updated

Amitay Isaacs amitay at samba.org
Wed Oct 7 15:56:03 UTC 2015


The branch, master has been updated
       via  0101748 ctdb-recoverd: Always check for recmaster before doing recovery
       via  3cf93d9 ctdb-recoverd: Get rid of connected-ness comparison in election
       via  fbd9c9f ctdb-recoverd: Do not freeze databases for election
       via  ffff66b ctdb-call: Improve a log message
       via  e6ff365 ctdb-recoverd: Add code for parallel database recovery
       via  cbfabd8 ctdb-daemon: Add parallel database recovery capability
       via  f0613ac ctdb-daemon: Use a define for default capabilities
       via  4b39a77 ctdb-recoverd: Update flags on all nodes before database recovery
       via  9843363 ctdb-recoverd: Update capabilities before the database recovery
       via  14cacd2 ctdb-recovery: Factor out existing database recovery code
       via  9514319 ctdb-recoverd: Add parallel database recovery helper
       via  b04c48d ctdb-client: Add client API for new database controls
       via  81ac247 ctdb-protocol: Add controls for parallel DB recovery
       via  c6a50b9 ctdb-client: Add new client API implementation
       via  34a6c99 ctdb-protocol: Add ctdb protocol serialization routines
       via  8b45bad ctdb-include: Remove unused structure definitions
       via  54da5c6 ctdb-common: Add logging utilities
       via  1543eed ctdb-common: Add communication endpoint abstraction
       via  e01c0ee ctdb-common: Add packet write abstraction
       via  c77d3bb ctdb-common: Add packet read abstraction
       via  facd3c8 ctdb-packaging: Package public library and header for tevent-unix-util
       via  606b909 ctdb-build: Placeholder for public headers from lib/util
       via  670db6a lib/util: Create a new library for tevent_unix.c
       via  9c16fe4 ctdb-build: Set PKGCONFIGDIR for public libraries in standalone build
       via  100917b ctdb-packaging: Install header files in ctdb subdirectory
       via  b25c113 ctdb-daemon: Use reqid abstraction
       via  9fd4d07 ctdb-common: Add request id abstraction
       via  a7ea6b0 ctdb-include: Remove unused definition
       via  7c6115e ctdb-daemon: whitespace fix
       via  9d75bf3 ctdb-daemon: formatting fix
       via  62f1e25 ctdb-daemon: Replace ctdb_message with srvid abstraction
       via  6272ef0 ctdb-common: Add srvid abstraction
       via  e5592f9 ctdb-common: Add db_hash abstraction
       via  acf5ebf ctdb-daemon: whitespace fix
       via  6672dee ctdb-daemon: formatting fix
       via  ba56d85 ctdb-daemon: Remove ctdb from traverse_callback
       via  3f287ec ctdb-build: Do not split ctdb-system subsystem
       via  90b633e ctdb-build: Do not mark ctdb private headers public
       via  42f7722 ctdb-daemon: Remove freeze requirement for updating vnnmap
       via  3cbd040 ctdb-daemon: Add a check for database generation consistency
       via  0ff90f4 ctdb-daemon: Check packet generation against database generation
       via  d701072 ctdb-call: Delete old defer queue if recovery occurs
       via  3d11efe ctdb-daemon: Use database generation in packet headers for database requests
       via  1df2594 ctdb-daemon: Introduce per database generation
       via  b81d4cc ctdb-freeze: Use individual database freeze in blocking freeze
       via  5d9dd4d ctdb-freeze: Ensure all databases get frozen during freeze
       via  8a5039d ctdb-freeze: Make function ctdb_start_freeze static
       via  b4357a7 ctdb-banning: Do not freeze databases on ban in the daemon
       via  fafd35b ctdb-freeze: Fix a log message
       via  d14ff2d ctdb-freeze: Use database specific information in wipe database
       via  8580562 ctdb-freeze: Use single database transactions for global transactions
       via  3d325e7 ctdb-daemon: Add controls for transactions on a single database
       via  4f155e7 ctdb-daemon: Rename ctdb_control_wipe_database to ctdb_control_transdb
       via  9f779f1 ctdb-freeze: simplify code with TALLOC_FREE
       via  979f1c5 ctdb-freeze: Improve log message to indicate subsequent freeze operation
       via  66c7bcc ctdb-daemon: Use database specific mark/unmark routines
       via  e0fa182 ctdb-daemon: Use database specific freeze check routine
       via  e170bd4 ctdb-locking: Add mark/unmark functions for a single database
       via  d139f87 ctdb-freeze: Use single database freeze/thaw code for existing controls
       via  fd7ceaf ctdb-freeze: Move destructor closer to where it is used
       via  5447864 ctdb-daemon: Add controls to freeze/thaw a single database
       via  7afabb1 ctdb-daemon: Avoid the use of ctdb->freeze_handle variable
       via  8c58c73 ctdb-daemon: Avoid the use of ctdb->freeze_mode variable
       via  056c44f ctdb-freeze: Refactor code to check if databases are frozen
       via  6a212d1 ctdb-call: Convert pending calls list to per database list
       via  2116c55 ctdb-freeze: Use ctdb_db_iterator to commit transaction on databases
       via  bc9a685 ctdb-freeze: Use ctdb_db_iterator to start transaction on databases
       via  4576188 ctdb-freeze: Use ctdb_db_iterator to cancel transaction on databases
       via  74f7eeb ctdb-freeze: Use ctdb_db_prio_iterator to cancel transaction on databases
       via  fb23760 ctdb-locking: Add ctdb_db_iterator to iterate through all databases
       via  ecb858f ctdb-locking: Expose ctdb_db_prio_iterator function
       via  b1f4680 ctdb-locking: Rename ctdb_db_iterator to ctdb_db_prio_iterator
       via  8df0916 ctdb-locking: Remove unused priority argument from db_handler_t
       via  b15a65e ctdb-freeze: Remove commented test code
       via  036203e ctdb-freeze: Do an early exit if freeze is pending
      from  6d37cd3 s3:smbd: pass expected_seq_low to smbd_initialize_smb2

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


- Log -----------------------------------------------------------------
commit 01017482876defa74137295fa08ed7f27fc12f61
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Oct 6 17:31:41 2015 +1100

    ctdb-recoverd: Always check for recmaster before doing recovery
    
    Recovery daemon checks if it is the recovery master before performing
    certain checks.  During those checks it's possible that re-election can
    change the recmaster.  In such a case, the recovery daemon should never
    do a database recovery.
    
    This is not complete fix since the recovery master can still change
    while the recovery is going on.  The correct fix is to abort recovery
    if the recovery master changes.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>
    
    Autobuild-User(master): Amitay Isaacs <amitay at samba.org>
    Autobuild-Date(master): Wed Oct  7 17:55:05 CEST 2015 on sn-devel-104

commit 3cf93d91361191a7accdf0ddf5e811212e0a5ca2
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Oct 6 14:46:48 2015 +1100

    ctdb-recoverd: Get rid of connected-ness comparison in election
    
    The reason for favouring more connected node is to create a larger
    cluster in case of a split brain.  In split brain condition, the nodes
    are not communicating across partitions and each partition will run its
    own election.  Among all the partitions, the node which holds the recovery
    lock will eventually "win".  All the other nodes which won election but
    could not grab recovery lock will end up banning themselves.
    
    This also prevents the recovery master role from bouncing between nodes
    during startup when the entire cluster is restarted.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit fbd9c9fd2f9a4e3e4cf03af574b322752670d632
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Oct 6 11:52:06 2015 +1100

    ctdb-recoverd: Do not freeze databases for election
    
    If election occurs during SMB activity, then trying to freeze all the
    databases can cause samba/ctdb deadlock which parallel database recovery
    is trying to avoid.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit ffff66b011131c16c369b397d6fcdd5b75a6db4e
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Mon Sep 21 17:12:25 2015 +1000

    ctdb-call: Improve a log message
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit e6ff36506c820523ab23b3749227bf6df6218d76
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 17 16:22:38 2015 +1000

    ctdb-recoverd: Add code for parallel database recovery
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit cbfabd8104f56599d0b1f0a2f17d5154144a9341
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 17 16:14:51 2015 +1000

    ctdb-daemon: Add parallel database recovery capability
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit f0613ac4f7b3d3721750b7ee187a40a8a185a74e
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 17 16:13:55 2015 +1000

    ctdb-daemon: Use a define for default capabilities
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 4b39a7706f910c2830e4869b5e6363c45fbb7804
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 17 17:10:15 2015 +1000

    ctdb-recoverd: Update flags on all nodes before database recovery
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 9843363629972f162f923e759c6060a712fac2d2
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 17 16:07:37 2015 +1000

    ctdb-recoverd: Update capabilities before the database recovery
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 14cacd2925a77a1f45b42ad102ce1eb9448e4d7c
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 17 16:00:47 2015 +1000

    ctdb-recovery: Factor out existing database recovery code
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 951431910dc6d00815c19e087bc2546b1daa591b
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Mon Jun 29 14:56:53 2015 +1000

    ctdb-recoverd: Add parallel database recovery helper
    
    Parallel database recovery fixes the samba/ctdb deadlock during recovery.
    
    Many times samba tries to grab multiple record locks in sequence.
    Consider a case when samba is already holding a record lock on a database
    and tries to get a record lock on second database.  If the second record
    is not available on the local node, samba asks ctdb to migrate the record.
    If recovery occurs at this time (e.g. node becoming inactive), ctdb
    cannot freeze all the databases since samba is already holding a lock
    and waiting for the second lock.  CTDB can process the second record
    request only after the recovery is complete, thus causing a deadlock.
    
    In parallel database recovery, each database is frozen and recovered
    independent from each other.  So as soon as the second database is
    recovered, CTDB will resend all the pending migration requests and Samba
    can get the second lock.  Once samba releases both the locks, ctdb can
    freeze the first database and recover it completing recovery process.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b04c48d2f5f0a5e64ccf75e7773b880c521ffef3
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 9 12:29:54 2015 +1000

    ctdb-client: Add client API for new database controls
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 81ac247c10c362b643c2b3ce57df4fe6ecae78dd
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Sat Aug 1 01:47:22 2015 +1000

    ctdb-protocol: Add controls for parallel DB recovery
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit c6a50b97d4c91967c480e7077b66e149bc38dcf4
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Apr 15 00:14:25 2015 +1000

    ctdb-client: Add new client API implementation
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 34a6c99776cd50dfa4f6c2e02a6439d6d59b045e
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Apr 14 17:20:05 2015 +1000

    ctdb-protocol: Add ctdb protocol serialization routines
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 8b45badfdaa8d9b618d551fcbbe8a2f7d680c4f9
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Apr 14 11:42:45 2015 +1000

    ctdb-include: Remove unused structure definitions
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 54da5c6603059709529d50d4f5c5c39373ca4216
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Sat Aug 1 22:36:04 2015 +1000

    ctdb-common: Add logging utilities
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 1543eedb8feaa85336216aa22df2145522425184
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Sat Apr 4 20:23:44 2015 +1100

    ctdb-common: Add communication endpoint abstraction
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit e01c0eed38335e7b421ab4f79410f08ab1d31482
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Mon Apr 6 17:26:29 2015 +1000

    ctdb-common: Add packet write abstraction
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit c77d3bb183a6e8109db8e4f5494adf899b01ccea
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 2 22:32:50 2015 +1000

    ctdb-common: Add packet read abstraction
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit facd3c864e0a2db29e6b838389111ba731e02078
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 8 17:58:54 2015 +1000

    ctdb-packaging: Package public library and header for tevent-unix-util
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 606b909310fc49a5f793c5031372a08c3848685b
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 8 18:16:08 2015 +1000

    ctdb-build: Placeholder for public headers from lib/util
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 670db6ac1d678babd25dd82c4467c0f094cfabc5
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 8 10:34:21 2015 +1000

    lib/util: Create a new library for tevent_unix.c
    
    This is required for ctdb.  This avoids adding dependency on wstatus
    and ntstatus to ctdb build.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 9c16fe43fc37d0804e5a0337726fccf4e1ab73f3
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 8 18:15:35 2015 +1000

    ctdb-build: Set PKGCONFIGDIR for public libraries in standalone build
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 100917b169765821bc79ef322663948c5edd34ca
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 8 17:58:25 2015 +1000

    ctdb-packaging: Install header files in ctdb subdirectory
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b25c1135a74f5d61da00847149587835bc2102c9
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Mar 17 14:30:18 2015 +1100

    ctdb-daemon: Use reqid abstraction
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 9fd4d07ca60e2e4a40662988ce8136efa6452ced
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Mar 17 13:29:44 2015 +1100

    ctdb-common: Add request id abstraction
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit a7ea6b094e60a41e28df5a8f17b98bb3bd1058d9
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Mar 17 13:41:36 2015 +1100

    ctdb-include: Remove unused definition
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 7c6115e11b2112f5b4003be862f709cc9ffea615
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Apr 8 14:41:59 2015 +1000

    ctdb-daemon: whitespace fix
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 9d75bf3a9ffaa1e0cd25f7ada57f9eef7de614c3
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Apr 8 14:41:12 2015 +1000

    ctdb-daemon: formatting fix
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 62f1e2579a6e97e7e33f68be779694d5eceb36c0
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Apr 8 14:38:26 2015 +1000

    ctdb-daemon: Replace ctdb_message with srvid abstraction
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 6272ef0d09930ffbff43c6223ea35858d13efffa
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Mon Mar 16 23:25:27 2015 +1100

    ctdb-common: Add srvid abstraction
    
    Attempt to make common code independent and free from ctdb_context.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit e5592f9fc018b4b22fbdba4f45526210f5f41692
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Mar 17 12:35:31 2015 +1100

    ctdb-common: Add db_hash abstraction
    
    A hash table implemented using in-memory tdb backend.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit acf5ebfa906b226d7db2051c9716dd9091d7ecb7
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Apr 8 14:25:12 2015 +1000

    ctdb-daemon: whitespace fix
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 6672deea13b663dd43e82df76a3152887ddac1dd
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Apr 8 14:25:01 2015 +1000

    ctdb-daemon: formatting fix
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit ba56d852cb156585e34b758f3065df7adcdb73ba
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Apr 8 14:24:31 2015 +1000

    ctdb-daemon: Remove ctdb from traverse_callback
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 3f287ec47934225be5a72e9c7bf51421d22895a6
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Mon Aug 3 15:38:32 2015 +1000

    ctdb-build: Do not split ctdb-system subsystem
    
    The functions defined in common/system_*.c depend on the functions
    defined in common/system_common.c.  So keep them together.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 90b633ea79291c85248f63493af64be7868763af
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 30 11:38:52 2015 +1000

    ctdb-build: Do not mark ctdb private headers public
    
    These headers are used by the server code and should not be marked public.
    Samba builds against the in-tree version of the headers and should not
    be built with externally installed CTDB.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 42f772215178050a3f465440e79e1ec9bce0e34f
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Mon Sep 14 13:49:05 2015 +1000

    ctdb-daemon: Remove freeze requirement for updating vnnmap
    
    In the parallel database recovery model, all the database will not remain
    frozen at the same time.  So relax the condition to check if recovery
    is active.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 3cbd0409f398828ee6415229b3c23781405176ea
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Fri Sep 11 16:14:12 2015 +1000

    ctdb-daemon: Add a check for database generation consistency
    
    Before setting recovery mode to normal, confirm that all the databases are
    recovered by matching the database generation with the global generation.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 0ff90f4fac74e61192aff100b168e38ce0adfabb
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 15 16:50:19 2015 +1000

    ctdb-daemon: Check packet generation against database generation
    
    CTDB verifies the generation in the packet header matches that of the
    current generation.  However, that check now needs to be done where
    database context is available.  So add in the check in handlers for
    database requests (CTDB_REQ_CALL, CTDB_REQ_DMASTER, CTDB_REPLY_DMASTER
    and CTDB_REPLY_CALL).
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit d701072c3e2309019a729c908b28c6657b28a2ca
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 23 14:47:58 2015 +1000

    ctdb-call: Delete old defer queue if recovery occurs
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 3d11efe3c63c884ebb78c5488c565d9ab5afb963
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 15 16:50:19 2015 +1000

    ctdb-daemon: Use database generation in packet headers for database requests
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 1df25943866e1644d0f48c8980c7eafdea0b6366
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Fri Sep 11 14:20:44 2015 +1000

    ctdb-daemon: Introduce per database generation
    
    The database generation for each database is updated only during recovery.
    After recovery is complete the database generation would be the same as
    the global generation.
    
    The database generation is required for parallel database recovery.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b81d4ccc770fc0f691fb87becd991350d91d2bd6
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 17 12:57:51 2015 +1000

    ctdb-freeze: Use individual database freeze in blocking freeze
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 5d9dd4d400296a4182dadc70cb4ddf9ca0681a60
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 16 18:49:00 2015 +1000

    ctdb-freeze: Ensure all databases get frozen during freeze
    
    It's possible that the databases can get attached after initial freeze.
    This typically happens during startup as CTDB will only attach persistent
    databases and go in to startup freeze.  During recovery, the recovery
    master will attach all the missing databases and then send freeze
    controls.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 8a5039d96390742be5563e74b7e2778f7d388ed2
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 16 18:23:23 2015 +1000

    ctdb-freeze: Make function ctdb_start_freeze static
    
    Since the banning code does not call this function anymore, it can be
    made static.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b4357a79d916b1f8ade8fa78563fbef0ce670aa9
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 16 18:20:31 2015 +1000

    ctdb-banning: Do not freeze databases on ban in the daemon
    
    Once the node is marked as banned, the recovery daemon on that node will
    start freezing the databases anyway.  This check happens every second
    in recovery daemon, so the delay in freezing the databases on ban would
    be a second.
    
    The main reason for freezing databases is to prevent any database access
    from samba clients.  However, banning code also drops the public IPs
    and thus disconnecting the clients.  In addition, the generation gets
    set to INVALID_GENERATION, thus database record migration requests on
    that node will not be processed.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit fafd35b68f8af41095cb41cd604c27495fa2b6a1
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 15 16:13:10 2015 +1000

    ctdb-freeze: Fix a log message
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit d14ff2d87e95c4c8c9faef800fc81b8c049d16da
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 15 14:16:21 2015 +1000

    ctdb-freeze: Use database specific information in wipe database
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 858056263a0000663c0b50da6f080a845dc4d766
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 15 15:13:50 2015 +1000

    ctdb-freeze: Use single database transactions for global transactions
    
    This cascades the global transaction controls to individual database
    transaction operations.  This ensures that the individual database state
    is correctly set when processing global transaction controls.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 3d325e7fa1de48ec88487d31a657e6a876d2dd81
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 9 15:38:36 2015 +1000

    ctdb-daemon: Add controls for transactions on a single database
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 4f155e77a8210e43456239391c03a5804d01b828
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Sep 9 15:02:49 2015 +1000

    ctdb-daemon: Rename ctdb_control_wipe_database to ctdb_control_transdb
    
    The same structure is required in new controls for database transactions.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 9f779f130fa275dcc43adcab03d4704663776dce
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Aug 28 16:59:52 2014 +1000

    ctdb-freeze: simplify code with TALLOC_FREE
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 979f1c5ea116b8aac536ebe29d584730e8fe9a4b
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Aug 28 16:58:56 2014 +1000

    ctdb-freeze: Improve log message to indicate subsequent freeze operation
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 66c7bcc777ff5cbc625da86384d8c29d34c66bf9
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Mon Sep 14 14:53:45 2015 +1000

    ctdb-daemon: Use database specific mark/unmark routines
    
    Instead of marking all the databases with priority, mark only the database
    which is currently being processed.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit e0fa182d9362537f7081e215250ce2052a9a34c8
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 15 14:01:49 2015 +1000

    ctdb-daemon: Use database specific freeze check routine
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit e170bd4f1b3fcf988867d1dd00b49e8813c6ca7f
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 10 13:24:43 2015 +1000

    ctdb-locking: Add mark/unmark functions for a single database
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit d139f87718e06aaae73652fdf52f2c1dd2dcbe99
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Aug 28 15:28:34 2014 +1000

    ctdb-freeze: Use single database freeze/thaw code for existing controls
    
    This changes the locking behaviour when the databases are frozen.
    Instead of a single lock helper locking all databases with a priority,
    a lock helper is launched for every database.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit fd7ceaf3ac59fc7dc70d34e81cfd75a171a2e6c0
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Aug 28 15:30:39 2014 +1000

    ctdb-freeze: Move destructor closer to where it is used
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 5447864e5d31d433f9a54924f3bb01f1384620fd
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 14:16:29 2014 +1000

    ctdb-daemon: Add controls to freeze/thaw a single database
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 7afabb1285f6778b5b2862e178315b03f54eb8ef
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 15 12:22:17 2015 +1000

    ctdb-daemon: Avoid the use of ctdb->freeze_handle variable
    
    These variables are used for state information related to freezing
    databases.  Instead use the API functions to check if the databases
    are frozen.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 8c58c7392fe342fb39fcaf81c2465762f1823b51
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Aug 21 12:32:02 2014 +1000

    ctdb-daemon: Avoid the use of ctdb->freeze_mode variable
    
    Use ctdb->freeze_mode only in ctdb_freeze.c and use the functions to
    check if databases are frozen everywhere else.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 056c44fda3f3d84dc3eb9766e0ee04bdb6387ea5
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Aug 21 12:26:58 2014 +1000

    ctdb-freeze: Refactor code to check if databases are frozen
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 6a212d13d046d9f3ff6a2423d55b24b8068498e3
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 14:42:00 2014 +1000

    ctdb-call: Convert pending calls list to per database list
    
    The pending calls are migration requests received from clients (over unix
    domain socket) which are under processing.  After a recovery is finished,
    any requests which are under processing will be dropped since they do
    not belong to the current generation.  All the pending call requests
    are resent with new generation to restart record migrations.
    
    This is in preparation for parallel database recovery.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 2116c55b08288b3c59613ed0d088eeba1c29d682
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 17:13:22 2014 +1000

    ctdb-freeze: Use ctdb_db_iterator to commit transaction on databases
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit bc9a68592e15068332a915270c6ebdc46f4542d0
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 17:02:28 2014 +1000

    ctdb-freeze: Use ctdb_db_iterator to start transaction on databases
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 457618888a80d3f5733a9e3dd41d3ab64ace4ae5
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 17:02:07 2014 +1000

    ctdb-freeze: Use ctdb_db_iterator to cancel transaction on databases
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 74f7eebc7911a4ec5f6ee68266b027a661579c68
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 16:23:21 2014 +1000

    ctdb-freeze: Use ctdb_db_prio_iterator to cancel transaction on databases
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit fb237608d7bdb3faf471a7be8a96176a42826811
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 16:49:06 2014 +1000

    ctdb-locking: Add ctdb_db_iterator to iterate through all databases
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit ecb858f54831a439544c7d40051ce91d4103c746
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 16:45:34 2014 +1000

    ctdb-locking: Expose ctdb_db_prio_iterator function
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b1f468017750c4c91f80c5239a364546a1d35e72
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 16:43:11 2014 +1000

    ctdb-locking: Rename ctdb_db_iterator to ctdb_db_prio_iterator
    
    This iterator only iterates through databases of specified priority.
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 8df0916520f2cf938cbdece28d83c8a7b1824934
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 16:37:43 2014 +1000

    ctdb-locking: Remove unused priority argument from db_handler_t
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit b15a65ecc8646f4bd65012005ee28d4aaf272836
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 16:23:47 2014 +1000

    ctdb-freeze: Remove commented test code
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

commit 036203e02a4926d8d465a3f83f6bc565ae451483
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Aug 5 15:35:57 2014 +1000

    ctdb-freeze: Do an early exit if freeze is pending
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

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

Summary of changes:
 ctdb/client/client.h                               |  833 ++++++
 ctdb/client/client_call.c                          |  177 ++
 ctdb/client/client_connect.c                       |  310 ++
 ctdb/client/client_control.c                       |  430 +++
 ctdb/client/client_control_sync.c                  | 3118 ++++++++++++++++++++
 ctdb/client/client_db.c                            | 2137 ++++++++++++++
 ctdb/client/client_message.c                       |  227 ++
 ctdb/client/client_message_sync.c                  |  195 ++
 ctdb/client/client_private.h                       |   79 +
 ctdb/client/client_util.c                          |  154 +
 ctdb/client/ctdb_client.c                          |   92 +-
 ctdb/common/comm.c                                 |  404 +++
 ctdb/common/comm.h                                 |  101 +
 ctdb/common/ctdb_message.c                         |  286 --
 ctdb/common/ctdb_util.c                            |   49 +-
 ctdb/common/db_hash.c                              |  268 ++
 ctdb/common/db_hash.h                              |  159 +
 ctdb/common/logging.c                              |   74 +
 ctdb/common/logging.h                              |   39 +
 ctdb/common/pkt_read.c                             |  190 ++
 ctdb/common/pkt_read.h                             |   98 +
 ctdb/common/pkt_write.c                            |  101 +
 ctdb/common/pkt_write.h                            |   79 +
 ctdb/common/reqid.c                                |   89 +
 ctdb/common/reqid.h                                |   89 +
 ctdb/common/srvid.c                                |  269 ++
 ctdb/common/srvid.h                                |  115 +
 ctdb/include/common/srvid.h                        |    1 +
 ctdb/include/ctdb_client.h                         |   17 +-
 ctdb/include/ctdb_private.h                        |   70 +-
 ctdb/include/ctdb_protocol.h                       |   23 +-
 ctdb/include/internal/includes.h                   |    1 +
 ctdb/include/public/{ => util}/README.txt          |    0
 ctdb/packaging/RPM/ctdb.spec.in                    |   11 +-
 .../ctdb_protocol.h => protocol/protocol.h}        | 1104 ++++---
 ctdb/protocol/protocol_api.h                       |  663 +++++
 ctdb/protocol/protocol_call.c                      |  446 +++
 ctdb/protocol/protocol_client.c                    | 2470 ++++++++++++++++
 ctdb/protocol/protocol_control.c                   | 2087 +++++++++++++
 ctdb/protocol/protocol_header.c                    |   73 +
 ctdb/protocol/protocol_message.c                   |  383 +++
 ctdb/protocol/protocol_packet.c                    |   44 +
 ctdb/protocol/protocol_private.h                   |  274 ++
 ctdb/protocol/protocol_types.c                     | 2519 ++++++++++++++++
 ctdb/protocol/protocol_util.c                      |  114 +
 ctdb/server/ctdb_banning.c                         |   23 +-
 ctdb/server/ctdb_call.c                            |  121 +-
 ctdb/server/ctdb_control.c                         |   38 +-
 ctdb/server/ctdb_daemon.c                          |   51 +-
 ctdb/server/ctdb_freeze.c                          |  829 +++++-
 ctdb/server/ctdb_lock.c                            |  108 +-
 ctdb/server/ctdb_ltdb_server.c                     |   12 +-
 ctdb/server/ctdb_monitor.c                         |   12 +-
 ctdb/server/ctdb_persistent.c                      |    7 +-
 ctdb/server/ctdb_recover.c                         |   52 +-
 ctdb/server/ctdb_recoverd.c                        |  545 ++--
 ctdb/server/ctdb_recovery_helper.c                 | 1888 ++++++++++++
 ctdb/server/ctdb_server.c                          |   21 +-
 ctdb/server/ctdb_serverids.c                       |    3 +-
 ctdb/server/ctdb_takeover.c                        |    9 +-
 ctdb/server/ctdb_traverse.c                        |   11 +-
 ctdb/server/ctdbd.c                                |   10 +-
 ctdb/tests/cunit/comm_test_001.sh                  |    7 +
 ctdb/tests/cunit/comm_test_002.sh                  |   24 +
 ctdb/tests/cunit/db_hash_test_001.sh               |    7 +
 ctdb/tests/cunit/pkt_read_001.sh                   |    7 +
 ctdb/tests/cunit/pkt_write_001.sh                  |    7 +
 ctdb/tests/cunit/protocol_test_001.sh              |    9 +
 ctdb/tests/cunit/protocol_test_002.sh              |   36 +
 ctdb/tests/cunit/reqid_test_001.sh                 |   13 +
 ctdb/tests/cunit/srvid_test_001.sh                 |    7 +
 ctdb/tests/run_tests.sh                            |    2 +-
 ctdb/tests/simple/scripts/local_daemons.bash       |    1 +
 ctdb/tests/src/comm_client_test.c                  |  207 ++
 ctdb/tests/src/comm_server_test.c                  |  363 +++
 ctdb/tests/src/comm_test.c                         |  260 ++
 ctdb/tests/src/ctdb_bench.c                        |   90 +-
 ctdb/tests/src/ctdb_fetch.c                        |   65 +-
 ctdb/tests/src/ctdb_test.c                         |    7 +-
 ctdb/tests/src/ctdb_test_stubs.c                   |    5 +-
 ctdb/tests/src/ctdb_traverse.c                     |    4 +-
 ctdb/tests/src/ctdbd_test.c                        |    5 +-
 ctdb/tests/src/db_hash_test.c                      |  102 +
 ctdb/tests/src/pkt_read_test.c                     |  242 ++
 ctdb/tests/src/pkt_write_test.c                    |  370 +++
 ctdb/tests/src/protocol_client_test.c              | 2353 +++++++++++++++
 ctdb/tests/src/protocol_types_test.c               | 1278 ++++++++
 ctdb/tests/src/reqid_test.c                        |   72 +
 ctdb/tests/src/srvid_test.c                        |   78 +
 ctdb/tools/ctdb.c                                  |   22 +-
 ctdb/wscript                                       |  115 +-
 lib/util/wscript_build                             |   15 +-
 92 files changed, 28509 insertions(+), 1466 deletions(-)
 create mode 100644 ctdb/client/client.h
 create mode 100644 ctdb/client/client_call.c
 create mode 100644 ctdb/client/client_connect.c
 create mode 100644 ctdb/client/client_control.c
 create mode 100644 ctdb/client/client_control_sync.c
 create mode 100644 ctdb/client/client_db.c
 create mode 100644 ctdb/client/client_message.c
 create mode 100644 ctdb/client/client_message_sync.c
 create mode 100644 ctdb/client/client_private.h
 create mode 100644 ctdb/client/client_util.c
 create mode 100644 ctdb/common/comm.c
 create mode 100644 ctdb/common/comm.h
 delete mode 100644 ctdb/common/ctdb_message.c
 create mode 100644 ctdb/common/db_hash.c
 create mode 100644 ctdb/common/db_hash.h
 create mode 100644 ctdb/common/logging.c
 create mode 100644 ctdb/common/logging.h
 create mode 100644 ctdb/common/pkt_read.c
 create mode 100644 ctdb/common/pkt_read.h
 create mode 100644 ctdb/common/pkt_write.c
 create mode 100644 ctdb/common/pkt_write.h
 create mode 100644 ctdb/common/reqid.c
 create mode 100644 ctdb/common/reqid.h
 create mode 100644 ctdb/common/srvid.c
 create mode 100644 ctdb/common/srvid.h
 create mode 120000 ctdb/include/common/srvid.h
 copy ctdb/include/public/{ => util}/README.txt (100%)
 copy ctdb/{include/ctdb_protocol.h => protocol/protocol.h} (55%)
 create mode 100644 ctdb/protocol/protocol_api.h
 create mode 100644 ctdb/protocol/protocol_call.c
 create mode 100644 ctdb/protocol/protocol_client.c
 create mode 100644 ctdb/protocol/protocol_control.c
 create mode 100644 ctdb/protocol/protocol_header.c
 create mode 100644 ctdb/protocol/protocol_message.c
 create mode 100644 ctdb/protocol/protocol_packet.c
 create mode 100644 ctdb/protocol/protocol_private.h
 create mode 100644 ctdb/protocol/protocol_types.c
 create mode 100644 ctdb/protocol/protocol_util.c
 create mode 100644 ctdb/server/ctdb_recovery_helper.c
 create mode 100755 ctdb/tests/cunit/comm_test_001.sh
 create mode 100755 ctdb/tests/cunit/comm_test_002.sh
 create mode 100755 ctdb/tests/cunit/db_hash_test_001.sh
 create mode 100755 ctdb/tests/cunit/pkt_read_001.sh
 create mode 100755 ctdb/tests/cunit/pkt_write_001.sh
 create mode 100755 ctdb/tests/cunit/protocol_test_001.sh
 create mode 100755 ctdb/tests/cunit/protocol_test_002.sh
 create mode 100755 ctdb/tests/cunit/reqid_test_001.sh
 create mode 100755 ctdb/tests/cunit/srvid_test_001.sh
 create mode 100644 ctdb/tests/src/comm_client_test.c
 create mode 100644 ctdb/tests/src/comm_server_test.c
 create mode 100644 ctdb/tests/src/comm_test.c
 create mode 100644 ctdb/tests/src/db_hash_test.c
 create mode 100644 ctdb/tests/src/pkt_read_test.c
 create mode 100644 ctdb/tests/src/pkt_write_test.c
 create mode 100644 ctdb/tests/src/protocol_client_test.c
 create mode 100644 ctdb/tests/src/protocol_types_test.c
 create mode 100644 ctdb/tests/src/reqid_test.c
 create mode 100644 ctdb/tests/src/srvid_test.c


Changeset truncated at 500 lines:

diff --git a/ctdb/client/client.h b/ctdb/client/client.h
new file mode 100644
index 0000000..3f720fc
--- /dev/null
+++ b/ctdb/client/client.h
@@ -0,0 +1,833 @@
+/*
+   CTDB client code
+
+   Copyright (C) Amitay Isaacs  2015
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __CTDB_CLIENT_H__
+#define __CTDB_CLIENT_H__
+
+#include "protocol/protocol.h"
+#include "common/srvid.h"
+
+struct ctdb_client_context;
+struct ctdb_db_context;
+struct ctdb_record_handle;
+
+/* from client/client_connect.c */
+
+int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		     const char *sockpath, struct ctdb_client_context **ret);
+
+uint32_t ctdb_client_pnn(struct ctdb_client_context *client);
+
+void ctdb_client_wait(struct tevent_context *ev, bool *done);
+
+struct tevent_req *ctdb_recovery_wait_send(TALLOC_CTX *mem_ctx,
+					   struct tevent_context *ev,
+					   struct ctdb_client_context *client);
+
+bool ctdb_recovery_wait_recv(struct tevent_req *req, int *perr);
+
+/* from client/client_call.c */
+
+struct tevent_req *ctdb_client_call_send(TALLOC_CTX *mem_ctx,
+					 struct tevent_context *ev,
+					 struct ctdb_client_context *client,
+					 struct ctdb_req_call *request);
+
+bool ctdb_client_call_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+			   struct ctdb_reply_call **reply, int *perr);
+
+
+/* from client/client_message.c */
+
+struct tevent_req *ctdb_client_message_send(TALLOC_CTX *mem_ctx,
+					    struct tevent_context *ev,
+					    struct ctdb_client_context *client,
+					    uint32_t destnode,
+					    struct ctdb_req_message *message);
+
+bool ctdb_client_message_recv(struct tevent_req *req, int *perr);
+
+int ctdb_client_message(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			struct ctdb_client_context *client,
+			uint32_t destnode, struct ctdb_req_message *message);
+
+int ctdb_client_set_message_handler(TALLOC_CTX *mem_ctx,
+				    struct tevent_context *ev,
+				    struct ctdb_client_context *client,
+				    uint64_t srvid, srvid_handler_fn handler,
+				    void *private_data);
+
+int ctdb_client_remove_message_handler(TALLOC_CTX *mem_ctx,
+				       struct tevent_context *ev,
+				       struct ctdb_client_context *client,
+				       uint64_t srvid, void *private_data);
+
+/* from client/client_message_sync.c */
+
+int ctdb_message_recd_update_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+				struct ctdb_client_context *client,
+				int destnode, struct ctdb_public_ip *pubip);
+
+int ctdb_message_mem_dump(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct ctdb_srvid_message *msg);
+
+int ctdb_message_reload_nodes(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			      struct ctdb_client_context *client,
+			      int destnode);
+
+int ctdb_message_takeover_run(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			      struct ctdb_client_context *client,
+			      int destnode, struct ctdb_srvid_message *msg);
+
+int ctdb_message_rebalance_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+				struct ctdb_client_context *client,
+				int destnode, uint32_t pnn);
+
+int ctdb_message_disable_takeover_runs(TALLOC_CTX *mem_ctx,
+				       struct tevent_context *ev,
+				       struct ctdb_client_context *client,
+				       int destnode,
+				       struct ctdb_disable_message *disable);
+
+int ctdb_message_disable_recoveries(TALLOC_CTX *mem_ctx,
+				    struct tevent_context *ev,
+				    struct ctdb_client_context *client,
+				    int destnode,
+				    struct ctdb_disable_message *disable);
+
+int ctdb_message_disable_ip_check(TALLOC_CTX *mem_ctx,
+				  struct tevent_context *ev,
+				  struct ctdb_client_context *client,
+				  int destnode, uint32_t timeout);
+
+/* from client/client_control.c */
+
+struct tevent_req *ctdb_client_control_send(TALLOC_CTX *mem_ctx,
+					    struct tevent_context *ev,
+					    struct ctdb_client_context *client,
+					    uint32_t destnode,
+					    struct timeval timeout,
+					    struct ctdb_req_control *request);
+
+bool ctdb_client_control_recv(struct tevent_req *req, int *perr,
+			      TALLOC_CTX *mem_ctx,
+			      struct ctdb_reply_control **preply);
+
+struct tevent_req *ctdb_client_control_multi_send(
+				TALLOC_CTX *mem_ctx,
+				struct tevent_context *ev,
+				struct ctdb_client_context *client,
+				uint32_t *pnn_list, int count,
+				struct timeval timeout,
+				struct ctdb_req_control *request);
+
+bool ctdb_client_control_multi_recv(struct tevent_req *req, int *perr,
+				    TALLOC_CTX *mem_ctx, int **perr_list,
+				    struct ctdb_reply_control ***preply);
+
+int ctdb_client_control_multi_error(uint32_t *pnn_list, int count,
+				    int *err_list, uint32_t *pnn);
+
+int ctdb_client_control(TALLOC_CTX *mem_ctx,
+			struct tevent_context *ev,
+			struct ctdb_client_context *client,
+			uint32_t destnode,
+			struct timeval timeout,
+			struct ctdb_req_control *c,
+			struct ctdb_reply_control **preply);
+
+int ctdb_client_control_multi(TALLOC_CTX *mem_ctx,
+			      struct tevent_context *ev,
+			      struct ctdb_client_context *client,
+			      uint32_t *pnn_list, int count,
+			      struct timeval timeout,
+			      struct ctdb_req_control *request,
+			      int **perr,
+			      struct ctdb_reply_control ***preply);
+
+/* from client/client_control_sync.c */
+
+int ctdb_ctrl_process_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			     struct ctdb_client_context *client,
+			     int destnode, struct timeval timeout,
+			     pid_t pid, int *status);
+
+int ctdb_ctrl_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			 struct ctdb_client_context *client,
+			 int destnode, struct timeval timeout,
+			 struct ctdb_statistics **stats);
+
+int ctdb_ctrl_ping(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		   struct ctdb_client_context *client,
+		   int destnode, struct timeval timeout,
+		   int *num_clients);
+
+int ctdb_ctrl_getdbpath(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			struct ctdb_client_context *client,
+			int destnode, struct timeval timeout,
+			uint32_t db_id, const char **db_path);
+
+int ctdb_ctrl_getvnnmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			struct ctdb_client_context *client,
+			int destnode, struct timeval timeout,
+			struct ctdb_vnn_map **vnnmap);
+
+int ctdb_ctrl_getdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		       struct ctdb_client_context *client,
+		       int destnode, struct timeval timeout,
+		       uint32_t *loglevel);
+
+int ctdb_ctrl_setdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		       struct ctdb_client_context *client,
+		       int destnode, struct timeval timeout,
+		       uint32_t loglevel);
+
+int ctdb_ctrl_get_dbmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			struct ctdb_client_context *client,
+			int destnode, struct timeval timeout,
+			struct ctdb_dbid_map **dbmap);
+
+int ctdb_ctrl_pull_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		      struct ctdb_client_context *client, int destnode,
+		      struct timeval timeout, struct ctdb_pulldb *pulldb,
+		      struct ctdb_rec_buffer **recbuf);
+
+int ctdb_ctrl_push_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		      struct ctdb_client_context *client, int destnode,
+		      struct timeval timeout, struct ctdb_rec_buffer *recbuf);
+
+int ctdb_ctrl_get_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  int *recmode);
+
+int ctdb_ctrl_set_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  int recmode);
+
+int ctdb_ctrl_statistics_reset(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			       struct ctdb_client_context *client,
+			       int destnode, struct timeval timeout);
+
+int ctdb_ctrl_db_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			struct ctdb_client_context *client,
+			int destnode, struct timeval timeout,
+			const char *db_name, uint32_t tdb_flags,
+			uint32_t *db_id);
+
+int ctdb_ctrl_traverse_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			     struct ctdb_client_context *client,
+			     int destnode, struct timeval timeout,
+			     struct ctdb_traverse_start *traverse);
+
+int ctdb_ctrl_register_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			     struct ctdb_client_context *client,
+			     int destnode, struct timeval timeout,
+			     uint64_t srvid);
+
+int ctdb_ctrl_deregister_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			       struct ctdb_client_context *client,
+			       int destnode, struct timeval timeout,
+			       uint64_t srvid);
+
+int ctdb_ctrl_get_dbname(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			 struct ctdb_client_context *client,
+			 int destnode, struct timeval timeout,
+			 uint32_t db_id, const char **db_name);
+
+int ctdb_ctrl_enable_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    uint32_t db_id);
+
+int ctdb_ctrl_update_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    uint32_t db_id);
+
+int ctdb_ctrl_dump_memory(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  const char **mem_str);
+
+int ctdb_ctrl_get_pid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		      struct ctdb_client_context *client,
+		      int destnode, struct timeval timeout,
+		      pid_t *pid);
+
+int ctdb_ctrl_get_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    uint32_t *recmaster);
+
+int ctdb_ctrl_set_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    uint32_t recmaster);
+
+int ctdb_ctrl_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		     struct ctdb_client_context *client,
+		     int destnode, struct timeval timeout,
+		     int priority);
+
+int ctdb_ctrl_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		   struct ctdb_client_context *client,
+		   int destnode, struct timeval timeout,
+		   int priority);
+
+int ctdb_ctrl_get_pnn(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		      struct ctdb_client_context *client,
+		      int destnode, struct timeval timeout,
+		      uint32_t *pnn);
+
+int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		       struct ctdb_client_context *client,
+		       int destnode, struct timeval timeout);
+
+int ctdb_ctrl_get_monmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  int *mon_mode);
+
+int ctdb_ctrl_tcp_add(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		      struct ctdb_client_context *client,
+		      int destnode, struct timeval timeout,
+		      struct ctdb_connection *conn);
+
+int ctdb_ctrl_tcp_remove(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			 struct ctdb_client_context *client,
+			 int destnode, struct timeval timeout,
+			 struct ctdb_connection *conn);
+
+int ctdb_ctrl_set_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  struct ctdb_tunable *tunable);
+
+int ctdb_ctrl_get_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  const char *var, uint32_t *value);
+
+int ctdb_ctrl_list_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    struct ctdb_var_list **var_list);
+
+int ctdb_ctrl_modify_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			   struct ctdb_client_context *client,
+			   int destnode, struct timeval timeout,
+			   uint32_t pnn, uint32_t old_flags,
+			   uint32_t new_flags);
+
+int ctdb_ctrl_get_all_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			       struct ctdb_client_context *client,
+			       int destnode, struct timeval timeout,
+			       struct ctdb_tunable_list **tun_list);
+
+int ctdb_ctrl_kill_tcp(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		       struct ctdb_client_context *client,
+		       int destnode, struct timeval timeout,
+		       struct ctdb_connection *conn);
+
+int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX *mem_ctx,
+				  struct tevent_context *ev,
+				  struct ctdb_client_context *client,
+				  int destnode, struct timeval timeout,
+				  ctdb_sock_addr *addr,
+				  struct ctdb_tickle_list **tickles);
+
+int ctdb_ctrl_set_tcp_tickle_list(TALLOC_CTX *mem_ctx,
+				  struct tevent_context *ev,
+				  struct ctdb_client_context *client,
+				  int destnode, struct timeval timeout,
+				  struct ctdb_tickle_list *tickles);
+
+int ctdb_ctrl_register_server_id(TALLOC_CTX *mem_ctx,
+				 struct tevent_context *ev,
+				 struct ctdb_client_context *client,
+				 int destnode, struct timeval timeout,
+				 struct ctdb_client_id *cid);
+
+int ctdb_ctrl_unregister_server_id(TALLOC_CTX *mem_ctx,
+				   struct tevent_context *ev,
+				   struct ctdb_client_context *client,
+				   int destnode, struct timeval timeout,
+				   struct ctdb_client_id *cid);
+
+int ctdb_ctrl_check_server_id(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			      struct ctdb_client_context *client,
+			      int destnode, struct timeval timeout,
+			      struct ctdb_client_id *cid);
+
+int ctdb_ctrl_get_server_id_list(TALLOC_CTX *mem_ctx,
+				 struct tevent_context *ev,
+				 struct ctdb_client_context *client,
+				 int destnode, struct timeval timeout,
+				 struct ctdb_client_id_map **cid_map);
+
+int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx,
+				   struct tevent_context *ev,
+				   struct ctdb_client_context *client,
+				   int destnode, struct timeval timeout,
+				   const char *db_name, int tdb_flags,
+				   uint32_t *db_id);
+
+int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX *mem_ctx,
+				  struct tevent_context *ev,
+				  struct ctdb_client_context *client,
+				  int destnode, struct timeval timeout,
+				  struct ctdb_addr_info *addr_info);
+
+int ctdb_ctrl_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+				struct ctdb_client_context *client,
+				int destnode, struct timeval timeout,
+				uint32_t tid);
+
+int ctdb_ctrl_transaction_commit(TALLOC_CTX *mem_ctx,
+				 struct tevent_context *ev,
+				 struct ctdb_client_context *client,
+				 int destnode, struct timeval timeout,
+				 uint32_t tid);
+
+int ctdb_ctrl_wipe_database(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    uint32_t db_id, uint32_t tid);
+
+int ctdb_ctrl_uptime(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+		     struct ctdb_client_context *client,
+		     int destnode, struct timeval timeout,
+		     struct ctdb_uptime **uptime);
+
+int ctdb_ctrl_start_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			     struct ctdb_client_context *client,
+			     int destnode, struct timeval timeout);
+
+int ctdb_ctrl_end_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			   struct ctdb_client_context *client,
+			   int destnode, struct timeval timeout);
+
+int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+				struct ctdb_client_context *client,
+				int destnode, struct timeval timeout);
+
+int ctdb_ctrl_enable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			     struct ctdb_client_context *client,
+			     int destnode, struct timeval timeout);
+
+int ctdb_ctrl_disable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			      struct ctdb_client_context *client,
+			      int destnode, struct timeval timeout);
+
+int ctdb_ctrl_add_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    struct ctdb_addr_info *addr_info);
+
+int ctdb_ctrl_del_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    struct ctdb_addr_info *addr_info);
+
+int ctdb_ctrl_run_eventscripts(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			       struct ctdb_client_context *client,
+			       int destnode, struct timeval timeout,
+			       const char *event);
+
+int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			       struct ctdb_client_context *client,
+			       int destnode, struct timeval timeout,
+			       uint32_t *caps);
+
+int ctdb_ctrl_release_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			 struct ctdb_client_context *client,
+			 int destnode, struct timeval timeout,
+			 struct ctdb_public_ip *pubip);
+
+int ctdb_ctrl_takeover_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  struct ctdb_public_ip *pubip);
+
+int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			     struct ctdb_client_context *client,
+			     int destnode, struct timeval timeout,
+			     struct ctdb_public_ip_list **pubip_list);
+
+int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			  struct ctdb_client_context *client,
+			  int destnode, struct timeval timeout,
+			  struct ctdb_node_map **nodemap);
+
+int ctdb_ctrl_get_event_script_status(TALLOC_CTX *mem_ctx,
+				      struct tevent_context *ev,
+				      struct ctdb_client_context *client,
+				      int destnode, struct timeval timeout,
+				      enum ctdb_event event,
+				      struct ctdb_script_list **slist);
+
+int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			    struct ctdb_client_context *client,
+			    int destnode, struct timeval timeout,
+			    struct ctdb_traverse_start *traverse);
+
+int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+			       struct ctdb_client_context *client,


-- 
Samba Shared Repository



More information about the samba-cvs mailing list