lkml.org 
[lkml]   [2012]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 4/5] workqueue: use system_highpri_wq for highpri workers in rebind_workers()
    On Tue, Aug 14, 2012 at 01:17:51AM +0900, Joonsoo Kim wrote:
    > In rebind_workers(), we do inserting a work to rebind to cpu for busy workers.
    > Currently, in this case, we use only system_wq. This makes a possible
    > error situation as there is mismatch between cwq->pool and worker->pool.
    >
    > To prevent this, we should use system_highpri_wq for highpri worker
    > to match theses. This implements it.
    >
    > Signed-off-by: Joonsoo Kim <js1304@gmail.com>
    >
    > diff --git a/kernel/workqueue.c b/kernel/workqueue.c
    > index f69f094..e0e1d41 100644
    > --- a/kernel/workqueue.c
    > +++ b/kernel/workqueue.c
    > @@ -489,6 +489,11 @@ static int worker_pool_pri(struct worker_pool *pool)
    > return pool - pool->gcwq->pools;
    > }
    >
    > +static struct workqueue_struct *get_pool_system_wq(struct worker_pool *pool)
    > +{
    > + return worker_pool_pri(pool) ? system_highpri_wq : system_wq;
    > +}
    > +
    > static struct global_cwq *get_gcwq(unsigned int cpu)
    > {
    > if (cpu != WORK_CPU_UNBOUND)
    > @@ -1450,9 +1455,10 @@ retry:
    >
    > /* wq doesn't matter, use the default one */
    > debug_work_activate(rebind_work);
    > - insert_work(get_cwq(gcwq->cpu, system_wq), rebind_work,
    > - worker->scheduled.next,
    > - work_color_to_flags(WORK_NO_COLOR));
    > + insert_work(
    > + get_cwq(gcwq->cpu, get_pool_system_wq(worker->pool)),
    > + rebind_work, worker->scheduled.next,
    > + work_color_to_flags(WORK_NO_COLOR));

    I think it would be better to just opencode system_wq selection in
    rebind_workers().

    Thanks.

    --
    tejun


    \
     
     \ /
      Last update: 2012-08-13 19:03    [W:0.028 / U:29.544 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site