From: Andrew Tridgell Date: Sat, 2 Jun 2007 00:01:17 +0000 (+1000) Subject: another place we need to cope with the strange epoll fork semantics X-Git-Tag: tevent-0.9.20~348^2~2603 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=69edd8e617f8042f643f789cd7528618c9c9c8ac;p=thirdparty%2Fsamba.git another place we need to cope with the strange epoll fork semantics (This used to be ctdb commit cb1eeec15e61a7eb401e9e65306642343d5deb6e) --- diff --git a/ctdb/lib/events/events_aio.c b/ctdb/lib/events/events_aio.c index afc806a2764..8cc100dede8 100644 --- a/ctdb/lib/events/events_aio.c +++ b/ctdb/lib/events/events_aio.c @@ -393,6 +393,8 @@ static int aio_event_fd_destructor(struct fd_event *fde) struct aio_event_context *aio_ev = talloc_get_type(ev->additional_data, struct aio_event_context); + epoll_check_reopen(aio_ev); + aio_ev->num_fd_events--; aio_ev->destruction_count++; diff --git a/ctdb/lib/events/events_epoll.c b/ctdb/lib/events/events_epoll.c index 9874377141d..717ea94064a 100644 --- a/ctdb/lib/events/events_epoll.c +++ b/ctdb/lib/events/events_epoll.c @@ -342,6 +342,8 @@ static int epoll_event_fd_destructor(struct fd_event *fde) struct epoll_event_context *epoll_ev = talloc_get_type(ev->additional_data, struct epoll_event_context); + epoll_check_reopen(epoll_ev); + epoll_ev->num_fd_events--; epoll_ev->destruction_count++; diff --git a/ctdb/lib/events/events_standard.c b/ctdb/lib/events/events_standard.c index fd4b88008b1..8761b12873b 100644 --- a/ctdb/lib/events/events_standard.c +++ b/ctdb/lib/events/events_standard.c @@ -379,6 +379,8 @@ static int std_event_fd_destructor(struct fd_event *fde) struct std_event_context *std_ev = talloc_get_type(ev->additional_data, struct std_event_context); + epoll_check_reopen(std_ev); + if (std_ev->maxfd == fde->fd) { std_ev->maxfd = EVENT_INVALID_MAXFD; }