[SCM] Samba Shared Repository - branch master updated
Martin Schwenke
martins at samba.org
Wed Jan 15 20:06:03 MST 2014
The branch, master has been updated
via a92fd11 ctdb-daemon: Remove ctdb_fork_with_logging()
via dd98b9d ctdb-tests: Set CTDB_EVENT_HELPER when running with local daemons
via 97575e1 ctdb-daemon: Remove unused code to run eventscripts
via 18c1f43 ctdb-daemon: Replace ctdb_fork_with_logging with ctdb_vfork_with_logging (part 2)
via d86662a ctdb-daemon: Replace ctdb_fork_with_logging with ctdb_vfork_with_logging (part 1)
via 69324b6 ctdb-daemon: Add helper process to execute event scripts
via 2879404 ctdb-daemon: Add ctdb_vfork_with_logging()
via 7aa20cc ctdb-daemon: No need to call event scripts with CTDB_CALLED_BY_USER
via bafa467 ctdb-daemon: Deprecate RELOAD and STATUS events
via b8c6bcc ctdb-common: mkdir_p should not try to create .
from 276c161 vfs/glusterfs: in case atime is not passed, set it to the current atime
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit a92fd11ad1ccc904a999a254d249bbdc74f08f84
Author: Amitay Isaacs <amitay at gmail.com>
Date: Wed Dec 18 14:09:52 2013 +1100
ctdb-daemon: Remove ctdb_fork_with_logging()
This function has been replaced with ctdb_vfork_with_logging().
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
Autobuild-User(master): Martin Schwenke <martins at samba.org>
Autobuild-Date(master): Thu Jan 16 04:05:35 CET 2014 on sn-devel-104
commit dd98b9df6651054dabefdf439735042a78cfea2e
Author: Amitay Isaacs <amitay at gmail.com>
Date: Mon Jan 13 15:16:46 2014 +1100
ctdb-tests: Set CTDB_EVENT_HELPER when running with local daemons
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 97575e1ba0b7fecef2b26f2da1c0d8cb769a37a8
Author: Amitay Isaacs <amitay at gmail.com>
Date: Tue Dec 17 19:22:20 2013 +1100
ctdb-daemon: Remove unused code to run eventscripts
Eventscripts are now executed using a helper.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 18c1f432102f1a5093927be9276d001180539e50
Author: Amitay Isaacs <amitay at gmail.com>
Date: Wed Dec 18 14:07:57 2013 +1100
ctdb-daemon: Replace ctdb_fork_with_logging with ctdb_vfork_with_logging (part 2)
Use ctdb_event_helper to run debug-hung-script.sh.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit d86662a925a072eb0374ad7743f4cf95c447bebb
Author: Amitay Isaacs <amitay at gmail.com>
Date: Tue Dec 17 19:19:51 2013 +1100
ctdb-daemon: Replace ctdb_fork_with_logging with ctdb_vfork_with_logging (part 1)
Use ctdb_event_helper to run eventscripts.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 69324b61f0669022c7204ee08a4c7104865d4e9b
Author: Amitay Isaacs <amitay at gmail.com>
Date: Mon Dec 16 15:40:01 2013 +1100
ctdb-daemon: Add helper process to execute event scripts
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 2879404388ed04af199a7e4451605b4435e8cc23
Author: Amitay Isaacs <amitay at gmail.com>
Date: Mon Dec 16 15:39:29 2013 +1100
ctdb-daemon: Add ctdb_vfork_with_logging()
This will be used to spawn lightweight helper processes to run
eventscripts.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 7aa20ccb5c747707fca349e9e0847cd0fca8c839
Author: Amitay Isaacs <amitay at gmail.com>
Date: Mon Dec 16 15:57:42 2013 +1100
ctdb-daemon: No need to call event scripts with CTDB_CALLED_BY_USER
This was added to support external monitoring using CTDB event scripts.
However, it was never used.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit bafa467021b7b2f17c61904b9f70f695a4395921
Author: Amitay Isaacs <amitay at gmail.com>
Date: Mon Dec 23 11:46:48 2013 +1100
ctdb-daemon: Deprecate RELOAD and STATUS events
These events have never been used.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit b8c6bcc365ce08ddc0ebf51c002d53c08f144981
Author: Amitay Isaacs <amitay at gmail.com>
Date: Tue Dec 17 19:48:29 2013 +1100
ctdb-common: mkdir_p should not try to create .
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
-----------------------------------------------------------------------
Summary of changes:
ctdb/Makefile.in | 7 +-
ctdb/common/system_common.c | 4 +
ctdb/include/ctdb_private.h | 17 +-
ctdb/include/ctdb_protocol.h | 4 +-
ctdb/packaging/RPM/ctdb.spec.in | 1 +
ctdb/server/ctdb_daemon.c | 1 -
ctdb/server/ctdb_event_helper.c | 136 +++++++++++++
ctdb/server/ctdb_logging.c | 62 ++++--
ctdb/server/ctdb_monitor.c | 4 +-
ctdb/server/ctdb_recover.c | 3 +-
ctdb/server/ctdb_takeover.c | 6 +-
ctdb/server/eventscript.c | 266 ++++++++++----------------
ctdb/tests/simple/scripts/local_daemons.bash | 1 +
13 files changed, 308 insertions(+), 204 deletions(-)
create mode 100644 ctdb/server/ctdb_event_helper.c
Changeset truncated at 500 lines:
diff --git a/ctdb/Makefile.in b/ctdb/Makefile.in
index 92bd56f..94904bd 100755
--- a/ctdb/Makefile.in
+++ b/ctdb/Makefile.in
@@ -120,7 +120,7 @@ TEST_BINS=tests/bin/ctdb_bench tests/bin/ctdb_fetch tests/bin/ctdb_fetch_one \
@INFINIBAND_BINS@
BINS = bin/ctdb @CTDB_SCSI_IO@ bin/smnotify bin/ping_pong bin/ltdbtool \
- bin/ctdb_lock_helper @CTDB_PMDA@
+ bin/ctdb_lock_helper bin/ctdb_event_helper @CTDB_PMDA@
SBINS = bin/ctdbd
@@ -178,6 +178,10 @@ bin/ctdb_lock_helper: server/ctdb_lock_helper.o lib/util/util_file.o $(CTDB_EXTE
@echo Linking $@
$(WRAPPER) $(CC) $(CFLAGS) -o $@ server/ctdb_lock_helper.o lib/util/util_file.o $(CTDB_EXTERNAL_OBJ) $(TDB_LIBS) $(LIB_FLAGS)
+bin/ctdb_event_helper: server/ctdb_event_helper.o $(SOCKET_WRAPPER_OBJ)
+ @echo Linking $@
+ $(WRAPPER) $(CC) $(CFLAGS) -o $@ server/ctdb_event_helper.o $(SOCKET_WRAPPER_OBJ) $(LIB_FLAGS)
+
bin/smnotify: utils/smnotify/gen_xdr.o utils/smnotify/gen_smnotify.o utils/smnotify/smnotify.o $(POPT_OBJ)
@echo Linking $@
$(WRAPPER) $(CC) $(CFLAGS) -o $@ utils/smnotify/smnotify.o utils/smnotify/gen_xdr.o utils/smnotify/gen_smnotify.o $(POPT_OBJ) $(LIB_FLAGS)
@@ -332,6 +336,7 @@ install: all manpages $(PMDA_INSTALL)
$(INSTALLCMD) -m 755 bin/ping_pong $(DESTDIR)$(bindir)
$(INSTALLCMD) -m 755 bin/ltdbtool $(DESTDIR)$(bindir)
$(INSTALLCMD) -m 755 bin/ctdb_lock_helper $(DESTDIR)$(bindir)
+ $(INSTALLCMD) -m 755 bin/ctdb_event_helper $(DESTDIR)$(bindir)
${INSTALLCMD} -m 644 include/ctdb.h $(DESTDIR)$(includedir)
${INSTALLCMD} -m 644 include/ctdb_client.h $(DESTDIR)$(includedir)
${INSTALLCMD} -m 644 include/ctdb_protocol.h $(DESTDIR)$(includedir)
diff --git a/ctdb/common/system_common.c b/ctdb/common/system_common.c
index 7563ff3..cc22f69 100644
--- a/ctdb/common/system_common.c
+++ b/ctdb/common/system_common.c
@@ -169,6 +169,10 @@ int mkdir_p(const char *dir, int mode)
return 0;
}
+ if (strcmp(dir, ".") == 0) {
+ return 0;
+ }
+
t = talloc_strdup(NULL, dir);
if (t == NULL) {
return ENOMEM;
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h
index 71c9f13..5c18d87 100644
--- a/ctdb/include/ctdb_private.h
+++ b/ctdb/include/ctdb_private.h
@@ -1245,9 +1245,8 @@ int ctdb_event_script_callback(struct ctdb_context *ctdb,
TALLOC_CTX *mem_ctx,
void (*callback)(struct ctdb_context *, int, void *),
void *private_data,
- bool from_user,
enum ctdb_eventscript_call call,
- const char *fmt, ...) PRINTF_ATTRIBUTE(7,8);
+ const char *fmt, ...) PRINTF_ATTRIBUTE(6,7);
void ctdb_release_all_ips(struct ctdb_context *ctdb);
void set_nonblocking(int fd);
@@ -1457,11 +1456,15 @@ int32_t ctdb_control_get_log(struct ctdb_context *ctdb, TDB_DATA addr);
int32_t ctdb_control_clear_log(struct ctdb_context *ctdb);
void ctdb_log_ringbuffer_free(void);
-struct ctdb_log_state *ctdb_fork_with_logging(TALLOC_CTX *mem_ctx,
- struct ctdb_context *ctdb,
- const char *log_prefix,
- void (*logfn)(const char *, uint16_t, void *),
- void *logfn_private, pid_t *pid);
+struct ctdb_log_state *ctdb_vfork_with_logging(TALLOC_CTX *mem_ctx,
+ struct ctdb_context *ctdb,
+ const char *log_prefix,
+ const char *helper,
+ int helper_argc,
+ const char **helper_argv,
+ void (*logfn)(const char *, uint16_t, void *),
+ void *logfn_private, pid_t *pid);
+
int32_t ctdb_control_process_exists(struct ctdb_context *ctdb, pid_t pid);
struct ctdb_client *ctdb_find_client_by_pid(struct ctdb_context *ctdb, pid_t pid);
diff --git a/ctdb/include/ctdb_protocol.h b/ctdb/include/ctdb_protocol.h
index 15c87be..fa03a4b 100644
--- a/ctdb/include/ctdb_protocol.h
+++ b/ctdb/include/ctdb_protocol.h
@@ -240,9 +240,9 @@ enum ctdb_eventscript_call {
CTDB_EVENT_RELEASE_IP, /* IP released: interface, IP address, netmask bits. */
CTDB_EVENT_STOPPED, /* Deprecated, do not use. */
CTDB_EVENT_MONITOR, /* Please check if service is healthy: no args. */
- CTDB_EVENT_STATUS, /* Report service status: no args. */
+ CTDB_EVENT_STATUS, /* Deprecated, do not use. */
CTDB_EVENT_SHUTDOWN, /* CTDB shutting down: no args. */
- CTDB_EVENT_RELOAD, /* magic */
+ CTDB_EVENT_RELOAD, /* Deprecated, do not use */
CTDB_EVENT_UPDATE_IP, /* IP updating: old interface, new interface, IP address, netmask bits. */
CTDB_EVENT_IPREALLOCATED, /* when a takeover_run() completes */
CTDB_EVENT_MAX
diff --git a/ctdb/packaging/RPM/ctdb.spec.in b/ctdb/packaging/RPM/ctdb.spec.in
index e3a3486..b2520c3 100644
--- a/ctdb/packaging/RPM/ctdb.spec.in
+++ b/ctdb/packaging/RPM/ctdb.spec.in
@@ -192,6 +192,7 @@ rm -rf $RPM_BUILD_ROOT
%{_sbindir}/ctdbd_wrapper
%{_bindir}/ctdb
%{_bindir}/ctdb_lock_helper
+%{_bindir}/ctdb_event_helper
%{_bindir}/smnotify
%{_bindir}/ping_pong
%{_bindir}/ltdbtool
diff --git a/ctdb/server/ctdb_daemon.c b/ctdb/server/ctdb_daemon.c
index 50b2de3..aa0cedb 100644
--- a/ctdb/server/ctdb_daemon.c
+++ b/ctdb/server/ctdb_daemon.c
@@ -1312,7 +1312,6 @@ int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork, bool use_syslog)
ctdb,
ctdb_setup_event_callback,
ctdb,
- false,
CTDB_EVENT_SETUP,
"%s",
"");
diff --git a/ctdb/server/ctdb_event_helper.c b/ctdb/server/ctdb_event_helper.c
new file mode 100644
index 0000000..4c62e41
--- /dev/null
+++ b/ctdb/server/ctdb_event_helper.c
@@ -0,0 +1,136 @@
+/*
+ ctdb event script helper
+
+ Copyright (C) Amitay Isaacs 2013
+
+ 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/>.
+*/
+
+#include "includes.h"
+#include "system/filesys.h"
+
+static char *progname = NULL;
+
+
+/* CTDB sends SIGTERM, when process must die */
+static void sigterm(int sig)
+{
+ pid_t pid;
+
+ /* all the child processes are running in the same process group */
+ pid = getpgrp();
+ if (pid == -1) {
+ kill(-getpid(), SIGKILL);
+ } else {
+ kill(-pid, SIGKILL);
+ }
+ _exit(0);
+}
+
+static void set_close_on_exec(int fd)
+{
+ int v;
+
+ v = fcntl(fd, F_GETFD, 0);
+ if (v == -1) {
+ return;
+ }
+ fcntl(fd, F_SETFD, v | FD_CLOEXEC);
+}
+
+static int check_executable(const char *path)
+{
+ struct stat st;
+
+ if (stat(path, &st) != 0) {
+ fprintf(stderr, "Failed to access '%s' - %s\n",
+ path, strerror(errno));
+ return errno;
+ }
+
+ if (!(st.st_mode & S_IXUSR)) {
+ return ENOEXEC;
+ }
+
+ return 0;
+}
+
+static void usage(void)
+{
+ fprintf(stderr, "\n");
+ fprintf(stderr, "Usage: %s <log-fd> <output-fd> <script_path> <event> [<args>]\n",
+ progname);
+}
+
+int main(int argc, char *argv[])
+{
+ int log_fd, write_fd;
+ pid_t pid;
+ int status, output;
+
+ progname = argv[0];
+
+ if (argc < 5) {
+ usage();
+ exit(1);
+ }
+
+ log_fd = atoi(argv[1]);
+ write_fd = atoi(argv[2]);
+
+ set_close_on_exec(write_fd);
+
+ close(STDOUT_FILENO);
+ close(STDERR_FILENO);
+ dup2(log_fd, STDOUT_FILENO);
+ dup2(log_fd, STDERR_FILENO);
+ close(log_fd);
+
+ if (setpgid(0, 0) != 0) {
+ fprintf(stderr, "Failed to create process group for event script - %s\n",
+ strerror(errno));
+ exit(1);
+ }
+
+ signal(SIGTERM, sigterm);
+
+ pid = fork();
+ if (pid < 0) {
+ fprintf(stderr, "Failed to fork - %s\n", strerror(errno));
+ exit(errno);
+ }
+
+ if (pid == 0) {
+ int save_errno;
+
+ execv(argv[3], &argv[3]);
+ if (errno == EACCES) {
+ save_errno = check_executable(argv[3]);
+ } else {
+ save_errno = errno;
+ fprintf(stderr, "Error executing '%s' - %s\n",
+ argv[3], strerror(errno));
+ }
+ _exit(save_errno);
+ }
+
+ waitpid(pid, &status, 0);
+ if (WIFEXITED(status)) {
+ output = -WEXITSTATUS(status);
+ write(write_fd, &output, sizeof(output));
+ exit(output);
+ }
+
+ exit(1);
+}
diff --git a/ctdb/server/ctdb_logging.c b/ctdb/server/ctdb_logging.c
index 17c5c35..d334191 100644
--- a/ctdb/server/ctdb_logging.c
+++ b/ctdb/server/ctdb_logging.c
@@ -469,56 +469,73 @@ static int log_context_destructor(struct ctdb_log_state *log)
}
/*
- fork(), redirecting child output to logging and specified callback.
-*/
-struct ctdb_log_state *ctdb_fork_with_logging(TALLOC_CTX *mem_ctx,
- struct ctdb_context *ctdb,
- const char *log_prefix,
- void (*logfn)(const char *, uint16_t, void *),
- void *logfn_private, pid_t *pid)
+ * vfork + exec, redirecting child output to logging and specified callback.
+ */
+struct ctdb_log_state *ctdb_vfork_with_logging(TALLOC_CTX *mem_ctx,
+ struct ctdb_context *ctdb,
+ const char *log_prefix,
+ const char *helper,
+ int helper_argc,
+ const char **helper_argv,
+ void (*logfn)(const char *, uint16_t, void *),
+ void *logfn_private, pid_t *pid)
{
int p[2];
struct ctdb_log_state *log;
struct tevent_fd *fde;
+ char **argv;
+ int i;
log = talloc_zero(mem_ctx, struct ctdb_log_state);
CTDB_NO_MEMORY_NULL(ctdb, log);
+
log->ctdb = ctdb;
log->prefix = log_prefix;
log->logfn = logfn;
- log->logfn_private = (void *)logfn_private;
+ log->logfn_private = logfn_private;
if (pipe(p) != 0) {
- DEBUG(DEBUG_ERR,(__location__ " Failed to setup for child logging pipe\n"));
+ DEBUG(DEBUG_ERR, (__location__ " Failed to setup pipe for child logging\n"));
+ goto free_log;
+ }
+
+ argv = talloc_array(mem_ctx, char *, helper_argc + 2);
+ if (argv == NULL) {
+ DEBUG(DEBUG_ERR, (__location__ "Failed to allocate memory for helper\n"));
+ goto free_log;
+ }
+ argv[0] = discard_const(helper);
+ argv[1] = talloc_asprintf(argv, "%d", p[1]);
+ if (argv[1] == NULL) {
+ DEBUG(DEBUG_ERR, (__location__ "Failed to allocate memory for helper\n"));
+ talloc_free(argv);
goto free_log;
}
- *pid = ctdb_fork(ctdb);
+ for (i=0; i<helper_argc; i++) {
+ argv[i+2] = discard_const(helper_argv[i]);
+ }
- /* Child? */
+ *pid = vfork();
if (*pid == 0) {
- close(STDOUT_FILENO);
- close(STDERR_FILENO);
- dup2(p[1], STDOUT_FILENO);
- dup2(p[1], STDERR_FILENO);
- close(p[0]);
- close(p[1]);
- return log;
+ execv(helper, argv);
+ _exit(1);
}
close(p[1]);
- /* We failed? */
if (*pid < 0) {
- DEBUG(DEBUG_ERR, (__location__ " fork failed for child process\n"));
+ DEBUG(DEBUG_ERR, (__location__ "vfork failed for helper process\n"));
close(p[0]);
goto free_log;
}
+ ctdb_track_child(ctdb, *pid);
+
log->pfd = p[0];
set_close_on_exec(log->pfd);
talloc_set_destructor(log, log_context_destructor);
- fde = event_add_fd(ctdb->ev, log, log->pfd,
- EVENT_FD_READ, ctdb_log_handler, log);
+ fde = tevent_add_fd(ctdb->ev, log, log->pfd, EVENT_FD_READ,
+ ctdb_log_handler, log);
tevent_fd_set_auto_close(fde);
return log;
@@ -528,6 +545,7 @@ free_log:
return NULL;
}
+
/*
setup for logging of child process stdout
*/
diff --git a/ctdb/server/ctdb_monitor.c b/ctdb/server/ctdb_monitor.c
index acd68c8..2b52fd0 100644
--- a/ctdb/server/ctdb_monitor.c
+++ b/ctdb/server/ctdb_monitor.c
@@ -337,7 +337,7 @@ static void ctdb_check_health(struct event_context *ev, struct timed_event *te,
DEBUG(DEBUG_NOTICE,("Recoveries finished. Running the \"startup\" event.\n"));
ret = ctdb_event_script_callback(ctdb,
ctdb->monitor->monitor_context, ctdb_startup_callback,
- ctdb, false,
+ ctdb,
CTDB_EVENT_STARTUP, "%s", "");
} else {
int i;
@@ -362,7 +362,7 @@ static void ctdb_check_health(struct event_context *ev, struct timed_event *te,
} else {
ret = ctdb_event_script_callback(ctdb,
ctdb->monitor->monitor_context, ctdb_health_callback,
- ctdb, false,
+ ctdb,
CTDB_EVENT_MONITOR, "%s", "");
}
}
diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c
index 414f5b1..7249f50 100644
--- a/ctdb/server/ctdb_recover.c
+++ b/ctdb/server/ctdb_recover.c
@@ -944,7 +944,6 @@ int32_t ctdb_control_end_recovery(struct ctdb_context *ctdb,
ret = ctdb_event_script_callback(ctdb, state,
ctdb_end_recovery_callback,
state,
- false,
CTDB_EVENT_RECOVERED, "%s", "");
if (ret != 0) {
@@ -998,7 +997,7 @@ int32_t ctdb_control_start_recovery(struct ctdb_context *ctdb,
ret = ctdb_event_script_callback(ctdb, state,
ctdb_start_recovery_callback,
- state, false,
+ state,
CTDB_EVENT_START_RECOVERY,
"%s", "");
diff --git a/ctdb/server/ctdb_takeover.c b/ctdb/server/ctdb_takeover.c
index 04cdd66..0d859f9 100644
--- a/ctdb/server/ctdb_takeover.c
+++ b/ctdb/server/ctdb_takeover.c
@@ -510,7 +510,6 @@ static int32_t ctdb_do_takeip(struct ctdb_context *ctdb,
state,
ctdb_do_takeip_callback,
state,
- false,
CTDB_EVENT_TAKE_IP,
"%s %s %u",
ctdb_vnn_iface_string(vnn),
@@ -651,7 +650,6 @@ static int32_t ctdb_do_updateip(struct ctdb_context *ctdb,
state,
ctdb_do_updateip_callback,
state,
- false,
CTDB_EVENT_UPDATE_IP,
"%s %s %s %u",
state->old->name,
@@ -1024,7 +1022,6 @@ int32_t ctdb_control_release_ip(struct ctdb_context *ctdb,
ret = ctdb_event_script_callback(ctdb,
state, release_ip_callback, state,
- false,
CTDB_EVENT_RELEASE_IP,
"%s %s %u",
iface,
@@ -4192,7 +4189,6 @@ int32_t ctdb_control_del_public_address(struct ctdb_context *ctdb, TDB_DATA inda
ret = ctdb_event_script_callback(ctdb,
mem_ctx, delete_ip_callback, mem_ctx,
- false,
CTDB_EVENT_RELEASE_IP,
"%s %s %u",
ctdb_vnn_iface_string(vnn),
@@ -4250,7 +4246,7 @@ int32_t ctdb_control_ipreallocated(struct ctdb_context *ctdb,
ret = ctdb_event_script_callback(ctdb, state,
ctdb_ipreallocated_callback, state,
- false, CTDB_EVENT_IPREALLOCATED,
+ CTDB_EVENT_IPREALLOCATED,
"%s", "");
if (ret != 0) {
diff --git a/ctdb/server/eventscript.c b/ctdb/server/eventscript.c
index d13e944..0feb32b 100644
--- a/ctdb/server/eventscript.c
+++ b/ctdb/server/eventscript.c
@@ -29,23 +29,6 @@
static void ctdb_event_script_timeout(struct event_context *ev, struct timed_event *te, struct timeval t, void *p);
-/*
- ctdbd sends us a SIGTERM when we should die.
- */
-static void sigterm(int sig)
-{
- pid_t pid;
-
- /* all the child processes will be running in the same process group */
- pid = getpgrp();
- if (pid == -1) {
- kill(-getpid(), SIGKILL);
- } else {
- kill(-pid, SIGKILL);
- }
- _exit(1);
-}
-
/* This is attached to the event script state. */
struct event_script_callback {
struct event_script_callback *next, *prev;
@@ -62,7 +45,6 @@ struct ctdb_event_script_state {
struct event_script_callback *callback;
pid_t child;
int fd[2];
- bool from_user;
enum ctdb_eventscript_call call;
const char *options;
struct timeval timeout;
@@ -267,122 +249,92 @@ static struct ctdb_scripts_wire *ctdb_get_script_list(struct ctdb_context *ctdb,
return scripts;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list