mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-23 16:53:58 -05:00
smb3: show beginning time for per share stats
In analyzing problems, one missing piece of debug data is when the mount occurred. A related problem is when collecting stats we don't know the period of time the stats covered, ie when this set of stats for the tcon started to be collected. To make debugging easier track the stats begin time. Set it when the mount occurred at mount time, and reset it to current time whenever stats are reset. For example, ... 1) \\localhost\test SMBs: 14 since 2024-01-17 22:17:30 UTC Bytes read: 0 Bytes written: 0 Open files: 0 total (local), 0 open on server TreeConnects: 1 total 0 failed TreeDisconnects: 0 total 0 failed ... 2) \\localhost\scratch SMBs: 24 since 2024-01-17 22:16:04 UTC Bytes read: 0 Bytes written: 0 Open files: 0 total (local), 0 open on server TreeConnects: 1 total 0 failed TreeDisconnects: 0 total 0 failed ... Note the time "since ... UTC" is now displayed in /proc/fs/cifs/Stats for each share that is mounted. Suggested-by: Shyam Prasad N <sprasad@microsoft.com> Reviewed-by: Bharath SM <bharathsm@microsoft.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
8ca5d2641b
commit
d8392c203e
3 changed files with 6 additions and 2 deletions
|
@ -659,6 +659,7 @@ static ssize_t cifs_stats_proc_write(struct file *file,
|
|||
spin_lock(&tcon->stat_lock);
|
||||
tcon->bytes_read = 0;
|
||||
tcon->bytes_written = 0;
|
||||
tcon->stats_from_time = ktime_get_real_seconds();
|
||||
spin_unlock(&tcon->stat_lock);
|
||||
if (server->ops->clear_stats)
|
||||
server->ops->clear_stats(tcon);
|
||||
|
@ -737,8 +738,9 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v)
|
|||
seq_printf(m, "\n%d) %s", i, tcon->tree_name);
|
||||
if (tcon->need_reconnect)
|
||||
seq_puts(m, "\tDISCONNECTED ");
|
||||
seq_printf(m, "\nSMBs: %d",
|
||||
atomic_read(&tcon->num_smbs_sent));
|
||||
seq_printf(m, "\nSMBs: %d since %ptTs UTC",
|
||||
atomic_read(&tcon->num_smbs_sent),
|
||||
&tcon->stats_from_time);
|
||||
if (server->ops->print_stats)
|
||||
server->ops->print_stats(m, tcon);
|
||||
}
|
||||
|
|
|
@ -1207,6 +1207,7 @@ struct cifs_tcon {
|
|||
__u64 bytes_read;
|
||||
__u64 bytes_written;
|
||||
spinlock_t stat_lock; /* protects the two fields above */
|
||||
time64_t stats_from_time;
|
||||
FILE_SYSTEM_DEVICE_INFO fsDevInfo;
|
||||
FILE_SYSTEM_ATTRIBUTE_INFO fsAttrInfo; /* ok if fs name truncated */
|
||||
FILE_SYSTEM_UNIX_INFO fsUnixInfo;
|
||||
|
|
|
@ -140,6 +140,7 @@ tcon_info_alloc(bool dir_leases_enabled)
|
|||
spin_lock_init(&ret_buf->stat_lock);
|
||||
atomic_set(&ret_buf->num_local_opens, 0);
|
||||
atomic_set(&ret_buf->num_remote_opens, 0);
|
||||
ret_buf->stats_from_time = ktime_get_real_seconds();
|
||||
#ifdef CONFIG_CIFS_DFS_UPCALL
|
||||
INIT_LIST_HEAD(&ret_buf->dfs_ses_list);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue