lkml.org 
[lkml]   [2012]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: nfsd oops on Linus' current tree.
    On Fri, Dec 21, 2012 at 11:36:51PM +0000, Myklebust, Trond wrote:
    > Please reread what I said. There was no obvious circular dependency,
    > because nfsiod and rpciod are separate workqueues, both created with
    > WQ_MEM_RECLAIM.

    Oh, sorry, I read "rpciod" as "nfsiod"!

    > Dros' experience shows, however that a call to
    > rpc_shutdown_client in an nfsiod work item will deadlock with rpciod
    > if the RPC task's work item has been assigned to the same CPU as the
    > one running the rpc_shutdown_client work item.
    >
    > I can't tell right now if that is intentional (in which case the
    > WARN_ON in the rpc code is correct), or if it is a bug in the
    > workqueue code. For now, we're assuming the former.

    Well, Documentation/workqueue.txt says:

    "Each wq with WQ_MEM_RECLAIM set has an execution context
    reserved for it. If there is dependency among multiple work
    items used during memory reclaim, they should be queued to
    separate wq each with WQ_MEM_RECLAIM."

    And I can't see how it could have been safe to convert
    create_single_singlethread_workqueue() callers otherwise.

    --b.


    \
     
     \ /
      Last update: 2012-12-22 01:21    [W:3.141 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site