git: network - Fix a sleep/wakeup race in NFS (server), implement faster keepalives

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Sep 23 22:43:58 PDT 2010


commit 8fdd18a45661991db8beaf8faa358aa60df62153
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Sep 23 22:36:08 2010 -0700

    network - Fix a sleep/wakeup race in NFS (server), implement faster keepalives
    
    * Fix a sleep/wakeup MP race in the NFS server where the server can receive
      data but fails to wakeup one of its nfsds.
    
    * Set a faster keepalive timeout for NFS client and server.  Currently
      75 seconds (instead of 2 hours).  This solves a problem when connectivity
      is lost with the server for long enough that the server kills the
      connection, or if the server fails while processing a nfs request
      from the client.
    
      If the client is stuck waiting for the reply it can wind up waiting
      for the entire keepalive period before recovering, even if connectivity
      with the server is re-established.  This way the client will proactively
      determine that the connection is dead within 75 seconds and re-establish
      it.
    
    * The value of the timeout is taken from net.inet.tcp.keepintvl
      (instead of net.inet.tcp.keepalive), which defaults to 75 seconds
      at the moment.

Summary of changes:
 sys/vfs/nfs/nfs_socket.c   |   15 +++++++++++++--
 sys/vfs/nfs/nfs_syscalls.c |    8 ++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/8fdd18a45661991db8beaf8faa358aa60df62153


-- 
DragonFly BSD source repository





More information about the Commits mailing list