Is the NFS Replay Cache needed for correctness with TCP mounts?

Ryan Stone rysto32 at gmail.com
Tue Mar 18 15:58:17 UTC 2014


My understanding of the NFS replay cache is that it's used so that the
NFS server can avoid trying non-idempotent requests twice if a it
handles a retransmitted request (because the response to the first
request was lost in transmit, for example).  Is this really only
needed for UDP mounts?  I would expect TCP mounts to not have the
problem because the TCP layer should handle the retransmits and the
NFS code should never see the same request twice.  Is this correct?


I ask because I have an NFS server (using the default legacy NFS
implementation) running FreeBSD 8.2 that is having problems with
entries in the replay cache becoming badly corrupted, leading to mbuf
leaks and system crashes.  I know that the NFS code has been rewritten
as of FreeBSD 9 so hopefully the issue is fixed in future versions,
but for the short term I'm not able to upgrade.  I control the clients
and I know that they all use TCP mounts, so I was wondering if
patching the server to disable the replay cache would be a plausible
short-term workaround for the issue until I can upgrade, or if I'm
courting disaster.

Thanks,
Ryan


More information about the freebsd-fs mailing list