We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents 1cd2630 + 9d83e1f commit dae68ffCopy full SHA for dae68ff
1 file changed
io_uring/io-wq.c
@@ -357,6 +357,13 @@ static void create_worker_cb(struct callback_head *cb)
357
worker = container_of(cb, struct io_worker, create_work);
358
wq = worker->wq;
359
acct = worker->acct;
360
+
361
+ rcu_read_lock();
362
+ do_create = !io_acct_activate_free_worker(acct);
363
+ rcu_read_unlock();
364
+ if (!do_create)
365
+ goto no_need_create;
366
367
raw_spin_lock(&acct->workers_lock);
368
369
if (acct->nr_workers < acct->max_workers) {
@@ -367,6 +374,7 @@ static void create_worker_cb(struct callback_head *cb)
374
if (do_create) {
375
create_io_worker(wq, acct);
376
} else {
377
+no_need_create:
370
378
atomic_dec(&acct->nr_running);
371
379
io_worker_ref_put(wq);
372
380
}
0 commit comments