Commit c69f8dbe authored by Jackie Liu's avatar Jackie Liu Committed by Jens Axboe
Browse files

io_uring: separate the io_free_req and io_free_req_find_next interface



Similar to the distinction between io_put_req and io_put_req_find_next,
io_free_req has been modified similarly, with no functional changes.

Signed-off-by: default avatarJackie Liu <liuyun01@kylinos.cn>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent ec9c02ad
Loading
Loading
Loading
Loading
+9 −4
Original line number Original line Diff line number Diff line
@@ -883,7 +883,7 @@ static void io_fail_links(struct io_kiocb *req)
	io_cqring_ev_posted(ctx);
	io_cqring_ev_posted(ctx);
}
}


static void io_free_req(struct io_kiocb *req, struct io_kiocb **nxt)
static void io_free_req_find_next(struct io_kiocb *req, struct io_kiocb **nxt)
{
{
	if (likely(!(req->flags & REQ_F_LINK))) {
	if (likely(!(req->flags & REQ_F_LINK))) {
		__io_free_req(req);
		__io_free_req(req);
@@ -917,6 +917,11 @@ static void io_free_req(struct io_kiocb *req, struct io_kiocb **nxt)
	__io_free_req(req);
	__io_free_req(req);
}
}


static void io_free_req(struct io_kiocb *req)
{
	io_free_req_find_next(req, NULL);
}

/*
/*
 * Drop reference to request, return next in chain (if there is one) if this
 * Drop reference to request, return next in chain (if there is one) if this
 * was the last reference to this request.
 * was the last reference to this request.
@@ -926,7 +931,7 @@ static void io_put_req_find_next(struct io_kiocb *req, struct io_kiocb **nxtptr)
	struct io_kiocb *nxt = NULL;
	struct io_kiocb *nxt = NULL;


	if (refcount_dec_and_test(&req->refs))
	if (refcount_dec_and_test(&req->refs))
		io_free_req(req, &nxt);
		io_free_req_find_next(req, &nxt);


	if (nxt) {
	if (nxt) {
		if (nxtptr)
		if (nxtptr)
@@ -939,7 +944,7 @@ static void io_put_req_find_next(struct io_kiocb *req, struct io_kiocb **nxtptr)
static void io_put_req(struct io_kiocb *req)
static void io_put_req(struct io_kiocb *req)
{
{
	if (refcount_dec_and_test(&req->refs))
	if (refcount_dec_and_test(&req->refs))
		io_free_req(req, NULL);
		io_free_req(req);
}
}


static void io_double_put_req(struct io_kiocb *req)
static void io_double_put_req(struct io_kiocb *req)
@@ -1006,7 +1011,7 @@ static void io_iopoll_complete(struct io_ring_ctx *ctx, unsigned int *nr_events,
				if (to_free == ARRAY_SIZE(reqs))
				if (to_free == ARRAY_SIZE(reqs))
					io_free_req_many(ctx, reqs, &to_free);
					io_free_req_many(ctx, reqs, &to_free);
			} else {
			} else {
				io_free_req(req, NULL);
				io_free_req(req);
			}
			}
		}
		}
	}
	}