HomeClusterLabs Projects
Diffusion LibQB 2a06ffecde04

epoll: don't miss poll events under high load

Description

epoll: don't miss poll events under high load

If multiple epoll sources generate events simultaneously, it is possible
for more jobs to be added to particular priority level than will be
handled in one go by qb_loop_run_level(). If one of these epoll sources
gains a new event (say, by switching from "readable" to "readable and
writeable"), then this new event would be missed.

To fix this, merge new epoll events into revents regardless of whether
the job is on the joblist. When the job is dispatched, revents will be
cleared, or the epoll source will be deleted entirely.

Details

Provenance
Michael Chapman <mike@very.puzzling.org>Authored on Jun 5 2014, 1:17 AM
Parents
rQf8b4a1bd913e: Merge pull request #118 from davidvossel/master
Branches
Unknown
Tags
Unknown

Event Timeline