1. 26 Feb, 2008 2 commits
    • Trond Myklebust's avatar
      SUNRPC: Allow the rpc_release() callback to be run on another workqueue · 32bfb5c0
      Trond Myklebust authored
      A lot of the work done by the rpc_release() callback is inappropriate for
      rpciod as it will often involve things like starting a new rpc call in
      order to clean up state after an interrupted NFSv4 open() call, or
      calls to mntput(), etc.
      
      This patch allows the caller of rpc_run_task() to specify that the
      rpc_release callback should run on a different workqueue than the default
      rpciod_workqueue.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      32bfb5c0
    • Trond Myklebust's avatar
      NFS: Fix a deadlock with lazy umount · 383ba719
      Trond Myklebust authored
      We can't allow rpc callback functions like task->tk_ops->rpc_call_prepare()
      and task->tk_ops->rpc_call_done() to call mntput() in any way, since
      that will cause a deadlock when the call to rpc_shutdown_client() attempts
      to wait on 'task' to complete.
      
      We can avoid the above deadlock by moving calls to mntput to
      task->tk_ops->rpc_release() callback, since at that time the task will be
      marked as completed, and so rpc_shutdown_client won't attempt to wait on
      it.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      383ba719
  2. 25 Feb, 2008 1 commit
  3. 24 Feb, 2008 37 commits