• P
    io_uring: don't delay iopoll'ed req completion · 3aadc23e
    Pavel Begunkov 提交于
    ->iopoll() may have completed current request, but instead of reaping
    it, io_do_iopoll() just continues with the next request in the list.
    As a result it can leave just polled and completed request in the list
    up until next syscall. Even outer loop in io_iopoll_getevents() doesn't
    help the situation.
    
    E.g. poll_list: req0 -> req1
    If req0->iopoll() completed both requests, and @min<=1,
    then @req0 will be left behind.
    
    Check whether a req was completed after ->iopoll().
    Signed-off-by: NPavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    3aadc23e
io_uring.c 201.9 KB