From f64f76b55400b71e8576ed7e4a377eb5ef9576aa Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 6 Mar 2024 18:42:32 -0500 Subject: ioq: Copy ring_ops from the previous thread Otherwise threads 2-N won't use io_uring at all! Oops. Fixes: 8bc72d6c ("ioq: Probe for supported io_uring operations") --- src/ioq.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ioq.c b/src/ioq.c index f71ee6e..00c3b86 100644 --- a/src/ioq.c +++ b/src/ioq.c @@ -850,6 +850,7 @@ static int ioq_ring_init(struct ioq *ioq, struct ioq_thread *thread) { if (prev) { // Initial setup already complete + thread->ring_ops = prev->ring_ops; return 0; } @@ -916,12 +917,14 @@ static void ioq_thread_join(struct ioq_thread *thread) { } struct ioq *ioq_create(size_t depth, size_t nthreads) { - struct ioq *ioq = ZALLOC_FLEX(struct ioq, threads, nthreads); + struct ioq *ioq = ALLOC_FLEX(struct ioq, threads, nthreads); if (!ioq) { goto fail; } ioq->depth = depth; + ioq->size = 0; + ioq->cancel = false; ARENA_INIT(&ioq->ents, struct ioq_ent); -- cgit v1.2.3