diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2020-07-07 16:36:20 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-07-07 12:00:03 -0600 |
commit | 9dedd56301564acdbb1dd37cf09250a4c7b783c9 (patch) | |
tree | bb9b60d2e7b383c765074977d7b17df657f5bb2d /fs/io_uring.c | |
parent | 3fcee5a6d5414df8ff4ee22f2477bde76d34527c (diff) | |
download | linux-9dedd56301564acdbb1dd37cf09250a4c7b783c9.tar.gz linux-9dedd56301564acdbb1dd37cf09250a4c7b783c9.tar.bz2 linux-9dedd56301564acdbb1dd37cf09250a4c7b783c9.zip |
io_uring: partially inline io_iopoll_getevents()
io_iopoll_reap_events() doesn't care about returned valued of
io_iopoll_getevents() and does the same checks for list emptiness
and need_resched(). Just use io_do_iopoll().
io_sq_thread() doesn't check return value as well. It also passes min=0,
so there never be the second iteration inside io_poll_getevents().
Inline it there too.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/io_uring.c')
-rw-r--r-- | fs/io_uring.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c index 6e3169834bf7..104af675f6fb 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -2064,7 +2064,7 @@ static void io_iopoll_reap_events(struct io_ring_ctx *ctx) while (!list_empty(&ctx->poll_list)) { unsigned int nr_events = 0; - io_iopoll_getevents(ctx, &nr_events, 1); + io_do_iopoll(ctx, &nr_events, 1); /* * Ensure we allow local-to-the-cpu processing to take place, @@ -6318,8 +6318,8 @@ static int io_sq_thread(void *data) unsigned nr_events = 0; mutex_lock(&ctx->uring_lock); - if (!list_empty(&ctx->poll_list)) - io_iopoll_getevents(ctx, &nr_events, 0); + if (!list_empty(&ctx->poll_list) && !need_resched()) + io_do_iopoll(ctx, &nr_events, 0); else timeout = jiffies + ctx->sq_thread_idle; mutex_unlock(&ctx->uring_lock); |