From: Roman Penyaev Date: Tue, 5 Mar 2019 12:22:59 +0000 (+0100) Subject: EventEpoll: set EPOLLET flag on del_event() X-Git-Tag: v15.0.0~181^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c415b9fed4fbecd2fb0709fa0c0c783102f60e01;p=ceph.git EventEpoll: set EPOLLET flag on del_event() When new fd is being added to epoll fd EPOLLET (edge triggered) flag is set, i.e. we assume that in and out works in edge triggered mode. But on del_event(), when eventually epoll_ctl(EPOLL_CTL_MOD) is invoked, EPOLLET flag is cleared, i.e. level triggered mode is enabled. Do not lose EPOLLET. Signed-off-by: Roman Penyaev --- diff --git a/src/msg/async/EventEpoll.cc b/src/msg/async/EventEpoll.cc index 37b469736247..7cc179a65d06 100644 --- a/src/msg/async/EventEpoll.cc +++ b/src/msg/async/EventEpoll.cc @@ -87,7 +87,7 @@ int EpollDriver::del_event(int fd, int cur_mask, int delmask) int mask = cur_mask & (~delmask); int r = 0; - ee.events = 0; + ee.events = EPOLLET; if (mask & EVENT_READABLE) ee.events |= EPOLLIN; if (mask & EVENT_WRITABLE) ee.events |= EPOLLOUT; ee.data.u64 = 0; /* avoid valgrind warning */