From: Roman Penyaev Date: Tue, 19 Mar 2019 10:55:52 +0000 (+0100) Subject: EventEpoll: refactor del_event() a bit X-Git-Tag: v15.0.0~181^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2292120ffd2730a20fd2750a605952982f031c83;p=ceph.git EventEpoll: refactor del_event() a bit 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 --- diff --git a/src/msg/async/EventEpoll.cc b/src/msg/async/EventEpoll.cc index 7cc179a65d06..e7b4ac44981d 100644 --- a/src/msg/async/EventEpoll.cc +++ b/src/msg/async/EventEpoll.cc @@ -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;