Currently when running local tw it will eagerly try and complete all available work. When there is a burst of work coming in, the list of work in work_llist may be much larger than the requested batch count wait_nr. Doing all of the work eagerly may cause latency issues for some applications that do not want to spend so much time in the kernel. Limit the amount of local tw done to the max of 20 (a heuristic) or wait_nr. This then does not require any userspace changes. Many applications will submit and wait with wait_nr = 1 to mean "wait for _at least_ 1 completion, but do more work if available". This used to mean "all work" but now that is capped to 20 requests. If users want more work batching, then they can set wait_nr to > 20. David Wei (2): io_uring: add io_local_work_pending() io_uring: limit local tw done include/linux/io_uring_types.h | 1 + io_uring/io_uring.c | 57 +++++++++++++++++++++++----------- io_uring/io_uring.h | 9 ++++-- 3 files changed, 47 insertions(+), 20 deletions(-) -- 2.43.5