Code Review for illumos-gate

Prepared by:Arne Jansen (arne) on 2012-May-28 11:59 +0200 MEST
Workspace:/waflhome/arne/urika/hg/illumos-gate (at a1ab98875b9b)
Compare against: ssh://anonhg@hg.illumos.org/illumos-gate (at 3ca4cea305f1)
Summary of changes: 3 lines changed: 2 ins; 0 del; 1 mod; 2523 unchg
Patch of changes: illumos-gate.patch
Printable review: illumos-gate.pdf

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw usr/src/uts/common/fs/nfs/nfs4_callback.c

We've seen a situation where the NFS4-client tries endlessly to return a
delegation. This happened after a server reboot. The server responds with
STALE_STATEID to the DELEGRETURN. This case is not directly handled by
nfs4_do_delegreturn. Instead, it triggers a recovery of the clientid, which
in turn triggers a reclaim of all open files for this server.
To find the open files, rtable4 is enumerated for each mount to the server.
This is supposed to reopen the file, so that the next DELEGRETURN will
succeed.
In this case, the rnode is not in the rtable-hash, so it never gets
recovered. This leads to an endless delegreturn-loop, iterated once per
second.
This fix tests on NFS4_STALE_STATEID in combination with the rnode not
being in the hash. In this case, it treats the error as fatal and just
discards the delegation.
3 lines changed: 2 ins; 0 del; 1 mod; 2523 unchg

This code review page was prepared using /opt/onbld/bin/webrev. Webrev is maintained by the OpenSolaris project. The latest version may be obtained here.