1. 28 5月, 2011 1 次提交
    • C
      SUNRPC: Support for RPC over AF_LOCAL transports · 176e21ee
      Chuck Lever 提交于
      TI-RPC introduces the capability of performing RPC over AF_LOCAL
      sockets.  It uses this mainly for registering and unregistering
      local RPC services securely with the local rpcbind, but we could
      also conceivably use it as a generic upcall mechanism.
      
      This patch provides a client-side only implementation for the moment.
      We might also consider a server-side implementation to provide
      AF_LOCAL access to NLM (for statd downcalls, and such like).
      
      Autobinding is not supported on kernel AF_LOCAL transports at this
      time.  Kernel ULPs must specify the pathname of the remote endpoint
      when an AF_LOCAL transport is created.  rpcbind supports registering
      services available via AF_LOCAL, so the kernel could handle it with
      some adjustment to ->rpcbind and ->set_port.  But we don't need this
      feature for doing upcalls via well-known named sockets.
      
      This has not been tested with ULPs that move a substantial amount of
      data.  Thus, I can't attest to how robust the write_space and
      congestion management logic is.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      176e21ee
  2. 25 4月, 2011 1 次提交
  3. 19 4月, 2011 1 次提交
  4. 31 3月, 2011 1 次提交
  5. 25 3月, 2011 1 次提交
  6. 18 3月, 2011 1 次提交
  7. 12 3月, 2011 1 次提交
  8. 11 3月, 2011 1 次提交
    • T
      SUNRPC: Close a race in __rpc_wait_for_completion_task() · bf294b41
      Trond Myklebust 提交于
      Although they run as rpciod background tasks, under normal operation
      (i.e. no SIGKILL), functions like nfs_sillyrename(), nfs4_proc_unlck()
      and nfs4_do_close() want to be fully synchronous. This means that when we
      exit, we want all references to the rpc_task to be gone, and we want
      any dentry references etc. held by that task to be released.
      
      For this reason these functions call __rpc_wait_for_completion_task(),
      followed by rpc_put_task() in the expectation that the latter will be
      releasing the last reference to the rpc_task, and thus ensuring that the
      callback_ops->rpc_release() has been called synchronously.
      
      This patch fixes a race which exists due to the fact that
      rpciod calls rpc_complete_task() (in order to wake up the callers of
      __rpc_wait_for_completion_task()) and then subsequently calls
      rpc_put_task() without ensuring that these two steps are done atomically.
      
      In order to avoid adding new spin locks, the patch uses the existing
      waitqueue spin lock to order the rpc_task reference count releases between
      the waiting process and rpciod.
      The common case where nobody is waiting for completion is optimised for by
      checking if the RPC_TASK_ASYNC flag is cleared and/or if the rpc_task
      reference count is 1: in those cases we drop trying to grab the spin lock,
      and immediately free up the rpc_task.
      
      Those few processes that need to put the rpc_task from inside an
      asynchronous context and that do not care about ordering are given a new
      helper: rpc_put_task_async().
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      bf294b41
  9. 26 1月, 2011 1 次提交
  10. 12 1月, 2011 2 次提交
  11. 11 1月, 2011 2 次提交
  12. 07 1月, 2011 5 次提交
  13. 05 1月, 2011 2 次提交
  14. 18 12月, 2010 1 次提交
    • N
      sunrpc: remove xpt_pool · 7c96aef7
      NeilBrown 提交于
      The xpt_pool field is only used for reporting BUGs.
      And it isn't used correctly.
      
      In particular, when it is cleared in svc_xprt_received before
      XPT_BUSY is cleared, there is no guarantee that either the
      compiler or the CPU might not re-order to two assignments, just
      setting xpt_pool to NULL after XPT_BUSY is cleared.
      
      If a different cpu were running svc_xprt_enqueue at this moment,
      it might see XPT_BUSY clear and then xpt_pool non-NULL, and
      so BUG.
      
      This could be fixed by calling
        smp_mb__before_clear_bit()
      before the clear_bit.  However as xpt_pool isn't really used,
      it seems safest to simply remove xpt_pool.
      
      Another alternate would be to change the clear_bit to
      clear_bit_unlock, and the test_and_set_bit to test_and_set_bit_lock.
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      7c96aef7
  15. 17 12月, 2010 2 次提交
  16. 03 11月, 2010 1 次提交
  17. 25 10月, 2010 1 次提交
  18. 24 10月, 2010 1 次提交
  19. 02 10月, 2010 9 次提交
  20. 30 9月, 2010 1 次提交
    • S
      sunrpc: fix up rpcauth_remove_module section mismatch · c135e84a
      Stephen Rothwell 提交于
      On Wed, 29 Sep 2010 14:02:38 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
      >
      > After merging the final tree, today's linux-next build (powerpc
      > ppc44x_defconfig) produced tis warning:
      >
      > WARNING: net/sunrpc/sunrpc.o(.init.text+0x110): Section mismatch in reference from the function init_sunrpc() to the function .exit.text:rpcauth_remove_module()
      > The function __init init_sunrpc() references
      > a function __exit rpcauth_remove_module().
      > This is often seen when error handling in the init function
      > uses functionality in the exit path.
      > The fix is often to remove the __exit annotation of
      > rpcauth_remove_module() so it may be used outside an exit section.
      >
      > Probably caused by commit 2f72c9b7
      > ("sunrpc: The per-net skeleton").
      
      This actually causes a build failure on a sparc32 defconfig build:
      
      `rpcauth_remove_module' referenced in section `.init.text' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.o
      
      I applied the following patch for today:
      
      Fixes:
      
      `rpcauth_remove_module' referenced in section `.init.text' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.o
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Acked-by: NPavel Emelyanov <xemul@openvz.org>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      c135e84a
  21. 27 9月, 2010 4 次提交