|
Jiri Slaby |
7a187a |
From: Shyam Prasad N <sprasad@microsoft.com>
|
|
Jiri Slaby |
7a187a |
Date: Mon, 13 Mar 2023 11:09:12 +0000
|
|
Jiri Slaby |
7a187a |
Subject: [PATCH] cifs: dump pending mids for all channels in DebugData
|
|
Jiri Slaby |
7a187a |
References: bsc#1012628
|
|
Jiri Slaby |
7a187a |
Patch-mainline: 6.2.9
|
|
Jiri Slaby |
7a187a |
Git-commit: d12bc6d26f92c51b28e8f4a146ffcc630b688198
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
commit d12bc6d26f92c51b28e8f4a146ffcc630b688198 upstream.
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
Currently, we only dump the pending mid information only
|
|
Jiri Slaby |
7a187a |
on the primary channel in /proc/fs/cifs/DebugData.
|
|
Jiri Slaby |
7a187a |
If multichannel is active, we do not print the pending MID
|
|
Jiri Slaby |
7a187a |
list on secondary channels.
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
This change will dump the pending mids for all the channels
|
|
Jiri Slaby |
7a187a |
based on server->conn_id.
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
|
|
Jiri Slaby |
7a187a |
Reviewed-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
|
|
Jiri Slaby |
7a187a |
Cc: stable@vger.kernel.org
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Steve French <stfrench@microsoft.com>
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
|
Jiri Slaby |
7a187a |
---
|
|
Jiri Slaby |
7a187a |
fs/cifs/cifs_debug.c | 41 +++++++++++++++++++++++++++--------------
|
|
Jiri Slaby |
7a187a |
1 file changed, 27 insertions(+), 14 deletions(-)
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
|
|
Jiri Slaby |
7a187a |
index d9876bd3..325b5bd4 100644
|
|
Jiri Slaby |
7a187a |
--- a/fs/cifs/cifs_debug.c
|
|
Jiri Slaby |
7a187a |
+++ b/fs/cifs/cifs_debug.c
|
|
Jiri Slaby |
7a187a |
@@ -215,6 +215,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
|
|
Jiri Slaby |
7a187a |
{
|
|
Jiri Slaby |
7a187a |
struct mid_q_entry *mid_entry;
|
|
Jiri Slaby |
7a187a |
struct TCP_Server_Info *server;
|
|
Jiri Slaby |
7a187a |
+ struct TCP_Server_Info *chan_server;
|
|
Jiri Slaby |
7a187a |
struct cifs_ses *ses;
|
|
Jiri Slaby |
7a187a |
struct cifs_tcon *tcon;
|
|
Jiri Slaby |
7a187a |
struct cifs_server_iface *iface;
|
|
Jiri Slaby |
7a187a |
@@ -471,23 +472,35 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
|
|
Jiri Slaby |
7a187a |
seq_puts(m, "\t\t[CONNECTED]\n");
|
|
Jiri Slaby |
7a187a |
}
|
|
Jiri Slaby |
7a187a |
spin_unlock(&ses->iface_lock);
|
|
Jiri Slaby |
7a187a |
+
|
|
Jiri Slaby |
7a187a |
+ seq_puts(m, "\n\n\tMIDs: ");
|
|
Jiri Slaby |
7a187a |
+ spin_lock(&ses->chan_lock);
|
|
Jiri Slaby |
7a187a |
+ for (j = 0; j < ses->chan_count; j++) {
|
|
Jiri Slaby |
7a187a |
+ chan_server = ses->chans[j].server;
|
|
Jiri Slaby |
7a187a |
+ if (!chan_server)
|
|
Jiri Slaby |
7a187a |
+ continue;
|
|
Jiri Slaby |
7a187a |
+
|
|
Jiri Slaby |
7a187a |
+ if (list_empty(&chan_server->pending_mid_q))
|
|
Jiri Slaby |
7a187a |
+ continue;
|
|
Jiri Slaby |
7a187a |
+
|
|
Jiri Slaby |
7a187a |
+ seq_printf(m, "\n\tServer ConnectionId: 0x%llx",
|
|
Jiri Slaby |
7a187a |
+ chan_server->conn_id);
|
|
Jiri Slaby |
7a187a |
+ spin_lock(&chan_server->mid_lock);
|
|
Jiri Slaby |
7a187a |
+ list_for_each_entry(mid_entry, &chan_server->pending_mid_q, qhead) {
|
|
Jiri Slaby |
7a187a |
+ seq_printf(m, "\n\t\tState: %d com: %d pid: %d cbdata: %p mid %llu",
|
|
Jiri Slaby |
7a187a |
+ mid_entry->mid_state,
|
|
Jiri Slaby |
7a187a |
+ le16_to_cpu(mid_entry->command),
|
|
Jiri Slaby |
7a187a |
+ mid_entry->pid,
|
|
Jiri Slaby |
7a187a |
+ mid_entry->callback_data,
|
|
Jiri Slaby |
7a187a |
+ mid_entry->mid);
|
|
Jiri Slaby |
7a187a |
+ }
|
|
Jiri Slaby |
7a187a |
+ spin_unlock(&chan_server->mid_lock);
|
|
Jiri Slaby |
7a187a |
+ }
|
|
Jiri Slaby |
7a187a |
+ spin_unlock(&ses->chan_lock);
|
|
Jiri Slaby |
7a187a |
+ seq_puts(m, "\n--\n");
|
|
Jiri Slaby |
7a187a |
}
|
|
Jiri Slaby |
7a187a |
if (i == 0)
|
|
Jiri Slaby |
7a187a |
seq_printf(m, "\n\t\t[NONE]");
|
|
Jiri Slaby |
7a187a |
-
|
|
Jiri Slaby |
7a187a |
- seq_puts(m, "\n\n\tMIDs: ");
|
|
Jiri Slaby |
7a187a |
- spin_lock(&server->mid_lock);
|
|
Jiri Slaby |
7a187a |
- list_for_each_entry(mid_entry, &server->pending_mid_q, qhead) {
|
|
Jiri Slaby |
7a187a |
- seq_printf(m, "\n\tState: %d com: %d pid:"
|
|
Jiri Slaby |
7a187a |
- " %d cbdata: %p mid %llu\n",
|
|
Jiri Slaby |
7a187a |
- mid_entry->mid_state,
|
|
Jiri Slaby |
7a187a |
- le16_to_cpu(mid_entry->command),
|
|
Jiri Slaby |
7a187a |
- mid_entry->pid,
|
|
Jiri Slaby |
7a187a |
- mid_entry->callback_data,
|
|
Jiri Slaby |
7a187a |
- mid_entry->mid);
|
|
Jiri Slaby |
7a187a |
- }
|
|
Jiri Slaby |
7a187a |
- spin_unlock(&server->mid_lock);
|
|
Jiri Slaby |
7a187a |
- seq_printf(m, "\n--\n");
|
|
Jiri Slaby |
7a187a |
}
|
|
Jiri Slaby |
7a187a |
if (c == 0)
|
|
Jiri Slaby |
7a187a |
seq_printf(m, "\n\t[NONE]");
|
|
Jiri Slaby |
7a187a |
--
|
|
Jiri Slaby |
7a187a |
2.35.3
|
|
Jiri Slaby |
7a187a |
|