On Fri, Jun 01, 2018 at 06:42:37AM -0400, Jeff Layton wrote:
Thanks for having a look. Hmm...you're right.
nn->nfsd4_lease = 90; /* default lease time */
nn->nfsd4_grace = 90;
nit: We should probably add a #define'd constant for that at some
point...but, might this be problematic?
In the pessimal case, you might renew your lease just before the server
crashes. It then comes back up quickly and starts the grace period. By
the time the client contacts the server again the grace period is almost
over and you may have very little time to actually do any reclaim.
ISTR that when we were working on the server at PD we had determined
that we needed around 2 grace periods + a small fudge factor. I don't
recall the details of how we determined it though.
OK, I'd be interested in any of that.
If we decide we need a larger grace/lease ratio, we may want to adjust
default lease down at same time to avoid increasing grace period, as
that's always an annoyance.
Even worse:
$ cat /proc/sys/fs/lease-break-time
45
Maybe we should be basing the v4 lease time on the lease-break-time
value? It seems like we ought to revoke delegations after two lease
periods rather than after half of one.
No, we ignore lease-break-time on delegations. See the comment in
fs/nfsd/nfs4state.c:nfsd_break_deleg_cb():
/*
* We don't want the locks code to timeout the lease for us;
* we'll remove it ourself if a delegation isn't returned
* in time:
*/
fl->fl_break_time = 0;
--b.