• Jens Axboe's avatar
    io_uring: remove looping around handling traditional task_work · 592b4805
    Jens Axboe authored
    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: 3a0c037b ("io_uring: batch task_work")
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    592b4805
io_uring.c 110 KB