cifs: dump pending mids for all channels in DebugData
Currently, we only dump the pending mid information only on the primary channel in /proc/fs/cifs/DebugData. If multichannel is active, we do not print the pending MID list on secondary channels. This change will dump the pending mids for all the channels based on server->conn_id. Signed-off-by: Shyam Prasad N <sprasad@microsoft.com> Reviewed-by: Paulo Alcantara (SUSE) <pc@manguebit.com> Cc: stable@vger.kernel.org Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
896cd316b8
commit
d12bc6d26f
@ -216,6 +216,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct mid_q_entry *mid_entry;
|
||||
struct TCP_Server_Info *server;
|
||||
struct TCP_Server_Info *chan_server;
|
||||
struct cifs_ses *ses;
|
||||
struct cifs_tcon *tcon;
|
||||
struct cifs_server_iface *iface;
|
||||
@ -474,23 +475,35 @@ skip_rdma:
|
||||
seq_puts(m, "\t\t[CONNECTED]\n");
|
||||
}
|
||||
spin_unlock(&ses->iface_lock);
|
||||
|
||||
seq_puts(m, "\n\n\tMIDs: ");
|
||||
spin_lock(&ses->chan_lock);
|
||||
for (j = 0; j < ses->chan_count; j++) {
|
||||
chan_server = ses->chans[j].server;
|
||||
if (!chan_server)
|
||||
continue;
|
||||
|
||||
if (list_empty(&chan_server->pending_mid_q))
|
||||
continue;
|
||||
|
||||
seq_printf(m, "\n\tServer ConnectionId: 0x%llx",
|
||||
chan_server->conn_id);
|
||||
spin_lock(&chan_server->mid_lock);
|
||||
list_for_each_entry(mid_entry, &chan_server->pending_mid_q, qhead) {
|
||||
seq_printf(m, "\n\t\tState: %d com: %d pid: %d cbdata: %p mid %llu",
|
||||
mid_entry->mid_state,
|
||||
le16_to_cpu(mid_entry->command),
|
||||
mid_entry->pid,
|
||||
mid_entry->callback_data,
|
||||
mid_entry->mid);
|
||||
}
|
||||
spin_unlock(&chan_server->mid_lock);
|
||||
}
|
||||
spin_unlock(&ses->chan_lock);
|
||||
seq_puts(m, "\n--\n");
|
||||
}
|
||||
if (i == 0)
|
||||
seq_printf(m, "\n\t\t[NONE]");
|
||||
|
||||
seq_puts(m, "\n\n\tMIDs: ");
|
||||
spin_lock(&server->mid_lock);
|
||||
list_for_each_entry(mid_entry, &server->pending_mid_q, qhead) {
|
||||
seq_printf(m, "\n\tState: %d com: %d pid:"
|
||||
" %d cbdata: %p mid %llu\n",
|
||||
mid_entry->mid_state,
|
||||
le16_to_cpu(mid_entry->command),
|
||||
mid_entry->pid,
|
||||
mid_entry->callback_data,
|
||||
mid_entry->mid);
|
||||
}
|
||||
spin_unlock(&server->mid_lock);
|
||||
seq_printf(m, "\n--\n");
|
||||
}
|
||||
if (c == 0)
|
||||
seq_printf(m, "\n\t[NONE]");
|
||||
|
Loading…
Reference in New Issue
Block a user