BACKPORT: io_uring: fix task_work cap overshooting
A previous commit fixed task_work overrunning by a lot more than what the user asked for, by adding a retry list. However, it didn't cap the overall count, hence for multiple task_work runs inside the same wait loop, it'd still overshoot the target by potentially a large amount. Cap it generally inside the wait path. Note that this will still overshoot the default limit of 20, but should overshoot by no more than limit-1 in addition to the limit. That still provides a ceiling over how much task_work will be run, rather than still having gaps where it was uncapped essentially. Bug: 297114355 (cherry picked from commit 49c5c63d) Fixes: f46b9cdb ("io_uring: limit local tw done") Signed-off-by:Jens Axboe <axboe@kernel.dk> Signed-off-by:
Akilesh Kailash <akailash@google.com> [akailash@: Fix merge conflict in io_run_local_work()] Change-Id: I3af238b295497942ac50ad68a64aa50a91227219
Loading
Please sign in to comment