I can't say I've read the code to "most" NFS implementations, but
you're correct that the idempotency of some operations is improved
by using a request cache. That doesn't solve all the problems; you can
still overflow that cache and get false NAKs.
Typically, you can check this on your servers w/ "nfsstat -s" and you'll
see something like:
Server rpc:
Connection oriented:
calls badcalls nullrecv badlen xdrcall dupchecks dupreqs
31029587 0 0 0 0 958516 66
Connectionless:
calls badcalls nullrecv badlen xdrcall dupchecks dupreqs
502049 0 0 0 0 188 1
(The duplicate request cache is implemented at the RPC layer, not the NFS
layer; that's the layer where the transaction id (xid) lives).
Casper