Messages in this thread | | | From | Lai Jiangshan <> | Date | Tue, 12 Jan 2021 12:33:03 +0800 | Subject | Re: [PATCH -tip V3 0/8] workqueue: break affinity initiatively |
| |
> Well yes, but afaict the workqueue stuff hasn't been settled yet, and > the rcutorture patch Paul did was just plain racy and who knows what > other daft kthread users are out there. That and we're at -rc3.
I just send the V4 patchset for the workqueue. Please take a look.
> @@ -1861,6 +1861,8 @@ static void worker_attach_to_pool(struct worker *worker, > */ > if (pool->flags & POOL_DISASSOCIATED) > worker->flags |= WORKER_UNBOUND; > + else > + kthread_set_per_cpu(worker->task, true);
I think kthread_set_per_cpu(worker->task, false) is also needed for worker_detach_from_pool() or at least rescuer_thread() who doesn't go to die after detached from the pool.
> I thought only pcpu pools would get the POOL_DISASSOCIATED flag on > offline, but it seems unbound pools also get it at init time. Did I get > that right?
You are right.
The POOL_DISASSOCIATED flag indicates whether the pool is concurrency management or not (negative way, POOL_DISASSOCIATED means "not concurrency management"). So it should be applied for all unbound pools.
When !POOL_DISASSOCIATED means it is a percpu pool, and the pool->cpu is online and the offline callback has not been called yet even the pool->cpu is going to be offline. So !POOL_DISASSOCIATED is used a lot in the code.
| |