diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2021-04-20 12:03:33 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-04-20 12:55:28 -0600 |
commit | f2a48dd09b8e933f59570692e1382b81d4fddc49 (patch) | |
tree | 9d4d40c5f09fcff81871d3c57ef0ff5437a8a812 /fs/io_uring.c | |
parent | 07db298a1c96bdba2102d60ad51fcecb961177c9 (diff) | |
download | lwn-f2a48dd09b8e933f59570692e1382b81d4fddc49.tar.gz lwn-f2a48dd09b8e933f59570692e1382b81d4fddc49.zip |
io_uring: refactor io_sq_offload_create()
Just a bit of code tossing in io_sq_offload_create(), so it looks a bit
better. No functional changes.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/939776f90de8d2cdd0414e1baa29c8ec0926b561.1618916549.git.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 | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c index e621c9f5729f..2d49197845e8 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -7879,11 +7879,9 @@ static int io_sq_offload_create(struct io_ring_ctx *ctx, f = fdget(p->wq_fd); if (!f.file) return -ENXIO; - if (f.file->f_op != &io_uring_fops) { - fdput(f); - return -EINVAL; - } fdput(f); + if (f.file->f_op != &io_uring_fops) + return -EINVAL; } if (ctx->flags & IORING_SETUP_SQPOLL) { struct task_struct *tsk; @@ -7902,13 +7900,11 @@ static int io_sq_offload_create(struct io_ring_ctx *ctx, if (!ctx->sq_thread_idle) ctx->sq_thread_idle = HZ; - ret = 0; io_sq_thread_park(sqd); list_add(&ctx->sqd_list, &sqd->ctx_list); io_sqd_update_thread_idle(sqd); /* don't attach to a dying SQPOLL thread, would be racy */ - if (attached && !sqd->thread) - ret = -ENXIO; + ret = (attached && !sqd->thread) ? -ENXIO : 0; io_sq_thread_unpark(sqd); if (ret < 0) @@ -7920,11 +7916,8 @@ static int io_sq_offload_create(struct io_ring_ctx *ctx, int cpu = p->sq_thread_cpu; ret = -EINVAL; - if (cpu >= nr_cpu_ids) - goto err_sqpoll; - if (!cpu_online(cpu)) + if (cpu >= nr_cpu_ids || !cpu_online(cpu)) goto err_sqpoll; - sqd->sq_cpu = cpu; } else { sqd->sq_cpu = -1; @@ -7950,12 +7943,11 @@ static int io_sq_offload_create(struct io_ring_ctx *ctx, } return 0; +err_sqpoll: + complete(&ctx->sq_data->exited); err: io_sq_thread_finish(ctx); return ret; -err_sqpoll: - complete(&ctx->sq_data->exited); - goto err; } static inline void __io_unaccount_mem(struct user_struct *user, |