OSDN Git Service

smb3: add dynamic tracepoint for timeout waiting for credits
authorSteve French <stfrench@microsoft.com>
Sun, 10 Mar 2019 02:29:55 +0000 (20:29 -0600)
committerSteve French <stfrench@microsoft.com>
Fri, 15 Mar 2019 00:32:35 +0000 (19:32 -0500)
To help debug credit starvation problems where we timeout
waiting for server to grant the client credits.

Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
fs/cifs/trace.h
fs/cifs/transport.c

index d8b049a..c78e96c 100644 (file)
@@ -713,6 +713,7 @@ DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
        TP_ARGS(currmid, hostname, credits))
 
 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
+DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
 
 #endif /* _CIFS_TRACE_H */
 
index b3d0401..8731cfa 100644 (file)
@@ -527,6 +527,8 @@ wait_for_free_credits(struct TCP_Server_Info *server, const int num_credits,
                                has_credits(server, credits, num_credits), t);
                        cifs_num_waiters_dec(server);
                        if (!rc) {
+                               trace_smb3_credit_timeout(server->CurrentMid,
+                                       server->hostname, num_credits);
                                cifs_dbg(VFS, "wait timed out after %d ms\n",
                                         timeout);
                                return -ENOTSUPP;
@@ -565,6 +567,9 @@ wait_for_free_credits(struct TCP_Server_Info *server, const int num_credits,
                                        t);
                                cifs_num_waiters_dec(server);
                                if (!rc) {
+                                       trace_smb3_credit_timeout(
+                                               server->CurrentMid,
+                                               server->hostname, num_credits);
                                        cifs_dbg(VFS, "wait timed out after %d ms\n",
                                                 timeout);
                                        return -ENOTSUPP;