diff options
| author | David Wei <dw@davidwei.uk> | 2025-11-04 14:44:57 -0800 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2025-11-06 16:23:21 -0700 |
| commit | 1bd95163dae80b940ea4b7bfa0720d3cc538a68b (patch) | |
| tree | b89a19d73860515af859b83f0cc4d5125cfcf340 | |
| parent | 5c686456a4e83ef06c74d40be05c21a0ef136684 (diff) | |
io_uring/zcrx: move io_unregister_zcrx_ifqs() down
In preparation for removing the ref on ctx->refs held by an ifq and
removing io_shutdown_zcrx_ifqs(), move io_unregister_zcrx_ifqs() down
such that it can call io_zcrx_scrub().
Signed-off-by: David Wei <dw@davidwei.uk>
Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
| -rw-r--r-- | io_uring/zcrx.c | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c index 774efbce8cb6..b3f3d55d2f63 100644 --- a/io_uring/zcrx.c +++ b/io_uring/zcrx.c @@ -662,28 +662,6 @@ ifq_free: return ret; } -void io_unregister_zcrx_ifqs(struct io_ring_ctx *ctx) -{ - struct io_zcrx_ifq *ifq; - - lockdep_assert_held(&ctx->uring_lock); - - while (1) { - scoped_guard(mutex, &ctx->mmap_lock) { - unsigned long id = 0; - - ifq = xa_find(&ctx->zcrx_ctxs, &id, ULONG_MAX, XA_PRESENT); - if (ifq) - xa_erase(&ctx->zcrx_ctxs, id); - } - if (!ifq) - break; - io_zcrx_ifq_free(ifq); - } - - xa_destroy(&ctx->zcrx_ctxs); -} - static struct net_iov *__io_zcrx_get_free_niov(struct io_zcrx_area *area) { unsigned niov_idx; @@ -749,6 +727,28 @@ void io_shutdown_zcrx_ifqs(struct io_ring_ctx *ctx) } } +void io_unregister_zcrx_ifqs(struct io_ring_ctx *ctx) +{ + struct io_zcrx_ifq *ifq; + + lockdep_assert_held(&ctx->uring_lock); + + while (1) { + scoped_guard(mutex, &ctx->mmap_lock) { + unsigned long id = 0; + + ifq = xa_find(&ctx->zcrx_ctxs, &id, ULONG_MAX, XA_PRESENT); + if (ifq) + xa_erase(&ctx->zcrx_ctxs, id); + } + if (!ifq) + break; + io_zcrx_ifq_free(ifq); + } + + xa_destroy(&ctx->zcrx_ctxs); +} + static inline u32 io_zcrx_rqring_entries(struct io_zcrx_ifq *ifq) { u32 entries; |
