lkml.org 
[lkml]   [2007]   [Jan]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] fix-flush_workqueue-vs-cpu_dead-race-update
    On Sun, Jan 07, 2007 at 05:22:46PM +0300, Oleg Nesterov wrote:
    > On 01/07, Oleg Nesterov wrote:
    > >
    > > Thoughts?
    >
    > How about:
    >
    > CPU_DEAD does nothing. After __cpu_disable() cwq->thread runs on
    > all CPUs and becomes idle when it flushes cwq->worklist: nobody
    ^^^

    all except dead cpus that is.

    > will add work_struct on that list.

    If CPU_DEAD does nothing, then the dead cpu's workqueue list may be
    non-empty. How will it be flushed, given that no thread can run on the
    dead cpu?

    We could consider CPU_DEAD moving over work atleast (and not killing
    worker threads also). In that case, cwq->thread can flush its work,
    however it now requires serialization among worker threads, since more
    than one worker thread can now be servicing the same CPU's workqueue
    list (this will beat the very purpose of maintaining per-cpu threads to
    avoid synchronization between them).

    Finally, I am concerned about the (un)friendliness of this programming
    model, where programmers are restricted in not having a stable access to
    cpu_online_map at all -and- also requiring them to code in non-obvious
    terms. Granted that writing hotplug-safe code is non-trivial, but the
    absence of "safe access to online_map" will make it more complicated.

    --
    Regards,
    vatsa
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-01-07 17:47    [W:3.662 / U:0.408 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site