io_uring: hide eventfd assumptions in eventfd paths
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 20 Jun 2022 00:25:55 +0000 (01:25 +0100)
committerJens Axboe <axboe@kernel.dk>
Thu, 21 Jul 2022 14:44:29 +0000 (08:44 -0600)
commit93996d971371443fe2d69b3ce84fe10b5e9052bd
tree7bcfe95c8f17e7b304d865a31bc8548c64d5abf6
parent61beb1f58edbd794056bad58dc46a224948c9933
io_uring: hide eventfd assumptions in eventfd paths

Some io_uring-eventfd users assume that there won't be spurious wakeups.
That assumption has to be honoured by all io_cqring_ev_posted() callers,
which is inconvenient and from time to time leads to problems but should
be maintained to not break the userspace.

Instead of making the callers track whether a CQE was posted or not, hide
it inside io_eventfd_signal(). It saves ->cached_cq_tail it saw last time
and triggers the eventfd only when ->cached_cq_tail changed since then.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/0ffc66bae37a2513080b601e4370e147faaa72c5.1655684496.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/io_uring_types.h
io_uring/io_uring.c
io_uring/timeout.c