]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
EventEpoll: refactor del_event() a bit 27226/head
authorRoman Penyaev <rpenyaev@suse.de>
Tue, 19 Mar 2019 10:55:52 +0000 (11:55 +0100)
committerPrashant D <pdhange@redhat.com>
Thu, 28 Mar 2019 00:32:13 +0000 (20:32 -0400)
The main purpose of the patch is to set 'ee' members only on EPOLL_CTL_MOD
path, deletion path does not requie any of the members set.

This will make code a bit better.

Signed-off-by: Roman Penyaev <rpenyaev@suse.de>
(cherry picked from commit 2292120ffd2730a20fd2750a605952982f031c83)

src/msg/async/EventEpoll.cc

index 7cc179a65d06b1819b2270afc78fe9f089166e0f..e7b4ac44981db8bda25270edfe60b5bccc06fd1b 100644 (file)
@@ -83,16 +83,18 @@ int EpollDriver::del_event(int fd, int cur_mask, int delmask)
 {
   ldout(cct, 20) << __func__ << " del event fd=" << fd << " cur_mask=" << cur_mask
                  << " delmask=" << delmask << " to " << epfd << dendl;
-  struct epoll_event ee;
+  struct epoll_event ee = {0};
   int mask = cur_mask & (~delmask);
   int r = 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 */
-  ee.data.fd = fd;
   if (mask != EVENT_NONE) {
+    ee.events = EPOLLET;
+    ee.data.fd = fd;
+    if (mask & EVENT_READABLE)
+      ee.events |= EPOLLIN;
+    if (mask & EVENT_WRITABLE)
+      ee.events |= EPOLLOUT;
+
     if ((r = epoll_ctl(epfd, EPOLL_CTL_MOD, fd, &ee)) < 0) {
       lderr(cct) << __func__ << " epoll_ctl: modify fd=" << fd << " mask=" << mask
                  << " failed." << cpp_strerror(errno) << dendl;