1. 30 9月, 2008 1 次提交
  2. 14 8月, 2008 1 次提交
    • T
      svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet · 24b8b447
      Tom Tucker 提交于
      RDMA_READ completions are kept on a separate queue from the general
      I/O request queue. Since a separate lock is used to protect the RDMA_READ
      completion queue, a race exists between the dto_tasklet and the
      svc_rdma_recvfrom thread where the dto_tasklet sets the XPT_DATA
      bit and adds I/O to the read-completion queue. Concurrently, the
      recvfrom thread checks the generic queue, finds it empty and resets
      the XPT_DATA bit. A subsequent svc_xprt_enqueue will fail to enqueue
      the transport for I/O and cause the transport to "stall".
      
      The fix is to protect both lists with the same lock and set the XPT_DATA
      bit with this lock held.
      Signed-off-by: NTom Tucker <tom@opengridcomputing.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      24b8b447
  3. 16 7月, 2008 1 次提交
    • C
      SUNRPC: Support registering IPv6 interfaces with local rpcbind daemon · c2e1b09f
      Chuck Lever 提交于
      Introduce a new API to register RPC services on IPv6 interfaces to allow
      the NFS server and lockd to advertise on IPv6 networks.
      
      Unlike rpcb_register(), the new rpcb_v4_register() function uses rpcbind
      protocol version 4 to contact the local rpcbind daemon.  The version 4
      SET/UNSET procedures allow services to register address families besides
      AF_INET, register at specific network interfaces, and register transport
      protocols besides UDP and TCP.  All of this functionality is exposed via
      the new rpcb_v4_register() kernel API.
      
      A user-space rpcbind daemon implementation that supports version 4 of the
      rpcbind protocol is required in order to make use of this new API.
      
      Note that rpcbind version 3 is sufficient to support the new rpcbind
      facilities listed above, but most extant implementations use version 4.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      c2e1b09f
  4. 10 7月, 2008 2 次提交
  5. 03 7月, 2008 5 次提交
  6. 24 6月, 2008 3 次提交
  7. 12 6月, 2008 1 次提交
  8. 19 5月, 2008 5 次提交
  9. 24 4月, 2008 6 次提交
  10. 20 4月, 2008 4 次提交
    • T
      SUNRPC: Don't disconnect more than once if retransmitting NFSv4 requests · 7c1d71cf
      Trond Myklebust 提交于
      NFSv4 requires us to ensure that we break the TCP connection before we're
      allowed to retransmit a request. However in the case where we're
      retransmitting several requests that have been sent on the same
      connection, we need to ensure that we don't interfere with the attempt to
      reconnect and/or break the connection again once it has been established.
      
      We therefore introduce a 'connection' cookie that is bumped every time a
      connection is broken. This allows requests to track if they need to force a
      disconnection.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      7c1d71cf
    • T
      NFSv4: Reintroduce machine creds · 7c67db3a
      Trond Myklebust 提交于
      We need to try to ensure that we always use the same credentials whenever
      we re-establish the clientid on the server. If not, the server won't
      recognise that we're the same client, and so may not allow us to recover
      state.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      7c67db3a
    • T
      NFSv4: Don't use cred->cr_ops->cr_name in nfs4_proc_setclientid() · 78ea323b
      Trond Myklebust 提交于
      With the recent change to generic creds, we can no longer use
      cred->cr_ops->cr_name to distinguish between RPCSEC_GSS principals and
      AUTH_SYS/AUTH_NULL identities. Replace it with the rpc_authops->au_name
      instead...
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      78ea323b
    • T
      SUNRPC: Fix up xprt_write_space() · b6ddf64f
      Trond Myklebust 提交于
      The rest of the networking layer uses SOCK_ASYNC_NOSPACE to signal whether
      or not we have someone waiting for buffer memory. Convert the SUNRPC layer
      to use the same idiom.
      Remove the unlikely()s in xs_udp_write_space and xs_tcp_write_space. In
      fact, the most common case will be that there is nobody waiting for buffer
      space.
      
      SOCK_NOSPACE is there to tell the TCP layer whether or not the cwnd was
      limited by the application window. Ensure that we follow the same idiom as
      the rest of the networking layer here too.
      
      Finally, ensure that we clear SOCK_ASYNC_NOSPACE once we wake up, so that
      write_space() doesn't keep waking things up on xprt->pending.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      b6ddf64f
  11. 15 3月, 2008 5 次提交
  12. 29 2月, 2008 5 次提交
  13. 26 2月, 2008 1 次提交
    • T
      SUNRPC: Run rpc timeout functions as callbacks instead of in softirqs · 5d00837b
      Trond Myklebust 提交于
      An audit of the current RPC timeout functions shows that they don't really
      ever need to run in the softirq context. As long as the softirq is
      able to signal that the wakeup is due to a timeout (which it can do by
      setting task->tk_status to -ETIMEDOUT) then the callback functions can just
      run as standard task->tk_callback functions (in the rpciod/process
      context).
      
      The only possible border-line case would be xprt_timer() for the case of
      UDP, when the callback is used to reduce the size of the transport
      congestion window. In testing, however, the effect of moving that update
      to a callback would appear to be minor.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      5d00837b