From bc395f82117cd8234ea3d0abfb36a83087808129 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Mon, 17 Jan 2011 12:00:18 +1100 Subject: [PATCH 1/1] change Christinas previous patch to only perform the check/logging if we are the main ctdb daemon. Other daemons/child processes are not guaranteed to get events on regular basis so those should not be checked. --- lib/tevent/tevent.c | 2 -- lib/tevent/tevent_epoll.c | 6 ++++-- lib/tevent/tevent_select.c | 6 ++++-- lib/tevent/tevent_standard.c | 6 ++++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c index 88ae01c4..5eec5ccf 100644 --- a/lib/tevent/tevent.c +++ b/lib/tevent/tevent.c @@ -582,8 +582,6 @@ done: } -extern pid_t ctdbd_pid; - /* return on failure or (with 0) if all fd events are removed */ diff --git a/lib/tevent/tevent_epoll.c b/lib/tevent/tevent_epoll.c index e443f9fa..1c3396eb 100644 --- a/lib/tevent/tevent_epoll.c +++ b/lib/tevent/tevent_epoll.c @@ -228,6 +228,8 @@ static void epoll_change_event(struct epoll_event_context *epoll_ev, struct teve } } +extern pid_t ctdbd_pid; + /* event loop handling using epoll */ @@ -250,9 +252,9 @@ static int epoll_event_loop(struct epoll_event_context *epoll_ev, struct timeval return 0; } - tevent_before_wait(epoll_ev->ev); + if (getpid() == ctdbd_pid) tevent_before_wait(epoll_ev->ev); ret = epoll_wait(epoll_ev->epoll_fd, events, MAXEVENTS, timeout); - tevent_after_wait(epoll_ev->ev); + if (getpid() == ctdbd_pid) tevent_after_wait(epoll_ev->ev); if (ret == -1 && errno == EINTR && epoll_ev->ev->signal_events) { if (tevent_common_check_signal(epoll_ev->ev)) { diff --git a/lib/tevent/tevent_select.c b/lib/tevent/tevent_select.c index f25ce05a..1671198a 100644 --- a/lib/tevent/tevent_select.c +++ b/lib/tevent/tevent_select.c @@ -125,6 +125,8 @@ static struct tevent_fd *select_event_add_fd(struct tevent_context *ev, TALLOC_C return fde; } +extern pid_t ctdbd_pid; + /* event loop handling using select() */ @@ -157,9 +159,9 @@ static int select_event_loop_select(struct select_event_context *select_ev, stru return 0; } - tevent_before_wait(select_ev->ev); + if (getpid() == ctdbd_pid) tevent_before_wait(select_ev->ev); selrtn = select(select_ev->maxfd+1, &r_fds, &w_fds, NULL, tvalp); - tevent_after_wait(select_ev->ev); + if (getpid() == ctdbd_pid) tevent_after_wait(select_ev->ev); if (selrtn == -1 && errno == EINTR && select_ev->ev->signal_events) { diff --git a/lib/tevent/tevent_standard.c b/lib/tevent/tevent_standard.c index abebbd8d..05d734a6 100644 --- a/lib/tevent/tevent_standard.c +++ b/lib/tevent/tevent_standard.c @@ -239,6 +239,8 @@ static void epoll_change_event(struct std_event_context *std_ev, struct tevent_f } } +extern pid_t ctdbd_pid; + /* event loop handling using epoll */ @@ -261,9 +263,9 @@ static int epoll_event_loop(struct std_event_context *std_ev, struct timeval *tv return 0; } - tevent_before_wait(std_ev->ev); + if (getpid() == ctdbd_pid) tevent_before_wait(std_ev->ev); ret = epoll_wait(std_ev->epoll_fd, events, MAXEVENTS, timeout); - tevent_after_wait(std_ev->ev); + if (getpid() == ctdbd_pid) tevent_after_wait(std_ev->ev); if (ret == -1 && errno == EINTR && std_ev->ev->signal_events) { if (tevent_common_check_signal(std_ev->ev)) { -- 2.34.1