diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2023-04-13 16:28:08 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2023-04-15 22:44:57 +0200 |
commit | 4ea15b56f0810f0d8795d475db1bb74b3a7c1b2f (patch) | |
tree | 87fada8191a92e179e90b93f594fcc013a05e147 /io_uring/io_uring.c | |
parent | io_uring/rsrc: refactor io_rsrc_ref_quiesce (diff) | |
download | linux-4ea15b56f0810f0d8795d475db1bb74b3a7c1b2f.tar.xz linux-4ea15b56f0810f0d8795d475db1bb74b3a7c1b2f.zip |
io_uring/rsrc: use wq for quiescing
Replace completions with waitqueues for rsrc data quiesce, the main
wakeup condition is when data refs hit zero. Note that data refs are
only changes under ->uring_lock, so we prepare before mutex_unlock()
reacquire it after taking the lock back. This change will be needed
in the next patch.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/1d0dbc74b3b4fd67c8f01819e680c5e0da252956.1681395792.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/io_uring.c')
-rw-r--r-- | io_uring/io_uring.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 9083a8466ebf..3c1c8c788b7b 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -321,6 +321,7 @@ static __cold struct io_ring_ctx *io_ring_ctx_alloc(struct io_uring_params *p) mutex_init(&ctx->uring_lock); init_waitqueue_head(&ctx->cq_wait); init_waitqueue_head(&ctx->poll_wq); + init_waitqueue_head(&ctx->rsrc_quiesce_wq); spin_lock_init(&ctx->completion_lock); spin_lock_init(&ctx->timeout_lock); INIT_WQ_LIST(&ctx->iopoll_list); |