> On May 17, 2019, at 5:06 PM, Dave Wysochanski <dwysocha@xxxxxxxxxx> wrote: > > On the NFS client there is no low-impact way to determine the nfs4 > lease time or whether the lease is expired, so add these to mountstats > with times displayed in seconds. > > If the lease is not expired, display lease_expired=0. Otherwise, > display lease_expired=seconds_since_expired, similar to 'age:' line > in mountstats. > > Signed-off-by: Dave Wysochanski <dwysocha@xxxxxxxxxx> > --- > fs/nfs/super.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/fs/nfs/super.c b/fs/nfs/super.c > index c27ac96..6e52f0c 100644 > --- a/fs/nfs/super.c > +++ b/fs/nfs/super.c > @@ -730,6 +730,16 @@ int nfs_show_options(struct seq_file *m, struct dentry *root) > EXPORT_SYMBOL_GPL(nfs_show_options); > > #if IS_ENABLED(CONFIG_NFS_V4) > +static void show_lease(struct seq_file *m, struct nfs_server *server) > +{ > + struct nfs_client *clp = server->nfs_client; > + unsigned long expire; > + > + seq_printf(m, ",lease_time=%ld", clp->cl_lease_time / HZ); > + expire = clp->cl_last_renewal + clp->cl_lease_time; > + seq_printf(m, ",lease_expired=%ld", > + time_after(expire, jiffies) ? 0 : (jiffies - expire) / HZ); > +} > #ifdef CONFIG_NFS_V4_1 > static void show_sessions(struct seq_file *m, struct nfs_server *server) > { > @@ -838,6 +848,7 @@ int nfs_show_stats(struct seq_file *m, struct dentry *root) > seq_printf(m, ",acl=0x%x", nfss->acl_bitmask); > show_sessions(m, nfss); > show_pnfs(m, nfss); > + show_lease(m, nfss); > } > #endif > > -- > 1.8.3.1 > I didn't look closely at the patch content, but IMO this is a good observability enhancement. -- Chuck Lever