diff options
author | Jens Axboe <axboe@kernel.dk> | 2024-01-30 17:00:47 +0300 |
---|---|---|
committer | Sasha Levin <sashal@kernel.org> | 2024-03-27 01:16:26 +0300 |
commit | 7d430002358dcbba5a32ed7d283ca7e8f64ccdfc (patch) | |
tree | b32d4dd8707af9b789712bd5af04b21a514db047 /io_uring/sqpoll.h | |
parent | 038cc4a5089b89fec04cb46ba3598dc5db17f6d2 (diff) | |
download | linux-7d430002358dcbba5a32ed7d283ca7e8f64ccdfc.tar.xz |
io_uring: remove looping around handling traditional task_work
[ Upstream commit 592b4805432af075468876771c0f7d41273ccb3c ]
A previous commit added looping around handling traditional task_work
as an optimization, and while that may seem like a good idea, it's also
possible to run into application starvation doing so. If the task_work
generation is bursty, we can get very deep task_work queues, and we can
end up looping in here for a very long time.
One immediately observable problem with that is handling network traffic
using provided buffers, where flooding incoming traffic and looping
task_work handling will very quickly lead to buffer starvation as we
keep running task_work rather than returning to the application so it
can handle the associated CQEs and also provide buffers back.
Fixes: 3a0c037b0e16 ("io_uring: batch task_work")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'io_uring/sqpoll.h')
0 files changed, 0 insertions, 0 deletions