提交 06ef3608 编写于 作者: P Pavel Begunkov 提交者: Jens Axboe

io_uring: simplify file ref tracking in submission state

Currently, file refs in struct io_submit_state are tracked with 2 vars:
@has_refs -- how many refs were initially taken
@used_refs -- number of refs used

Replace it with a single variable counting how many refs left at the
current moment.
Signed-off-by: NPavel Begunkov <asml.silence@gmail.com>
Signed-off-by: NJens Axboe <axboe@kernel.dk>
上级 57f1a649
......@@ -707,7 +707,6 @@ struct io_submit_state {
struct file *file;
unsigned int fd;
unsigned int has_refs;
unsigned int used_refs;
unsigned int ios_left;
};
......@@ -2327,10 +2326,8 @@ static void io_iopoll_req_issued(struct io_kiocb *req)
static void __io_state_file_put(struct io_submit_state *state)
{
int diff = state->has_refs - state->used_refs;
if (diff)
fput_many(state->file, diff);
if (state->has_refs)
fput_many(state->file, state->has_refs);
state->file = NULL;
}
......@@ -2352,7 +2349,7 @@ static struct file *__io_file_get(struct io_submit_state *state, int fd)
if (state->file) {
if (state->fd == fd) {
state->used_refs++;
state->has_refs--;
state->ios_left--;
return state->file;
}
......@@ -2363,9 +2360,8 @@ static struct file *__io_file_get(struct io_submit_state *state, int fd)
return NULL;
state->fd = fd;
state->has_refs = state->ios_left;
state->used_refs = 1;
state->ios_left--;
state->has_refs = state->ios_left;
return state->file;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册