lkml.org 
[lkml]   [2021]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 003/103] io_uring: limit {io|sq}poll submit locking scope
    Date
    From: Pavel Begunkov <asml.silence@gmail.com>

    commit 89448c47b8452b67c146dc6cad6f737e004c5caf upstream

    We don't need to take uring_lock for SQPOLL|IOPOLL to do
    io_cqring_overflow_flush() when cq_overflow_list is empty, remove it
    from the hot path.

    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/io_uring.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    diff --git a/fs/io_uring.c b/fs/io_uring.c
    index 3974b4f124b6a..5ba312ab99786 100644
    --- a/fs/io_uring.c
    +++ b/fs/io_uring.c
    @@ -9024,10 +9024,13 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
    */
    ret = 0;
    if (ctx->flags & IORING_SETUP_SQPOLL) {
    - io_ring_submit_lock(ctx, (ctx->flags & IORING_SETUP_IOPOLL));
    - if (!list_empty_careful(&ctx->cq_overflow_list))
    + if (!list_empty_careful(&ctx->cq_overflow_list)) {
    + bool needs_lock = ctx->flags & IORING_SETUP_IOPOLL;
    +
    + io_ring_submit_lock(ctx, needs_lock);
    io_cqring_overflow_flush(ctx, false, NULL, NULL);
    - io_ring_submit_unlock(ctx, (ctx->flags & IORING_SETUP_IOPOLL));
    + io_ring_submit_unlock(ctx, needs_lock);
    + }
    if (flags & IORING_ENTER_SQ_WAKEUP)
    wake_up(&ctx->sq_data->wait);
    if (flags & IORING_ENTER_SQ_WAIT)
    --
    2.27.0


    \
     
     \ /
      Last update: 2021-01-15 14:11    [W:8.741 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site