]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
EventEpoll: set EPOLLET flag on del_event()
authorRoman Penyaev <rpenyaev@suse.de>
Tue, 5 Mar 2019 12:22:59 +0000 (13:22 +0100)
committerPrashant D <pdhange@redhat.com>
Thu, 28 Mar 2019 00:32:13 +0000 (20:32 -0400)
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 <rpenyaev@suse.de>
(cherry picked from commit c415b9fed4fbecd2fb0709fa0c0c783102f60e01)

src/msg/async/EventEpoll.cc

index 37b469736247fa8e900f42e007b7cd82dd4bc4c8..7cc179a65d06b1819b2270afc78fe9f089166e0f 100644 (file)
@@ -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 */