cifs: smbd: Don't destroy transport on RDMA disconnect
[sfrench/cifs-2.6.git] / fs / cifs / cifs_debug.c
index e92a2fee3c577bd7fc8c63e3e10edf079ca97686..5ff0b3d4c48401de533b9ede9569b773843dcd6c 100644 (file)
@@ -115,7 +115,12 @@ static void cifs_debug_tcon(struct seq_file *m, struct cifs_tcon *tcon)
                seq_puts(m, " type: CDROM ");
        else
                seq_printf(m, " type: %d ", dev_type);
-       if (tcon->seal)
+
+       seq_printf(m, "Serial Number: 0x%x", tcon->vol_serial_number);
+
+       if ((tcon->seal) ||
+           (tcon->ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA) ||
+           (tcon->share_flags & SHI1005_FLAGS_ENCRYPT_DATA))
                seq_printf(m, " Encrypted");
        if (tcon->nocase)
                seq_printf(m, " nocase");
@@ -307,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,
@@ -371,6 +374,10 @@ skip_rdma:
                                atomic_read(&server->in_send),
                                atomic_read(&server->num_waiters));
 #endif
+                       if (ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA)
+                               seq_puts(m, " encrypted");
+                       if (ses->sign)
+                               seq_puts(m, " signed");
 
                        seq_puts(m, "\n\tShares:");
                        j = 0;
@@ -453,8 +460,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,
@@ -522,9 +534,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 */