]> git-server-git.apps.pok.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)
committerRoman Penyaev <rpenyaev@suse.de>
Tue, 19 Mar 2019 11:00:08 +0000 (12:00 +0100)
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>
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 */