nfsd4: teach encoders to handle reserve_space failures
authorJ. Bruce Fields <bfields@redhat.com>
Thu, 30 Jan 2014 22:18:38 +0000 (17:18 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 30 May 2014 21:31:49 +0000 (17:31 -0400)
commitd0a381dd0eda1cc769a5762d0eed4d0d662219f2
tree05f80bdf7d0ebfa0c119430fa4f895021e58af42
parent082d4bd72a4527c6568f53f4a5de74e804666fa7
nfsd4: teach encoders to handle reserve_space failures

We've tried to prevent running out of space with COMPOUND_SLACK_SPACE
and special checking in those operations (getattr) whose result can vary
enormously.

However:
- COMPOUND_SLACK_SPACE may be difficult to maintain as we add
  more protocol.
- BUG_ON or page faulting on failure seems overly fragile.
- Especially in the 4.1 case, we prefer not to fail compounds
  just because the returned result came *close* to session
  limits.  (Though perfect enforcement here may be difficult.)
- I'd prefer encoding to be uniform for all encoders instead of
  having special exceptions for encoders containing, for
  example, attributes.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4proc.c
fs/nfsd/nfs4xdr.c
fs/nfsd/xdr4.h