The update listed here:
> From: Neil Brown
> Please consider this for inclusion in 2.4.2
> The nfsd reply cache is currently not properly distinguishing between
> different clients. This is because rqstr->rq_addrlen is not being
> set by net/sunrpc (atleast, not for udp).
> A better fix might be to make sure it is set properly, but a lot of
> the code currently has hardcoded knowledge that AT_INET is the only
> protocol in use, so hardcoding the address length in the memcmp seem
> acceptable, for now at least.
> Without this fix, heavy nfs traffic from a large number of clients
> can cause file corruption as some write requests get incorrectly
> served from the cache instead of actually sending data to disk
> --- ./fs/nfsd/nfscache.c 2001/02/15 01:15:20 1.1
> +++ ./fs/nfsd/nfscache.c 2001/02/15 01:19:49 1.2
> @@ -192,7 +192,7 @@
> xid == rp->c_xid && proc == rp->c_proc &&
> proto == rp->c_prot && vers == rp->c_vers &&
> time_before(jiffies, rp->c_timestamp + 120*HZ) &&
> - memcmp((char*)&rqstp->rq_addr, (char*)&rp->c_addr,
> + memcmp((char*)&rqstp->rq_addr, (char*)&rp->c_addr,
> goto found_entry;
The email say it all.
Patch will be in the next kernel build.