On Tue, May 31, 2022 at 11:59 PM Olivier Langlois <olivier@xxxxxxxxxxxxxx> wrote: > > Again, the io_uring napi busy_poll integration is strongly inspired > from epoll implementation which caches a single napi_id. Note that since epoll is the worst possible implementation of a horribly bad idea, and one of the things I would really want people to kill off, that "it's designed based on epoll" is about the worst possible explanation fo anything at all. Epoll is the CVS of kernel interfaces: look at it, cry, run away, and try to avoid making that mistake ever again. I'm looking forward to the day when we can just delete all epoll code, but io_uring may be a making that even worse, in how it has then exposed epoll as an io_uring operation. That was probably a *HORRIBLE* mistake. (For the two prime issues with epoll: epoll recursion and the completely invalid expectations of what an "edge" in the edge triggering is. But there are other mistakes in there, with the lifetime of the epoll waitqueues having been nasty problems several times, because of how it doesn't follow any of the normal poll() rules, and made a mockery of any sane interfaces). Linus