diff options
author | Chuck Lever <cel@netapp.com> | 2006-03-20 13:44:15 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-20 13:44:15 -0500 |
commit | 67ec9f46b889bfb1ab0a4e307d53929d5f0692bf (patch) | |
tree | fe9cb38a7ead5bf4894b22bdc10af5d513695781 | |
parent | 006ea73e5fa82915d0ac7a3f15ee7c688433236d (diff) |
NFS: report how long an NFS file system has been mounted
Add a field in nfs_server to record a timestamp when a mount succeeds.
Report the number of seconds the file system has been mounted via
nfs_show_stats().
Test plan:
Mount an NFS file system, watch the mountstats reports and compare with
clock time.
Signed-off-by: Chuck Lever <cel@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r-- | fs/nfs/inode.c | 5 | ||||
-rw-r--r-- | include/linux/nfs_fs_sb.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 8ee74111e519..1b2d782374b5 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -299,6 +299,9 @@ nfs_sb_init(struct super_block *sb, rpc_authflavor_t authflavor) | |||
299 | goto out_no_root; | 299 | goto out_no_root; |
300 | } | 300 | } |
301 | 301 | ||
302 | /* mount time stamp, in seconds */ | ||
303 | server->mount_time = jiffies; | ||
304 | |||
302 | /* Get some general file system info */ | 305 | /* Get some general file system info */ |
303 | if (server->namelen == 0 && | 306 | if (server->namelen == 0 && |
304 | server->rpc_ops->pathconf(server, &server->fh, &pathinfo) >= 0) | 307 | server->rpc_ops->pathconf(server, &server->fh, &pathinfo) >= 0) |
@@ -674,6 +677,8 @@ static int nfs_show_stats(struct seq_file *m, struct vfsmount *mnt) | |||
674 | seq_puts(m, mnt->mnt_sb->s_flags & MS_NODIRATIME ? ",nodiratime" : ""); | 677 | seq_puts(m, mnt->mnt_sb->s_flags & MS_NODIRATIME ? ",nodiratime" : ""); |
675 | nfs_show_mount_options(m, nfss, 1); | 678 | nfs_show_mount_options(m, nfss, 1); |
676 | 679 | ||
680 | seq_printf(m, "\n\tage:\t%lu", (jiffies - nfss->mount_time) / HZ); | ||
681 | |||
677 | seq_printf(m, "\n\tcaps:\t"); | 682 | seq_printf(m, "\n\tcaps:\t"); |
678 | seq_printf(m, "caps=0x%x", nfss->caps); | 683 | seq_printf(m, "caps=0x%x", nfss->caps); |
679 | seq_printf(m, ",wtmult=%d", nfss->wtmult); | 684 | seq_printf(m, ",wtmult=%d", nfss->wtmult); |
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index d65e69a06b72..65dec21af774 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h | |||
@@ -35,6 +35,7 @@ struct nfs_server { | |||
35 | char * hostname; /* remote hostname */ | 35 | char * hostname; /* remote hostname */ |
36 | struct nfs_fh fh; | 36 | struct nfs_fh fh; |
37 | struct sockaddr_in addr; | 37 | struct sockaddr_in addr; |
38 | unsigned long mount_time; /* when this fs was mounted */ | ||
38 | #ifdef CONFIG_NFS_V4 | 39 | #ifdef CONFIG_NFS_V4 |
39 | /* Our own IP address, as a null-terminated string. | 40 | /* Our own IP address, as a null-terminated string. |
40 | * This is used to generate the clientid, and the callback address. | 41 | * This is used to generate the clientid, and the callback address. |