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.