[SCM] Samba Shared Repository - branch master updated
Amitay Isaacs
amitay at samba.org
Wed Jun 8 12:32:03 UTC 2016
The branch, master has been updated
via c620bf5 ctdb-daemon: Reset push_started flag once DB_PUSH_CONFIRM is done
via ecb7472 ctdb-recoverd: Avoid duplicate recoverd event in parallel recovery
via 3d3c152 ctdb-system: Remove duplicate functions
via a4ac97d6 ctdb-daemon: Use lib/util functions instead of redefinitions
via 95c2cd1 lib/util: Add a generic definition for set_close_on_exec
via e1e1442 ctdb-tests: Re-use set_blocking instead of re-definition
via 3031732 ctdb-tests: Re-use async accept wrapper from async_req
via 48d1fd8 ctdb-scripts: Add eventscript 06.nfs
via 6096233 ctdb-scripts: Move NFS callout-related code to functions file
from 6888c17 build: Address may be used uninitialized in this function on Ubuntu 10.04
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit c620bf5debd57a4a5d7f893a2b6383098ff7a919
Author: Amitay Isaacs <amitay at gmail.com>
Date: Wed Jun 8 15:04:52 2016 +1000
ctdb-daemon: Reset push_started flag once DB_PUSH_CONFIRM is done
Once DB_PUSH_START is processed as part of recovery, push_started
flag tracks if there are multiple attempts to send DB_PUSH_START.
In DB_PUSH_CONFIRM, once the record count is confirmed, all information
related to DB_PUSH should be reset. However, The push_started flag was
not reset when the push_state was reset.
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 Jun 8 14:31:52 CEST 2016 on sn-devel-144
commit ecb74721e78942e66aaf2d2f88f141305e311328
Author: Amitay Isaacs <amitay at gmail.com>
Date: Wed Jun 8 14:15:22 2016 +1000
ctdb-recoverd: Avoid duplicate recoverd event in parallel recovery
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11956
In do_recovery, after the recovery and takeover is complete, recoverd
event is triggered. When the parallel database recovery was separated,
ctdb_recovery_helper implemented sending END_RECOVERY control which
causes recoverd event to be triggered. So when there is parallel database
recovery, recoverd event is triggered twice.
Instead move the call to run_recovered_eventscript() explicitly in
the serial recovery code path. This avoids the duplication trigger of
recoverd event.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 3d3c15232bf7bf337127414d0c0cc639cc290710
Author: Amitay Isaacs <amitay at gmail.com>
Date: Fri May 27 13:32:28 2016 +1000
ctdb-system: Remove duplicate functions
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit a4ac97d6c073c30c0fdefb8ae7c31d6fa6b29924
Author: Amitay Isaacs <amitay at gmail.com>
Date: Fri May 27 13:50:06 2016 +1000
ctdb-daemon: Use lib/util functions instead of redefinitions
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 95c2cd10d7918aad5b97ca2bde86a8811189b54c
Author: Amitay Isaacs <amitay at gmail.com>
Date: Fri May 27 13:43:33 2016 +1000
lib/util: Add a generic definition for set_close_on_exec
Avoid changing function names to smb_set_close_on_exec in ctdb.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit e1e14420a63bf766fdd05a1560dfe09f7cda4df6
Author: Amitay Isaacs <amitay at gmail.com>
Date: Fri May 27 12:52:12 2016 +1000
ctdb-tests: Re-use set_blocking instead of re-definition
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 30317325041b18031cb02519f7195a3cbbe0fb25
Author: Amitay Isaacs <amitay at gmail.com>
Date: Fri May 27 12:38:20 2016 +1000
ctdb-tests: Re-use async accept wrapper from async_req
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 48d1fd8299663cddabf63cb1d33a8c032d9b9b87
Author: Martin Schwenke <martin at meltin.net>
Date: Mon Jun 6 14:03:47 2016 +1000
ctdb-scripts: Add eventscript 06.nfs
This generates takeip-pre and releaseip-pre call-out events.
One use is to put NFS into grace before an IP is assigned to an
interface.
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: Amitay Isaacs <amitay at gmail.com>
commit 6096233919528e2337fa9d3269caaf0a86becf9b
Author: Martin Schwenke <martin at meltin.net>
Date: Mon Jun 6 13:56:55 2016 +1000
ctdb-scripts: Move NFS callout-related code to functions file
A second NFS eventscript may be required, so make this code available
to it.
The initialisation code can't be evaluated in the functions file
because service_state_dir isn't yet setup, so put it in a function and
call it with other initialisation code.
Signed-off-by: Martin Schwenke <martin at meltin.net>
Reviewed-by: Amitay Isaacs <amitay at gmail.com>
-----------------------------------------------------------------------
Summary of changes:
ctdb/client/ctdb_client.c | 4 +-
ctdb/common/comm.c | 19 ++------
ctdb/common/system.h | 2 -
ctdb/common/system_aix.c | 5 ++-
ctdb/common/system_freebsd.c | 3 +-
ctdb/common/system_gnu.c | 3 +-
ctdb/common/system_kfreebsd.c | 3 +-
ctdb/common/system_linux.c | 5 ++-
ctdb/common/system_util.c | 33 --------------
ctdb/config/events.d/06.nfs | 39 ++++++++++++++++
ctdb/config/events.d/60.nfs | 59 +------------------------
ctdb/config/functions | 63 ++++++++++++++++++++++++++
ctdb/config/nfs-linux-kernel-callout | 2 +-
ctdb/doc/examples/nfs-ganesha-callout | 2 +-
ctdb/packaging/RPM/ctdb.spec.in | 1 +
ctdb/server/ctdb_cluster_mutex.c | 1 +
ctdb/server/ctdb_daemon.c | 5 ++-
ctdb/server/ctdb_event_helper.c | 2 +
ctdb/server/ctdb_logging.c | 1 +
ctdb/server/ctdb_recover.c | 1 +
ctdb/server/ctdb_recoverd.c | 18 ++++----
ctdb/tcp/tcp_connect.c | 5 ++-
ctdb/tests/src/comm_server_test.c | 81 ++--------------------------------
ctdb/tests/src/ctdb_porting_tests.c | 5 ++-
ctdb/tests/src/fake_ctdbd.c | 83 +----------------------------------
ctdb/tests/src/pkt_read_test.c | 19 ++------
ctdb/tests/src/pkt_write_test.c | 19 ++------
ctdb/utils/pmda/pmda_ctdb.c | 3 +-
ctdb/wscript | 7 ++-
lib/util/blocking.h | 2 +
30 files changed, 170 insertions(+), 325 deletions(-)
create mode 100755 ctdb/config/events.d/06.nfs
Changeset truncated at 500 lines:
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index 4ed8f0a..7e98499 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -294,9 +294,9 @@ int ctdb_socket_connect(struct ctdb_context *ctdb)
return -1;
}
- set_nonblocking(ctdb->daemon.sd);
+ set_blocking(ctdb->daemon.sd, false);
set_close_on_exec(ctdb->daemon.sd);
-
+
ctdb->daemon.queue = ctdb_queue_setup(ctdb, ctdb, ctdb->daemon.sd,
CTDB_DS_ALIGNMENT,
ctdb_client_read_cb, ctdb, "to-ctdbd");
diff --git a/ctdb/common/comm.c b/ctdb/common/comm.c
index 1bbb460..7f370da 100644
--- a/ctdb/common/comm.c
+++ b/ctdb/common/comm.c
@@ -24,26 +24,13 @@
#include <talloc.h>
#include <tdb.h>
+#include "lib/util/blocking.h"
#include "lib/util/tevent_unix.h"
#include "pkt_read.h"
#include "pkt_write.h"
#include "comm.h"
-static bool set_nonblocking(int fd)
-{
- int v;
-
- v = fcntl(fd, F_GETFL, 0);
- if (v == -1) {
- return false;
- }
- if (fcntl(fd, F_SETFL, v | O_NONBLOCK) == -1) {
- return false;
- }
- return true;
-}
-
/*
* Communication endpoint around a socket
*/
@@ -78,6 +65,7 @@ int comm_setup(TALLOC_CTX *mem_ctx, struct tevent_context *ev, int fd,
struct comm_context **result)
{
struct comm_context *comm;
+ int ret;
if (fd < 0) {
return EINVAL;
@@ -88,7 +76,8 @@ int comm_setup(TALLOC_CTX *mem_ctx, struct tevent_context *ev, int fd,
}
/* Socket queue relies on non-blocking sockets. */
- if (!set_nonblocking(fd)) {
+ ret = set_blocking(fd, false);
+ if (ret == -1) {
return EIO;
}
diff --git a/ctdb/common/system.h b/ctdb/common/system.h
index 2b469dc..2007814 100644
--- a/ctdb/common/system.h
+++ b/ctdb/common/system.h
@@ -47,8 +47,6 @@ int ctdb_get_peer_pid(const int fd, pid_t *peer_pid);
bool set_scheduler(void);
void reset_scheduler(void);
-void set_nonblocking(int fd);
-void set_close_on_exec(int fd);
bool parse_ipv4(const char *s, unsigned port, struct sockaddr_in *sin);
bool parse_ip(const char *addr, const char *ifaces, unsigned port,
diff --git a/ctdb/common/system_aix.c b/ctdb/common/system_aix.c
index de69b9e..48cd781 100644
--- a/ctdb/common/system_aix.c
+++ b/ctdb/common/system_aix.c
@@ -25,6 +25,7 @@
#include "system/wait.h"
#include "lib/util/debug.h"
+#include "lib/util/blocking.h"
#include "protocol/protocol.h"
@@ -65,7 +66,7 @@ int ctdb_sys_open_sending_socket(void)
return -1;
}
- set_nonblocking(s);
+ set_blocking(s, false);
set_close_on_exec(s);
return s;
@@ -142,7 +143,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
return -1;
}
- set_nonblocking(s);
+ set_blocking(s, false);
set_close_on_exec(s);
memset(&ip4pkt, 0, sizeof(ip4pkt));
diff --git a/ctdb/common/system_freebsd.c b/ctdb/common/system_freebsd.c
index 3845019..a03b97a 100644
--- a/ctdb/common/system_freebsd.c
+++ b/ctdb/common/system_freebsd.c
@@ -30,6 +30,7 @@
#include "system/wait.h"
#include "lib/util/debug.h"
+#include "lib/util/blocking.h"
#include "protocol/protocol.h"
@@ -179,7 +180,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
return -1;
}
- set_nonblocking(s);
+ set_blocking(s, false);
set_close_on_exec(s);
ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0,
diff --git a/ctdb/common/system_gnu.c b/ctdb/common/system_gnu.c
index 70361d7..09c4ffe 100644
--- a/ctdb/common/system_gnu.c
+++ b/ctdb/common/system_gnu.c
@@ -29,6 +29,7 @@
#include "system/wait.h"
#include "lib/util/debug.h"
+#include "lib/util/blocking.h"
#include "protocol/protocol.h"
@@ -177,7 +178,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
return -1;
}
- set_nonblocking(s);
+ set_blocking(s, false);
set_close_on_exec(s);
ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0, &dest->ip, sizeof(dest->ip));
diff --git a/ctdb/common/system_kfreebsd.c b/ctdb/common/system_kfreebsd.c
index 9b5c9ce..56f7c1c 100644
--- a/ctdb/common/system_kfreebsd.c
+++ b/ctdb/common/system_kfreebsd.c
@@ -29,6 +29,7 @@
#include "system/wait.h"
#include "lib/util/debug.h"
+#include "lib/util/blocking.h"
#include "protocol/protocol.h"
@@ -177,7 +178,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
return -1;
}
- set_nonblocking(s);
+ set_blocking(s, false);
set_close_on_exec(s);
ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0, &dest->ip, sizeof(dest->ip));
diff --git a/ctdb/common/system_linux.c b/ctdb/common/system_linux.c
index 2dca174..ef78df8 100644
--- a/ctdb/common/system_linux.c
+++ b/ctdb/common/system_linux.c
@@ -24,6 +24,7 @@
#include "system/wait.h"
#include "lib/util/debug.h"
+#include "lib/util/blocking.h"
#include "protocol/protocol.h"
@@ -385,7 +386,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
return -1;
}
- set_nonblocking(s);
+ set_blocking(s, false);
set_close_on_exec(s);
ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0,
@@ -468,7 +469,7 @@ int ctdb_sys_open_capture_socket(const char *iface, void **private_data)
DEBUG(DEBUG_DEBUG, (__location__ " Created RAW SOCKET FD:%d for tcp tickle\n", s));
- set_nonblocking(s);
+ set_blocking(s, false);
set_close_on_exec(s);
return s;
diff --git a/ctdb/common/system_util.c b/ctdb/common/system_util.c
index 4d56fd3..91bd72e 100644
--- a/ctdb/common/system_util.c
+++ b/ctdb/common/system_util.c
@@ -120,39 +120,6 @@ void reset_scheduler(void)
#endif
}
-void set_nonblocking(int fd)
-{
- int v;
-
- v = fcntl(fd, F_GETFL, 0);
- if (v == -1) {
- DEBUG(DEBUG_WARNING, ("Failed to get file status flags - %s\n",
- strerror(errno)));
- return;
- }
- if (fcntl(fd, F_SETFL, v | O_NONBLOCK) == -1) {
- DEBUG(DEBUG_WARNING, ("Failed to set non_blocking on fd - %s\n",
- strerror(errno)));
- }
-}
-
-void set_close_on_exec(int fd)
-{
- int v;
-
- v = fcntl(fd, F_GETFD, 0);
- if (v == -1) {
- DEBUG(DEBUG_WARNING, ("Failed to get file descriptor flags - %s\n",
- strerror(errno)));
- return;
- }
- if (fcntl(fd, F_SETFD, v | FD_CLOEXEC) != 0) {
- DEBUG(DEBUG_WARNING, ("Failed to set close_on_exec on fd - %s\n",
- strerror(errno)));
- }
-}
-
-
bool parse_ipv4(const char *s, unsigned port, struct sockaddr_in *sin)
{
sin->sin_family = AF_INET;
diff --git a/ctdb/config/events.d/06.nfs b/ctdb/config/events.d/06.nfs
new file mode 100755
index 0000000..2a069f3
--- /dev/null
+++ b/ctdb/config/events.d/06.nfs
@@ -0,0 +1,39 @@
+#!/bin/sh
+# script to manage nfs in a clustered environment
+
+[ -n "$CTDB_BASE" ] || \
+ export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD")
+
+. $CTDB_BASE/functions
+
+service_name="nfs"
+loadconfig
+ctdb_setup_service_state_dir
+
+######################################################################
+
+nfs_callout_pre ()
+{
+ _event="$1"
+ shift
+
+ nfs_callout "${_event}-pre" "$@"
+}
+
+######################################################################
+
+nfs_callout_init
+
+ctdb_start_stop_service
+
+is_ctdb_managed_service || exit 0
+
+case "$1" in
+takeip)
+ nfs_callout_pre "$@"
+ ;;
+
+releaseip)
+ nfs_callout_pre "$@"
+ ;;
+esac
diff --git a/ctdb/config/events.d/60.nfs b/ctdb/config/events.d/60.nfs
index 57cfbff..eb12ad6 100755
--- a/ctdb/config/events.d/60.nfs
+++ b/ctdb/config/events.d/60.nfs
@@ -12,63 +12,6 @@ ctdb_setup_service_state_dir
######################################################################
-if [ -z "$CTDB_NFS_CALLOUT" ] ; then
- CTDB_NFS_CALLOUT="${CTDB_BASE}/nfs-linux-kernel-callout"
-fi
-# Always export, for statd callout
-export CTDB_NFS_CALLOUT
-
-# If the callout wants to use this then it must create it
-export CTDB_NFS_CALLOUT_STATE_DIR="${service_state_dir}/callout-state"
-
-# Export, if set, for use by clustered NFS callouts
-if [ -n "$CTDB_NFS_STATE_FS_TYPE" ] ; then
- export CTDB_NFS_STATE_FS_TYPE
-fi
-if [ -n "$CTDB_NFS_STATE_MNT" ] ; then
- export CTDB_NFS_STATE_MNT
-fi
-
-nfs_callout_cache="${service_state_dir}/nfs_callout_cache"
-nfs_callout_cache_callout="${nfs_callout_cache}/CTDB_NFS_CALLOUT"
-nfs_callout_cache_ops="${nfs_callout_cache}/ops"
-
-nfs_callout_register ()
-{
- mkdir -p "$nfs_callout_cache_ops"
- rm -f "$nfs_callout_cache_ops"/*
-
- echo "$CTDB_NFS_CALLOUT" >"$nfs_callout_cache_callout"
-
- _t=$(eval "$CTDB_NFS_CALLOUT" "register")
- if [ -n "$_t" ] ; then
- echo "$_t" |
- while IFS="" read _op ; do
- touch "${nfs_callout_cache_ops}/${_op}"
- done
- else
- touch "${nfs_callout_cache_ops}/ALL"
- fi
-}
-
-nfs_callout ()
-{
- # Re-run registration if $CTDB_NFS_CALLOUT has changed
- _prev=""
- if [ -r "$nfs_callout_cache_callout" ] ; then
- read _prev <"$nfs_callout_cache_callout"
- fi
- if [ "$CTDB_NFS_CALLOUT" != "$_prev" ] ; then
- nfs_callout_register
- fi
-
- # Run the operation if it is registered...
- if [ -e "${nfs_callout_cache_ops}/${1}" ] || \
- [ -e "${nfs_callout_cache_ops}/ALL" ]; then
- eval "$CTDB_NFS_CALLOUT" "$@"
- fi
-}
-
service_reconfigure ()
{
# Restart lock manager, notify clients
@@ -294,6 +237,8 @@ nfs_update_lock_info ()
######################################################################
+nfs_callout_init
+
ctdb_start_stop_service
is_ctdb_managed_service || exit 0
diff --git a/ctdb/config/functions b/ctdb/config/functions
index 33efa51..b2a0735 100755
--- a/ctdb/config/functions
+++ b/ctdb/config/functions
@@ -1164,6 +1164,69 @@ if ! type mktemp >/dev/null 2>&1 ; then
}
fi
+######################################################################
+# NFS callout handling
+
+nfs_callout_init ()
+{
+ if [ -z "$CTDB_NFS_CALLOUT" ] ; then
+ CTDB_NFS_CALLOUT="${CTDB_BASE}/nfs-linux-kernel-callout"
+ fi
+ # Always export, for statd callout
+ export CTDB_NFS_CALLOUT
+
+ # If the callout wants to use this then it must create it
+ export CTDB_NFS_CALLOUT_STATE_DIR="${service_state_dir}/callout-state"
+
+ # Export, if set, for use by clustered NFS callouts
+ if [ -n "$CTDB_NFS_STATE_FS_TYPE" ] ; then
+ export CTDB_NFS_STATE_FS_TYPE
+ fi
+ if [ -n "$CTDB_NFS_STATE_MNT" ] ; then
+ export CTDB_NFS_STATE_MNT
+ fi
+
+ nfs_callout_cache="${service_state_dir}/nfs_callout_cache"
+ nfs_callout_cache_callout="${nfs_callout_cache}/CTDB_NFS_CALLOUT"
+ nfs_callout_cache_ops="${nfs_callout_cache}/ops"
+}
+
+nfs_callout_register ()
+{
+ mkdir -p "$nfs_callout_cache_ops"
+ rm -f "$nfs_callout_cache_ops"/*
+
+ echo "$CTDB_NFS_CALLOUT" >"$nfs_callout_cache_callout"
+
+ _t=$(eval "$CTDB_NFS_CALLOUT" "register")
+ if [ -n "$_t" ] ; then
+ echo "$_t" |
+ while IFS="" read _op ; do
+ touch "${nfs_callout_cache_ops}/${_op}"
+ done
+ else
+ touch "${nfs_callout_cache_ops}/ALL"
+ fi
+}
+
+nfs_callout ()
+{
+ # Re-run registration if $CTDB_NFS_CALLOUT has changed
+ _prev=""
+ if [ -r "$nfs_callout_cache_callout" ] ; then
+ read _prev <"$nfs_callout_cache_callout"
+ fi
+ if [ "$CTDB_NFS_CALLOUT" != "$_prev" ] ; then
+ nfs_callout_register
+ fi
+
+ # Run the operation if it is registered...
+ if [ -e "${nfs_callout_cache_ops}/${1}" ] || \
+ [ -e "${nfs_callout_cache_ops}/ALL" ]; then
+ eval "$CTDB_NFS_CALLOUT" "$@"
+ fi
+}
+
########################################################
# tickle handling
########################################################
diff --git a/ctdb/config/nfs-linux-kernel-callout b/ctdb/config/nfs-linux-kernel-callout
index 22151a6..3b457be 100755
--- a/ctdb/config/nfs-linux-kernel-callout
+++ b/ctdb/config/nfs-linux-kernel-callout
@@ -242,7 +242,7 @@ case "$1" in
register)
nfs_register
;;
- monitor-pre|releaseip|takeip)
+ monitor-pre|releaseip|takeip|releaseip-pre|takeip-pre)
# Not required/implemented
:
;;
diff --git a/ctdb/doc/examples/nfs-ganesha-callout b/ctdb/doc/examples/nfs-ganesha-callout
index 34794c1..3e12b36 100755
--- a/ctdb/doc/examples/nfs-ganesha-callout
+++ b/ctdb/doc/examples/nfs-ganesha-callout
@@ -335,7 +335,7 @@ case "$action" in
takeip) nfs_takeip "$@" ;;
monitor-list-shares) nfs_monitor_list_shares ;;
register) nfs_register ;;
- monitor-pre|monitor-post)
+ monitor-pre|monitor-post|releaseip-pre|takeip-pre)
# Not required/implemented
:
;;
diff --git a/ctdb/packaging/RPM/ctdb.spec.in b/ctdb/packaging/RPM/ctdb.spec.in
index 3bc9beb..b7c881e 100644
--- a/ctdb/packaging/RPM/ctdb.spec.in
+++ b/ctdb/packaging/RPM/ctdb.spec.in
@@ -171,6 +171,7 @@ rm -rf $RPM_BUILD_ROOT
%{_sysconfdir}/ctdb/events.d/00.ctdb
%{_sysconfdir}/ctdb/events.d/01.reclock
%{_sysconfdir}/ctdb/events.d/05.system
+%{_sysconfdir}/ctdb/events.d/06.nfs
%{_sysconfdir}/ctdb/events.d/10.interface
%{_sysconfdir}/ctdb/events.d/10.external
%{_sysconfdir}/ctdb/events.d/13.per_ip_routing
diff --git a/ctdb/server/ctdb_cluster_mutex.c b/ctdb/server/ctdb_cluster_mutex.c
index fa70a00..3448491 100644
--- a/ctdb/server/ctdb_cluster_mutex.c
+++ b/ctdb/server/ctdb_cluster_mutex.c
@@ -28,6 +28,7 @@
#include "lib/util/time.h"
#include "lib/util/strv.h"
#include "lib/util/strv_util.h"
+#include "lib/util/blocking.h"
#include "ctdb_private.h"
#include "common/common.h"
diff --git a/ctdb/server/ctdb_daemon.c b/ctdb/server/ctdb_daemon.c
index 321b86e..0f17b0f 100644
--- a/ctdb/server/ctdb_daemon.c
+++ b/ctdb/server/ctdb_daemon.c
@@ -33,6 +33,7 @@
#include "lib/util/dlinklist.h"
#include "lib/util/debug.h"
#include "lib/util/samba_util.h"
--
Samba Shared Repository
More information about the samba-cvs
mailing list