Messages in this thread Patch in this message |  | | From | Trond Myklebust <> | Subject | Re: [PATCH] NFSv4: nfs4_do_fsinfo() should not do implicit lease renewals | Date | Mon, 16 Dec 2019 18:24:39 +0000 |
| |
On Mon, 2019-12-16 at 17:38 +0000, Robert Milkowski wrote: > From: Robert Milkowski <rmilkowski@gmail.com> > > 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 NFS server which will > then > return NFS4ERR_EXPIRED or NFS4ERR_STALE_CLIENTID. > > Signed-off-by: Robert Milkowski <rmilkowski@gmail.com> > --- > fs/nfs/nfs4proc.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > index 76d3716..aad65dd 100644 > --- a/fs/nfs/nfs4proc.c > +++ b/fs/nfs/nfs4proc.c > @@ -5019,16 +5019,19 @@ static int nfs4_do_fsinfo(struct nfs_server > *server, > struct nfs_fh *fhandle, str > struct nfs4_exception exception = { > .interruptible = true, > }; > - unsigned long now = jiffies; > + unsigned long last_renewal = jiffies; > int err; > > do { > err = _nfs4_do_fsinfo(server, fhandle, fsinfo); > trace_nfs4_fsinfo(server, fhandle, fsinfo->fattr, err); > if (err == 0) { > + /* no implicit lease renewal allowed here */ > + if (server->nfs_client->cl_last_renewal != 0) > + last_renewal = > server->nfs_client->cl_last_renewal; > nfs4_set_lease_period(server->nfs_client, > fsinfo->lease_time * HZ, > - now); > + last_renewal); > break; > } > err = nfs4_handle_exception(server, err, &exception);
NACK. The above argument only applies to legacy minor version 0 setups, and does not apply to NFSv4.1 or newer.
-- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@hammerspace.com
|  |