[lkml]   [2012]   [May]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] floppy: convert to delayed work and single-thread wq
    Hello, Linus.

    On Wed, May 16, 2012 at 01:42:36PM -0700, Linus Torvalds wrote:
    > On Wed, May 16, 2012 at 1:29 PM, Tejun Heo <> wrote:
    > >
    > > Ummm... still confused.  flush_work_sync() is fine too.  If you have
    > > two, two calls to flush_work_sync() are equivalent to flushing the
    > > workqueue in effect.  You just need to avoid flush_workqueue() because
    > > system workqueues may be hosting work items which can run arbitrarily
    > > long.
    > Umm. If there are abritrarily long things and these are serialized,
    > then that workqueue is not good for putting floppy work on it either,
    > is it? I don't think you can have it both ways.

    They're not being serialized. system_nrt_wq like any other system wqs
    has 256 as max_active - so upto 256 work items per cpu can be
    executing (ie. assigned to an active worker) at any given time and
    because it's a large shared pool, some of them are allowed to take
    long time.

    > Either it's "good enough" for putting floppy_work, fd_timeout and
    > fd_timer on, or it's not. If it's good enough, then flush_workqueue()
    > should damn well be timely enough. And if flush_workqueue() isn't
    > timely enough, then it doesn't sound like system_nrt_wq is the wrong
    > choice.

    So, per-work item, it's timely enough. It shouldn't be different from
    using a dedicated workqueue. Different work items don't interact with
    each other differently whether they belong to the same workqueue or
    different ones as long as the workqueue's max_active limit isn't
    reached. flush_workqueue() is a different story as it forces all work
    items belonging to the workqueue to be related. That's why one of the
    valid reasons to create a workqueue is to have a separate flush
    (workqueue) domain - e.g. when the caller doesn't know which work
    items need to be flushed because they're dynamically allocated and
    freed on work item execution.


    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2012-05-17 17:41    [W:0.049 / U:2.220 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site