summaryrefslogtreecommitdiff
path: root/fs/io_uring.c
diff options
context:
space:
mode:
authorJackie Liu <liuyun01@kylinos.cn>2019-10-09 09:19:59 +0800
committerJens Axboe <axboe@kernel.dk>2019-10-29 10:22:47 -0600
commitba5290ccb6b57fc5e274ae46d051fba1f0ece262 (patch)
tree2dab2661498e2c9494e583abba45293450b868bd /fs/io_uring.c
parent33a107f0a1b8df0ad925e39d8afc97bb78e0cec1 (diff)
io_uring: replace s->needs_lock with s->in_async
There is no function change, just to clean up the code, use s->in_async to make the code know where it is. Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/io_uring.c')
-rw-r--r--fs/io_uring.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c
index bc93bdfe40e2..6bbca3d58941 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -271,7 +271,7 @@ struct sqe_submit {
unsigned short index;
u32 sequence;
bool has_user;
- bool needs_lock;
+ bool in_async;
bool needs_fixed_file;
};
@@ -1474,13 +1474,9 @@ static int io_read(struct io_kiocb *req, const struct sqe_submit *s,
ret2 = -EAGAIN;
/* Catch -EAGAIN return for forced non-blocking submission */
if (!force_nonblock || ret2 != -EAGAIN) {
- kiocb_done(kiocb, ret2, nxt, s->needs_lock);
+ kiocb_done(kiocb, ret2, nxt, s->in_async);
} else {
- /*
- * If ->needs_lock is true, we're already in async
- * context.
- */
- if (!s->needs_lock)
+ if (!s->in_async)
io_async_list_note(READ, req, iov_count);
ret = -EAGAIN;
}
@@ -1518,8 +1514,7 @@ static int io_write(struct io_kiocb *req, const struct sqe_submit *s,
ret = -EAGAIN;
if (force_nonblock && !(kiocb->ki_flags & IOCB_DIRECT)) {
- /* If ->needs_lock is true, we're already in async context. */
- if (!s->needs_lock)
+ if (!s->in_async)
io_async_list_note(WRITE, req, iov_count);
goto out_free;
}
@@ -1548,13 +1543,9 @@ static int io_write(struct io_kiocb *req, const struct sqe_submit *s,
else
ret2 = loop_rw_iter(WRITE, file, kiocb, &iter);
if (!force_nonblock || ret2 != -EAGAIN) {
- kiocb_done(kiocb, ret2, nxt, s->needs_lock);
+ kiocb_done(kiocb, ret2, nxt, s->in_async);
} else {
- /*
- * If ->needs_lock is true, we're already in async
- * context.
- */
- if (!s->needs_lock)
+ if (!s->in_async)
io_async_list_note(WRITE, req, iov_count);
ret = -EAGAIN;
}
@@ -2152,10 +2143,10 @@ static int __io_submit_sqe(struct io_ring_ctx *ctx, struct io_kiocb *req,
return -EAGAIN;
/* workqueue context doesn't hold uring_lock, grab it now */
- if (s->needs_lock)
+ if (s->in_async)
mutex_lock(&ctx->uring_lock);
io_iopoll_req_issued(req);
- if (s->needs_lock)
+ if (s->in_async)
mutex_unlock(&ctx->uring_lock);
}
@@ -2220,7 +2211,7 @@ restart:
if (!ret) {
s->has_user = cur_mm != NULL;
- s->needs_lock = true;
+ s->in_async = true;
do {
ret = __io_submit_sqe(ctx, req, s, &nxt, false);
/*
@@ -2696,7 +2687,7 @@ out:
-EFAULT);
} else {
s.has_user = has_user;
- s.needs_lock = true;
+ s.in_async = true;
s.needs_fixed_file = true;
io_submit_sqe(ctx, &s, statep, &link);
submitted++;
@@ -2883,7 +2874,7 @@ static int io_ring_submit(struct io_ring_ctx *ctx, unsigned int to_submit)
out:
s.has_user = true;
- s.needs_lock = false;
+ s.in_async = false;
s.needs_fixed_file = false;
submit++;
io_submit_sqe(ctx, &s, statep, &link);