DragonFly commits List (threaded) for 2010-09
git: network - Fix a sleep/wakeup race in NFS (server), implement faster keepalives
Author: Matthew Dillon <email@example.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
* 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(-)
DragonFly BSD source repository