1. 23 Sep, 2006 2 commits
    • Chuck Lever's avatar
      SUNRPC: Make RPC portmapper use per-transport storage · 4a68179d
      Chuck Lever authored
      
      Move connection and bind state that was maintained in the rpc_clnt
      structure to the rpc_xprt structure.  This will allow the creation of
      a clean API for plugging in different types of bind mechanisms.
      
      This brings improvements such as the elimination of a single spin lock to
      control serialization for all in-kernel RPC binding.  A set of per-xprt
      bitops is used to serialize tasks during RPC binding, just like it now
      works for making RPC transport connections.
      
      Test-plan:
      Destructive testing (unplugging the network temporarily).  Connectathon
      with UDP and TCP.  NFSv2/3 and NFSv4 mounting should be carefully checked.
      Probably need to rig a server where certain services aren't running, or
      that returns an error for some typical operation.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      4a68179d
    • Chuck Lever's avatar
      SUNRPC: Create a helper to tell whether a transport is bound · ec739ef0
      Chuck Lever authored
      
      Hide the contents and format of xprt->addr by eliminating direct uses
      of the xprt->addr.sin_port field.  This change is required to support
      alternate RPC host address formats (eg IPv6).
      
      Test-plan:
      Destructive testing (unplugging the network temporarily).  Repeated runs of
      Connectathon locking suite with UDP and TCP.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      ec739ef0
  2. 03 Aug, 2006 1 commit
  3. 21 Jul, 2006 1 commit
  4. 09 Jun, 2006 1 commit
    • Chuck Lever's avatar
      SUNRPC: NFS_ROOT always uses the same XIDs · bf3fcf89
      Chuck Lever authored
      
      The XID generator uses get_random_bytes to generate an initial XID.
      NFS_ROOT starts up before the random driver, though, so get_random_bytes
      doesn't set a random XID for NFS_ROOT.  This causes NFS_ROOT mount points
      to reuse XIDs every time the client is booted.  If the client boots often
      enough, the server will start serving old replies out of its DRC.
      
      Use net_random() instead.
      
      Test plan:
      I/O intensive workloads should perform well and generate no errors.  Traces
      taken during client reboots should show that NFS_ROOT mounts use unique
      XIDs after every reboot.
      Signed-off-by: default avatarChuck Lever <cel@netapp.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      bf3fcf89
  5. 20 Mar, 2006 5 commits
  6. 06 Jan, 2006 3 commits
    • Trond Myklebust's avatar
      SUNRPC: Clean up xprt_destroy() · 0065db32
      Trond Myklebust authored
      
       We ought never to be calling xprt_destroy() if there are still active
       rpc_tasks. Optimise away the broken code that attempts to "fix" that case.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      0065db32
    • Trond Myklebust's avatar
      SUNRPC: Ensure client closes the socket when server initiates a close · 632e3bdc
      Trond Myklebust authored
      
       If the server decides to close the RPC socket, we currently don't actually
       respond until either another RPC call is scheduled, or until xprt_autoclose()
       gets called by the socket expiry timer (which may be up to 5 minutes
       later).
      
       This patch ensures that xprt_autoclose() is called much sooner if the
       server closes the socket.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      632e3bdc
    • Chuck Lever's avatar
      SUNRPC: switchable buffer allocation · 02107148
      Chuck Lever authored
      
       Add RPC client transport switch support for replacing buffer management
       on a per-transport basis.
      
       In the current IPv4 socket transport implementation, RPC buffers are
       allocated as needed for each RPC message that is sent.  Some transport
       implementations may choose to use pre-allocated buffers for encoding,
       sending, receiving, and unmarshalling RPC messages, however.  For
       transports capable of direct data placement, the buffers can be carved
       out of a pre-registered area of memory rather than from a slab cache.
      
       Test-plan:
       Millions of fsx operations.  Performance characterization with "sio" and
       "iozone".  Use oprofile and other tools to look for significant regression
       in CPU utilization.
      Signed-off-by: default avatarChuck Lever <cel@netapp.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      02107148
  7. 19 Oct, 2005 1 commit
  8. 18 Oct, 2005 1 commit
  9. 23 Sep, 2005 20 commits
  10. 08 Jul, 2005 1 commit
  11. 25 Jun, 2005 1 commit
  12. 22 Jun, 2005 3 commits