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.