smb3: remove per-session operations from per-tree connection stats
authorSteve French <stfrench@microsoft.com>
Fri, 27 Jul 2018 20:14:04 +0000 (15:14 -0500)
committerSteve French <stfrench@microsoft.com>
Tue, 7 Aug 2018 19:15:56 +0000 (14:15 -0500)
Remove counters from the per-tree connection /proc/fs/cifs/Stats
output that will always be zero (since they are not per-tcon ops)
ie SMB3 Negotiate, SessionSetup, Logoff, Echo, Cancel.

Also clarify "sent" to be "total" per-Pavel's suggestion
(since this "total" includes total for all operations that we try to
send whether or not succesffully sent). Sample output below:

Resources in use
CIFS Session: 1
Share (unique mount targets): 2
SMB Request/Response Buffer: 1 Pool size: 5
SMB Small Req/Resp Buffer: 1 Pool size: 30
Operations (MIDs): 0

1 session 2 share reconnects
Total vfs operations: 23 maximum at one time: 2

1) \\localhost\test
SMBs: 45
TreeConnects: 2 total 0 failed
TreeDisconnects: 0 total 0 failed
Creates: 13 total 2 failed
Closes: 9 total 0 failed
Flushes: 0 total 0 failed
Reads: 0 total 0 failed
Writes: 1 total 0 failed
Locks: 0 total 0 failed
IOCTLs: 3 total 1 failed
QueryDirectories: 4 total 2 failed
ChangeNotifies: 0 total 0 failed
QueryInfos: 10 total 0 failed
SetInfos: 3 total 0 failed
OplockBreaks: 0 sent 0 failed

Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
fs/cifs/smb2ops.c

index 4ce72055ca0ad2e620ce91bf130e3f9a8fbe926b..dad6dc7632004ceafc4034f133e4caf9595ea482 100644 (file)
@@ -927,58 +927,48 @@ smb2_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
 #ifdef CONFIG_CIFS_STATS
        atomic_t *sent = tcon->stats.smb2_stats.smb2_com_sent;
        atomic_t *failed = tcon->stats.smb2_stats.smb2_com_failed;
-       seq_printf(m, "\nNegotiates: %d sent %d failed",
-                  atomic_read(&sent[SMB2_NEGOTIATE_HE]),
-                  atomic_read(&failed[SMB2_NEGOTIATE_HE]));
-       seq_printf(m, "\nSessionSetups: %d sent %d failed",
-                  atomic_read(&sent[SMB2_SESSION_SETUP_HE]),
-                  atomic_read(&failed[SMB2_SESSION_SETUP_HE]));
-       seq_printf(m, "\nLogoffs: %d sent %d failed",
-                  atomic_read(&sent[SMB2_LOGOFF_HE]),
-                  atomic_read(&failed[SMB2_LOGOFF_HE]));
-       seq_printf(m, "\nTreeConnects: %d sent %d failed",
+
+       /*
+        *  Can't display SMB2_NEGOTIATE, SESSION_SETUP, LOGOFF, CANCEL and ECHO
+        *  totals (requests sent) since those SMBs are per-session not per tcon
+        */
+       seq_printf(m, "\nTreeConnects: %d total %d failed",
                   atomic_read(&sent[SMB2_TREE_CONNECT_HE]),
                   atomic_read(&failed[SMB2_TREE_CONNECT_HE]));
-       seq_printf(m, "\nTreeDisconnects: %d sent %d failed",
+       seq_printf(m, "\nTreeDisconnects: %d total %d failed",
                   atomic_read(&sent[SMB2_TREE_DISCONNECT_HE]),
                   atomic_read(&failed[SMB2_TREE_DISCONNECT_HE]));
-       seq_printf(m, "\nCreates: %d sent %d failed",
+       seq_printf(m, "\nCreates: %d total %d failed",
                   atomic_read(&sent[SMB2_CREATE_HE]),
                   atomic_read(&failed[SMB2_CREATE_HE]));
-       seq_printf(m, "\nCloses: %d sent %d failed",
+       seq_printf(m, "\nCloses: %d total %d failed",
                   atomic_read(&sent[SMB2_CLOSE_HE]),
                   atomic_read(&failed[SMB2_CLOSE_HE]));
-       seq_printf(m, "\nFlushes: %d sent %d failed",
+       seq_printf(m, "\nFlushes: %d total %d failed",
                   atomic_read(&sent[SMB2_FLUSH_HE]),
                   atomic_read(&failed[SMB2_FLUSH_HE]));
-       seq_printf(m, "\nReads: %d sent %d failed",
+       seq_printf(m, "\nReads: %d total %d failed",
                   atomic_read(&sent[SMB2_READ_HE]),
                   atomic_read(&failed[SMB2_READ_HE]));
-       seq_printf(m, "\nWrites: %d sent %d failed",
+       seq_printf(m, "\nWrites: %d total %d failed",
                   atomic_read(&sent[SMB2_WRITE_HE]),
                   atomic_read(&failed[SMB2_WRITE_HE]));
-       seq_printf(m, "\nLocks: %d sent %d failed",
+       seq_printf(m, "\nLocks: %d total %d failed",
                   atomic_read(&sent[SMB2_LOCK_HE]),
                   atomic_read(&failed[SMB2_LOCK_HE]));
-       seq_printf(m, "\nIOCTLs: %d sent %d failed",
+       seq_printf(m, "\nIOCTLs: %d total %d failed",
                   atomic_read(&sent[SMB2_IOCTL_HE]),
                   atomic_read(&failed[SMB2_IOCTL_HE]));
-       seq_printf(m, "\nCancels: %d sent %d failed",
-                  atomic_read(&sent[SMB2_CANCEL_HE]),
-                  atomic_read(&failed[SMB2_CANCEL_HE]));
-       seq_printf(m, "\nEchos: %d sent %d failed",
-                  atomic_read(&sent[SMB2_ECHO_HE]),
-                  atomic_read(&failed[SMB2_ECHO_HE]));
-       seq_printf(m, "\nQueryDirectories: %d sent %d failed",
+       seq_printf(m, "\nQueryDirectories: %d total %d failed",
                   atomic_read(&sent[SMB2_QUERY_DIRECTORY_HE]),
                   atomic_read(&failed[SMB2_QUERY_DIRECTORY_HE]));
-       seq_printf(m, "\nChangeNotifies: %d sent %d failed",
+       seq_printf(m, "\nChangeNotifies: %d total %d failed",
                   atomic_read(&sent[SMB2_CHANGE_NOTIFY_HE]),
                   atomic_read(&failed[SMB2_CHANGE_NOTIFY_HE]));
-       seq_printf(m, "\nQueryInfos: %d sent %d failed",
+       seq_printf(m, "\nQueryInfos: %d total %d failed",
                   atomic_read(&sent[SMB2_QUERY_INFO_HE]),
                   atomic_read(&failed[SMB2_QUERY_INFO_HE]));
-       seq_printf(m, "\nSetInfos: %d sent %d failed",
+       seq_printf(m, "\nSetInfos: %d total %d failed",
                   atomic_read(&sent[SMB2_SET_INFO_HE]),
                   atomic_read(&failed[SMB2_SET_INFO_HE]));
        seq_printf(m, "\nOplockBreaks: %d sent %d failed",