Patch "smb3: show beginning time for per share stats" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    smb3: show beginning time for per share stats

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     smb3-show-beginning-time-for-per-share-stats.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 43cdbaaecb9fa7b942ba18cc71c5effc600b95cf
Author: Steve French <stfrench@xxxxxxxxxxxxx>
Date:   Wed Jan 17 16:15:18 2024 -0600

    smb3: show beginning time for per share stats
    
    [ Upstream commit d8392c203e84ec7daa2afecdb8f4db69bc32416a ]
    
    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@xxxxxxxxxxxxx>
    Reviewed-by: Bharath SM <bharathsm@xxxxxxxxxxxxx>
    Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
    Stable-dep-of: 062a7f0ff46e ("smb: client: guarantee refcounted children from parent session")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/smb/client/cifs_debug.c b/fs/smb/client/cifs_debug.c
index 6c85edb8635d0..c53d516459fc4 100644
--- a/fs/smb/client/cifs_debug.c
+++ b/fs/smb/client/cifs_debug.c
@@ -663,6 +663,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);
@@ -743,8 +744,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);
 			}
diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h
index a878b1e5aa313..01d7031194671 100644
--- a/fs/smb/client/cifsglob.h
+++ b/fs/smb/client/cifsglob.h
@@ -1208,6 +1208,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;
diff --git a/fs/smb/client/misc.c b/fs/smb/client/misc.c
index ef573e3f8e52a..51413cb00e199 100644
--- a/fs/smb/client/misc.c
+++ b/fs/smb/client/misc.c
@@ -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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux