change Christinas previous patch to only perform the check/logging
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Mon, 17 Jan 2011 01:00:18 +0000 (12:00 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Mon, 17 Jan 2011 01:00:18 +0000 (12:00 +1100)
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
lib/tevent/tevent_epoll.c
lib/tevent/tevent_select.c
lib/tevent/tevent_standard.c

index 88ae01c40ae4bca5b3dba7ad280f2a649c27145f..5eec5ccf560ed89a8b4b40cfb4ac56293e455d77 100644 (file)
@@ -582,8 +582,6 @@ done:
 }
 
 
-extern pid_t ctdbd_pid;
-
 /*
   return on failure or (with 0) if all fd events are removed
 */
index e443f9fa6c20fa1e45fb32b22d846b2150c219a7..1c3396eb6b6d1b293efe40de25d536914b0cb7bb 100644 (file)
@@ -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)) {
index f25ce05a25b4bd85b6c55106412c9d0ceec5f584..1671198a20ae1434b5dfe0a3e4b4246eed3bff6b 100644 (file)
@@ -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) {
index abebbd8d38f6eeb48a77ed6f652b567ce94f5520..05d734a627cb151dc9d1099d55676b5e3c12d04a 100644 (file)
@@ -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)) {