summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2024-03-06 18:42:32 -0500
committerTavian Barnes <tavianator@tavianator.com>2024-03-06 18:42:32 -0500
commitf64f76b55400b71e8576ed7e4a377eb5ef9576aa (patch)
treef82042d599d09395474e2b6b8c0a248e63b9da9f
parent61adc84620e90c3380c785d559137fac487a301c (diff)
downloadbfs-f64f76b55400b71e8576ed7e4a377eb5ef9576aa.tar.xz
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")
-rw-r--r--src/ioq.c5
1 files changed, 4 insertions, 1 deletions
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);