dm: fix mevent timing issue
If a file descriptor being monitored by epoll_wait is closed in another thread, the result is unspecified. So add all mevents removed in other threads to delete list. And drain the list in the dispatch mevent thread. Tracked-On: #6877 Signed-off-by: Yuanyuan Zhao <yuanyuan.zhao@linux.intel.com> Acked-by: Wang, Yu1 <yu1.wang@intel.com>
This commit is contained in:
parent
deec4b24ef
commit
1aa04a61d6
|
@ -341,7 +341,7 @@ mevent_delete_event(struct mevent *evp, int closefd)
|
||||||
evp->closefd = closefd;
|
evp->closefd = closefd;
|
||||||
|
|
||||||
epoll_ctl(epoll_fd, EPOLL_CTL_DEL, evp->me_fd, NULL);
|
epoll_ctl(epoll_fd, EPOLL_CTL_DEL, evp->me_fd, NULL);
|
||||||
if (!is_dispatch_thread() && evp->teardown != NULL) {
|
if (!is_dispatch_thread()) {
|
||||||
mevent_add_to_del_list(evp, closefd);
|
mevent_add_to_del_list(evp, closefd);
|
||||||
} else {
|
} else {
|
||||||
if (evp->closefd) {
|
if (evp->closefd) {
|
||||||
|
|
Loading…
Reference in New Issue