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 <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> Autobuild-User(master): Amitay Isaacs <ami...@samba.org> Autobuild-Date(master): Wed Oct 7 17:55:05 CEST 2015 on sn-devel-104 commit 3cf93d91361191a7accdf0ddf5e811212e0a5ca2 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit fbd9c9fd2f9a4e3e4cf03af574b322752670d632 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit ffff66b011131c16c369b397d6fcdd5b75a6db4e Author: Amitay Isaacs <ami...@gmail.com> Date: Mon Sep 21 17:12:25 2015 +1000 ctdb-call: Improve a log message Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit e6ff36506c820523ab23b3749227bf6df6218d76 Author: Amitay Isaacs <ami...@gmail.com> Date: Thu Sep 17 16:22:38 2015 +1000 ctdb-recoverd: Add code for parallel database recovery Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit cbfabd8104f56599d0b1f0a2f17d5154144a9341 Author: Amitay Isaacs <ami...@gmail.com> Date: Thu Sep 17 16:14:51 2015 +1000 ctdb-daemon: Add parallel database recovery capability Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit f0613ac4f7b3d3721750b7ee187a40a8a185a74e Author: Amitay Isaacs <ami...@gmail.com> Date: Thu Sep 17 16:13:55 2015 +1000 ctdb-daemon: Use a define for default capabilities Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 4b39a7706f910c2830e4869b5e6363c45fbb7804 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 9843363629972f162f923e759c6060a712fac2d2 Author: Amitay Isaacs <ami...@gmail.com> Date: Thu Sep 17 16:07:37 2015 +1000 ctdb-recoverd: Update capabilities before the database recovery Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 14cacd2925a77a1f45b42ad102ce1eb9448e4d7c Author: Amitay Isaacs <ami...@gmail.com> Date: Thu Sep 17 16:00:47 2015 +1000 ctdb-recovery: Factor out existing database recovery code Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 951431910dc6d00815c19e087bc2546b1daa591b Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit b04c48d2f5f0a5e64ccf75e7773b880c521ffef3 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 81ac247c10c362b643c2b3ce57df4fe6ecae78dd Author: Amitay Isaacs <ami...@gmail.com> Date: Sat Aug 1 01:47:22 2015 +1000 ctdb-protocol: Add controls for parallel DB recovery Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit c6a50b97d4c91967c480e7077b66e149bc38dcf4 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Apr 15 00:14:25 2015 +1000 ctdb-client: Add new client API implementation Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 34a6c99776cd50dfa4f6c2e02a6439d6d59b045e Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Apr 14 17:20:05 2015 +1000 ctdb-protocol: Add ctdb protocol serialization routines Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 8b45badfdaa8d9b618d551fcbbe8a2f7d680c4f9 Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Apr 14 11:42:45 2015 +1000 ctdb-include: Remove unused structure definitions Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 54da5c6603059709529d50d4f5c5c39373ca4216 Author: Amitay Isaacs <ami...@gmail.com> Date: Sat Aug 1 22:36:04 2015 +1000 ctdb-common: Add logging utilities Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 1543eedb8feaa85336216aa22df2145522425184 Author: Amitay Isaacs <ami...@gmail.com> Date: Sat Apr 4 20:23:44 2015 +1100 ctdb-common: Add communication endpoint abstraction Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit e01c0eed38335e7b421ab4f79410f08ab1d31482 Author: Amitay Isaacs <ami...@gmail.com> Date: Mon Apr 6 17:26:29 2015 +1000 ctdb-common: Add packet write abstraction Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit c77d3bb183a6e8109db8e4f5494adf899b01ccea Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Sep 2 22:32:50 2015 +1000 ctdb-common: Add packet read abstraction Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit facd3c864e0a2db29e6b838389111ba731e02078 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 606b909310fc49a5f793c5031372a08c3848685b Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 670db6ac1d678babd25dd82c4467c0f094cfabc5 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 9c16fe43fc37d0804e5a0337726fccf4e1ab73f3 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 100917b169765821bc79ef322663948c5edd34ca Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Sep 8 17:58:25 2015 +1000 ctdb-packaging: Install header files in ctdb subdirectory Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit b25c1135a74f5d61da00847149587835bc2102c9 Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Mar 17 14:30:18 2015 +1100 ctdb-daemon: Use reqid abstraction Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 9fd4d07ca60e2e4a40662988ce8136efa6452ced Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Mar 17 13:29:44 2015 +1100 ctdb-common: Add request id abstraction Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit a7ea6b094e60a41e28df5a8f17b98bb3bd1058d9 Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Mar 17 13:41:36 2015 +1100 ctdb-include: Remove unused definition Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 7c6115e11b2112f5b4003be862f709cc9ffea615 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Apr 8 14:41:59 2015 +1000 ctdb-daemon: whitespace fix Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 9d75bf3a9ffaa1e0cd25f7ada57f9eef7de614c3 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Apr 8 14:41:12 2015 +1000 ctdb-daemon: formatting fix Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 62f1e2579a6e97e7e33f68be779694d5eceb36c0 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Apr 8 14:38:26 2015 +1000 ctdb-daemon: Replace ctdb_message with srvid abstraction Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 6272ef0d09930ffbff43c6223ea35858d13efffa Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit e5592f9fc018b4b22fbdba4f45526210f5f41692 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit acf5ebfa906b226d7db2051c9716dd9091d7ecb7 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Apr 8 14:25:12 2015 +1000 ctdb-daemon: whitespace fix Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 6672deea13b663dd43e82df76a3152887ddac1dd Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Apr 8 14:25:01 2015 +1000 ctdb-daemon: formatting fix Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit ba56d852cb156585e34b758f3065df7adcdb73ba Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Apr 8 14:24:31 2015 +1000 ctdb-daemon: Remove ctdb from traverse_callback Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 3f287ec47934225be5a72e9c7bf51421d22895a6 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 90b633ea79291c85248f63493af64be7868763af Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 42f772215178050a3f465440e79e1ec9bce0e34f Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 3cbd0409f398828ee6415229b3c23781405176ea Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 0ff90f4fac74e61192aff100b168e38ce0adfabb Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit d701072c3e2309019a729c908b28c6657b28a2ca Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 3d11efe3c63c884ebb78c5488c565d9ab5afb963 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 1df25943866e1644d0f48c8980c7eafdea0b6366 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit b81d4ccc770fc0f691fb87becd991350d91d2bd6 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 5d9dd4d400296a4182dadc70cb4ddf9ca0681a60 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 8a5039d96390742be5563e74b7e2778f7d388ed2 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit b4357a79d916b1f8ade8fa78563fbef0ce670aa9 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit fafd35b68f8af41095cb41cd604c27495fa2b6a1 Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Sep 15 16:13:10 2015 +1000 ctdb-freeze: Fix a log message Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit d14ff2d87e95c4c8c9faef800fc81b8c049d16da Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 858056263a0000663c0b50da6f080a845dc4d766 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 3d325e7fa1de48ec88487d31a657e6a876d2dd81 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 4f155e77a8210e43456239391c03a5804d01b828 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 9f779f130fa275dcc43adcab03d4704663776dce Author: Amitay Isaacs <ami...@gmail.com> Date: Thu Aug 28 16:59:52 2014 +1000 ctdb-freeze: simplify code with TALLOC_FREE Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 979f1c5ea116b8aac536ebe29d584730e8fe9a4b Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 66c7bcc777ff5cbc625da86384d8c29d34c66bf9 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit e0fa182d9362537f7081e215250ce2052a9a34c8 Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Sep 15 14:01:49 2015 +1000 ctdb-daemon: Use database specific freeze check routine Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit e170bd4f1b3fcf988867d1dd00b49e8813c6ca7f Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit d139f87718e06aaae73652fdf52f2c1dd2dcbe99 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit fd7ceaf3ac59fc7dc70d34e81cfd75a171a2e6c0 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 5447864e5d31d433f9a54924f3bb01f1384620fd Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 7afabb1285f6778b5b2862e178315b03f54eb8ef Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 8c58c7392fe342fb39fcaf81c2465762f1823b51 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 056c44fda3f3d84dc3eb9766e0ee04bdb6387ea5 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 6a212d13d046d9f3ff6a2423d55b24b8068498e3 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 2116c55b08288b3c59613ed0d088eeba1c29d682 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit bc9a68592e15068332a915270c6ebdc46f4542d0 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 457618888a80d3f5733a9e3dd41d3ab64ace4ae5 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 74f7eebc7911a4ec5f6ee68266b027a661579c68 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit fb237608d7bdb3faf471a7be8a96176a42826811 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit ecb858f54831a439544c7d40051ce91d4103c746 Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Aug 5 16:45:34 2014 +1000 ctdb-locking: Expose ctdb_db_prio_iterator function Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit b1f468017750c4c91f80c5239a364546a1d35e72 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 8df0916520f2cf938cbdece28d83c8a7b1824934 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit b15a65ecc8646f4bd65012005ee28d4aaf272836 Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Aug 5 16:23:47 2014 +1000 ctdb-freeze: Remove commented test code Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> commit 036203e02a4926d8d465a3f83f6bc565ae451483 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@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