> -----Original Message----- > From: Chuck Lever <chuck.lever@xxxxxxxxxx> > Sent: 30 December 2019 15:37 > To: Robert Milkowski <rmilkowski@xxxxxxxxx> > Cc: Linux NFS Mailing List <linux-nfs@xxxxxxxxxxxxxxx>; Trond Myklebust > <trond.myklebust@xxxxxxxxxxxxxxx>; Anna Schumaker > <anna.schumaker@xxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx > Subject: Re: [PATCH v3] NFSv4.0: nfs4_do_fsinfo() should not do implicit > lease renewals > > > > > On Dec 30, 2019, at 10:20 AM, Robert Milkowski <rmilkowski@xxxxxxxxx> > wrote: > > > > From: Robert Milkowski <rmilkowski@xxxxxxxxx> > > > > Currently, each time nfs4_do_fsinfo() is called it will do an implicit > > NFS4 lease renewal, which is not compliant with the NFS4 > specification. > > This can result in a lease being expired by an NFS server. > > > > Commit 83ca7f5ab31f ("NFS: Avoid PUTROOTFH when managing leases") > > introduced implicit client lease renewal in nfs4_do_fsinfo(), which > > can result in the NFSv4.0 lease to expire on a server side, and > > servers returning NFS4ERR_EXPIRED or NFS4ERR_STALE_CLIENTID. > > > > This can easily be reproduced by frequently unmounting a sub-mount, > > then stat'ing it to get it mounted again, which will delay or even > > completely prevent client from sending RENEW operations if no other > > NFS operations are issued. Eventually nfs server will expire client's > > lease and return an error on file access or next RENEW. > > > > This can also happen when a sub-mount is automatically unmounted due > > to inactivity (after nfs_mountpoint_expiry_timeout), then it is > > mounted again via stat(). This can result in a short window during > > which client's lease will expire on a server but not on a client. > > This specific case was observed on production systems. > > > > This patch makes an explicit lease renewal instead of an implicit one, > > by adding RENEW to a compound operation issued by nfs4_do_fsinfo(), > > similarly to NFSv4.1 which adds SEQUENCE operation. > > > > Fixes: 83ca7f5ab31f ("NFS: Avoid PUTROOTFH when managing leases") > > Signed-off-by: Robert Milkowski <rmilkowski@xxxxxxxxx> > > Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > > How do we progress it further? -- Robert Milkowski