Skip to content

Commit

Permalink
nfsd: Fix lease time to 90 seconds
Browse files Browse the repository at this point in the history
The nfsd default lease time has been changed from 90 seconds to
45 seconds between Linux 4.14 and 4.19 by commit d6ebf5088f09
("nfsd4: return default lease period").

After the upgrade of a nfs server (claptrap) from 4.14 to 4.19, we
saw a failing process ("arplisten") and dmesg logs "NFS:
nfs4_reclaim_open_state: Lock reclaim failed!" on a client (moep,
4.14.87).  The client had the file system mounted with vers=4.0.

Network trace indicated, that the client continued to use the
90 seconds lease period of the previous server incarnation and
sent RENEWs every 60 seconds (2/3 of 90 seconds).  Sometimes the
server answered with NFS4ERR_EXPIRED.

When this happened, the client executed recovery (SETCLIENTID...) but
did non query the server for a new lease_time.  So the problem was
persistent even after the first failure.

As an experiment, I've also restarted a server with the lease time
decrement from 90 to 45 seconds, but the grace period fixed to
90 seconds. Now the client got NFS4ERR_STALE_CLIENTID  but still did
not query the server for a new lease_time and continued to send RENEWs
in 60 second intervals.

Add flags `--lease-time 90 and --grace-time 90` to nsfd to avoid upgrade
complexity. Also change existing option `-N 3` to long form
`--no-nfs-version 3` for readability.

A `systemctl daemon-reload && systemctl restart nfsd` puts the new
value into place as can be verified by `cat /proc/fs/nfsd/nfsv4leasetime`.
  • Loading branch information
donald committed Feb 7, 2019
1 parent 22dadd8 commit ce3a77f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion misc_systemd_units/nfsd.service
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ After=local-fs.target proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount unbound.se
ExecStartPre=/bin/mkdir -p /var/lib/nfs/v4recovery
ExecStartPre=/usr/sbin/exportfs -ra
ExecStart=/usr/sbin/rpc.mountd --foreground --manage-gids
ExecStartPost=/usr/sbin/rpc.nfsd -N 3 64 ; /usr/sbin/sm-notify
ExecStartPost=/usr/sbin/rpc.nfsd --lease-time 90 --grace-time 90 --no-nfs-version 3 64 ; /usr/sbin/sm-notify
ExecReload=/usr/sbin/exportfs -ra
ExecStopPost=/usr/sbin/rpc.nfsd 0 ; /usr/sbin/exportfs -ua
Restart=always
Expand Down

0 comments on commit ce3a77f

Please sign in to comment.