Re: [PATCH wq/for-4.5-fixes] workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup

From: Tejun Heo
Date: Mon Feb 15 2016 - 13:21:31 EST


Hello, Michal.

On Mon, Feb 15, 2016 at 06:33:46PM +0100, Michal Hocko wrote:
> On Wed 10-02-16 10:55:03, Tejun Heo wrote:
> [...]
> > --- a/kernel/workqueue.c
> > +++ b/kernel/workqueue.c
> > @@ -570,6 +570,16 @@ static struct pool_workqueue *unbound_pwq_by_node(struct workqueue_struct *wq,
> > int node)
> > {
> > assert_rcu_or_wq_mutex_or_pool_mutex(wq);
> > +
> > + /*
> > + * XXX: @node can be NUMA_NO_NODE if CPU goes offline while a
> > + * delayed item is pending. The plan is to keep CPU -> NODE
> > + * mapping valid and stable across CPU on/offlines. Once that
> > + * happens, this workaround can be removed.
>
> I am not sure this is completely true with the code as is currently.
> Don't wee also need to use cpu_to_mem to handle memoryless CPUs?

I'm not sure. I think we still wan to distinguish workers for a
memoryless node from its neighboring node with memory. We don't want
work items for the latter to be randomly distributed to the former
after all.

Thanks.

--
tejun