diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-08 13:06:18 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-08 13:06:18 -0700 |
commit | 78d9affbb0e79d48fd82b34ef9cd673a7c86d6f2 (patch) | |
tree | 752ce8730bf570f4e83d13e163630c1e0f1b219b /fs/cifs/cifs_debug.c | |
parent | 8c79f4cd441b27df6cadd11b70a50e06b3b3a2bf (diff) | |
parent | cb4f7bf6be10b35510e6b2e60f80d85ebc22a578 (diff) | |
download | linux-78d9affbb0e79d48fd82b34ef9cd673a7c86d6f2.tar.bz2 |
Merge tag '5.2-smb3' of git://git.samba.org/sfrench/cifs-2.6
Pull cifs fixes from Steve French:
"CIFS/SMB3 changes:
- three fixes for stable
- add fiemap support
- improve zero-range support
- various RDMA (smb direct fixes)
I have an additional set of fixes (for improved handling of sparse
files, mode bits, POSIX extensions) that are still being tested that
are not included in this pull request but I expect to send in the next
week"
* tag '5.2-smb3' of git://git.samba.org/sfrench/cifs-2.6: (29 commits)
cifs: update module internal version number
SMB3: Clean up query symlink when reparse point
cifs: fix strcat buffer overflow and reduce raciness in smb21_set_oplock_level()
Negotiate and save preferred compression algorithms
cifs: rename and clarify CIFS_ASYNC_OP and CIFS_NO_RESP
cifs: fix credits leak for SMB1 oplock breaks
smb3: Add protocol structs for change notify support
cifs: fix smb3_zero_range for Azure
cifs: zero-range does not require the file is sparse
Add new flag on SMB3.1.1 read
cifs: add fiemap support
SMB3: Add defines for new negotiate contexts
cifs: fix bi-directional fsctl passthrough calls
cifs: smbd: take an array of reqeusts when sending upper layer data
SMB3: Add handling for different FSCTL access flags
cifs: Add support for FSCTL passthrough that write data to the server
cifs: remove superfluous inode_lock in cifs_{strict_}fsync
cifs: Call MID callback before destroying transport
cifs: smbd: Retry on memory registration failure
cifs: smbd: Indicate to retry on transport sending failure
...
Diffstat (limited to 'fs/cifs/cifs_debug.c')
-rw-r--r-- | fs/cifs/cifs_debug.c | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c index 13c1288b04a7..6a69f11aacf7 100644 --- a/fs/cifs/cifs_debug.c +++ b/fs/cifs/cifs_debug.c @@ -312,12 +312,10 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v) atomic_read(&server->smbd_conn->send_credits), atomic_read(&server->smbd_conn->receive_credits), server->smbd_conn->receive_credit_target); - seq_printf(m, "\nPending send_pending: %x send_payload_pending:" - " %x smbd_send_pending: %x smbd_recv_pending: %x", + seq_printf(m, "\nPending send_pending: %x " + "send_payload_pending: %x", atomic_read(&server->smbd_conn->send_pending), - atomic_read(&server->smbd_conn->send_payload_pending), - server->smbd_conn->smbd_send_pending, - server->smbd_conn->smbd_recv_pending); + atomic_read(&server->smbd_conn->send_payload_pending)); seq_printf(m, "\nReceive buffers count_receive_queue: %x " "count_empty_packet_queue: %x", server->smbd_conn->count_receive_queue, @@ -334,6 +332,12 @@ skip_rdma: #endif seq_printf(m, "\nNumber of credits: %d Dialect 0x%x", server->credits, server->dialect); + if (server->compress_algorithm == SMB3_COMPRESS_LZNT1) + seq_printf(m, " COMPRESS_LZNT1"); + else if (server->compress_algorithm == SMB3_COMPRESS_LZ77) + seq_printf(m, " COMPRESS_LZ77"); + else if (server->compress_algorithm == SMB3_COMPRESS_LZ77_HUFF) + seq_printf(m, " COMPRESS_LZ77_HUFF"); if (server->sign) seq_printf(m, " signed"); if (server->posix_ext_supported) @@ -462,8 +466,13 @@ static ssize_t cifs_stats_proc_write(struct file *file, server = list_entry(tmp1, struct TCP_Server_Info, tcp_ses_list); #ifdef CONFIG_CIFS_STATS2 - for (i = 0; i < NUMBER_OF_SMB2_COMMANDS; i++) + for (i = 0; i < NUMBER_OF_SMB2_COMMANDS; i++) { + atomic_set(&server->num_cmds[i], 0); atomic_set(&server->smb2slowcmd[i], 0); + server->time_per_cmd[i] = 0; + server->slowest_cmd[i] = 0; + server->fastest_cmd[0] = 0; + } #endif /* CONFIG_CIFS_STATS2 */ list_for_each(tmp2, &server->smb_ses_list) { ses = list_entry(tmp2, struct cifs_ses, @@ -531,9 +540,19 @@ static int cifs_stats_proc_show(struct seq_file *m, void *v) server = list_entry(tmp1, struct TCP_Server_Info, tcp_ses_list); #ifdef CONFIG_CIFS_STATS2 + seq_puts(m, "\nTotal time spent processing by command. Time "); + seq_printf(m, "units are jiffies (%d per second)\n", HZ); + seq_puts(m, " SMB3 CMD\tNumber\tTotal Time\tFastest\tSlowest\n"); + seq_puts(m, " --------\t------\t----------\t-------\t-------\n"); + for (j = 0; j < NUMBER_OF_SMB2_COMMANDS; j++) + seq_printf(m, " %d\t\t%d\t%llu\t\t%u\t%u\n", j, + atomic_read(&server->num_cmds[j]), + server->time_per_cmd[j], + server->fastest_cmd[j], + server->slowest_cmd[j]); for (j = 0; j < NUMBER_OF_SMB2_COMMANDS; j++) if (atomic_read(&server->smb2slowcmd[j])) - seq_printf(m, "%d slow responses from %s for command %d\n", + seq_printf(m, " %d slow responses from %s for command %d\n", atomic_read(&server->smb2slowcmd[j]), server->hostname, j); #endif /* STATS2 */ |