mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
smb3: add dynamic trace points for socket connection
In debugging user problems with ip address/DNS issues with smb3 mounts, we sometimes needed additional info on the hostname and ip address. Add two tracepoints, one to show socket connection success and one for failures to connect to the socket. Sample output: mount.cifs-14551 [005] ..... 7636.547906: smb3_connect_done: conn_id=0x1 server=localhost addr=127.0.0.1:445 mount.cifs-14558 [004] ..... 7642.405413: smb3_connect_done: conn_id=0x2 server=smfrench.file.core.windows.net addr=52.239.158.232:445 mount.cifs-14741 [005] ..... 7818.490716: smb3_connect_done: conn_id=0x3 server=::1 addr=[::1]:445/0%0 mount.cifs-14810 [000] ..... 7966.380337: smb3_connect_err: rc=-101 conn_id=0x4 server=::2 addr=[::2]:445/0%0 mount.cifs-14810 [000] ..... 7966.380356: smb3_connect_err: rc=-101 conn_id=0x4 server=::2 addr=[::2]:139/0%0 mount.cifs-14818 [003] ..... 7986.771992: smb3_connect_done: conn_id=0x5 server=127.0.0.9 addr=127.0.0.9:445 mount.cifs-14825 [008] ..... 8008.178109: smb3_connect_err: rc=-115 conn_id=0x6 server=124.23.0.9 addr=124.23.0.9:445 mount.cifs-14825 [008] ..... 8013.298085: smb3_connect_err: rc=-115 conn_id=0x6 server=124.23.0.9 addr=124.23.0.9:139 cifsd-14553 [006] ..... 8036.735615: smb3_reconnect: conn_id=0x1 server=localhost current_mid=32 cifsd-14743 [010] ..... 8036.735644: smb3_reconnect: conn_id=0x3 server=::1 current_mid=29 cifsd-14743 [010] ..... 8039.921740: smb3_connect_err: rc=-111 conn_id=0x3 server=::1 addr=[::1]:445/0%0 cifsd-14553 [008] ..... 8042.993894: smb3_connect_err: rc=-111 conn_id=0x1 server=localhost addr=127.0.0.1:445 cifsd-14743 [010] ..... 8042.993894: smb3_connect_err: rc=-111 conn_id=0x3 server=::1 addr=[::1]:445/0%0 cifsd-14553 [008] ..... 8046.065824: smb3_connect_err: rc=-111 conn_id=0x1 server=localhost addr=127.0.0.1:445 cifsd-14743 [010] ..... 8046.065824: smb3_connect_err: rc=-111 conn_id=0x3 server=::1 addr=[::1]:445/0%0 cifsd-14553 [008] ..... 8049.137796: smb3_connect_done: conn_id=0x1 server=localhost addr=127.0.0.1:445 cifsd-14743 [010] ..... 8049.137796: smb3_connect_done: conn_id=0x3 server=::1 addr=[::1]:445/0%0 Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
c462870bf8
commit
d7171cd1ac
@ -2649,11 +2649,12 @@ generic_ip_connect(struct TCP_Server_Info *server)
|
||||
rc = 0;
|
||||
if (rc < 0) {
|
||||
cifs_dbg(FYI, "Error %d connecting to server\n", rc);
|
||||
trace_smb3_connect_err(server->hostname, server->conn_id, &server->dstaddr, rc);
|
||||
sock_release(socket);
|
||||
server->ssocket = NULL;
|
||||
return rc;
|
||||
}
|
||||
|
||||
trace_smb3_connect_done(server->hostname, server->conn_id, &server->dstaddr);
|
||||
if (sport == htons(RFC1001_PORT))
|
||||
rc = ip_rfc1001_connect(server);
|
||||
|
||||
|
@ -11,6 +11,8 @@
|
||||
#define _CIFS_TRACE_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
#include <linux/net.h>
|
||||
#include <linux/inet.h>
|
||||
|
||||
/*
|
||||
* Please use this 3-part article as a reference for writing new tracepoints:
|
||||
@ -854,6 +856,75 @@ DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \
|
||||
|
||||
DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_connect_class,
|
||||
TP_PROTO(char *hostname,
|
||||
__u64 conn_id,
|
||||
const struct __kernel_sockaddr_storage *dst_addr),
|
||||
TP_ARGS(hostname, conn_id, dst_addr),
|
||||
TP_STRUCT__entry(
|
||||
__string(hostname, hostname)
|
||||
__field(__u64, conn_id)
|
||||
__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
|
||||
),
|
||||
TP_fast_assign(
|
||||
struct sockaddr_storage *pss = NULL;
|
||||
|
||||
__entry->conn_id = conn_id;
|
||||
pss = (struct sockaddr_storage *)__entry->dst_addr;
|
||||
*pss = *dst_addr;
|
||||
__assign_str(hostname, hostname);
|
||||
),
|
||||
TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
|
||||
__entry->conn_id,
|
||||
__get_str(hostname),
|
||||
__entry->dst_addr)
|
||||
)
|
||||
|
||||
#define DEFINE_SMB3_CONNECT_EVENT(name) \
|
||||
DEFINE_EVENT(smb3_connect_class, smb3_##name, \
|
||||
TP_PROTO(char *hostname, \
|
||||
__u64 conn_id, \
|
||||
const struct __kernel_sockaddr_storage *addr), \
|
||||
TP_ARGS(hostname, conn_id, addr))
|
||||
|
||||
DEFINE_SMB3_CONNECT_EVENT(connect_done);
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_connect_err_class,
|
||||
TP_PROTO(char *hostname, __u64 conn_id,
|
||||
const struct __kernel_sockaddr_storage *dst_addr, int rc),
|
||||
TP_ARGS(hostname, conn_id, dst_addr, rc),
|
||||
TP_STRUCT__entry(
|
||||
__string(hostname, hostname)
|
||||
__field(__u64, conn_id)
|
||||
__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
|
||||
__field(int, rc)
|
||||
),
|
||||
TP_fast_assign(
|
||||
struct sockaddr_storage *pss = NULL;
|
||||
|
||||
__entry->conn_id = conn_id;
|
||||
__entry->rc = rc;
|
||||
pss = (struct sockaddr_storage *)__entry->dst_addr;
|
||||
*pss = *dst_addr;
|
||||
__assign_str(hostname, hostname);
|
||||
),
|
||||
TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
|
||||
__entry->rc,
|
||||
__entry->conn_id,
|
||||
__get_str(hostname),
|
||||
__entry->dst_addr)
|
||||
)
|
||||
|
||||
#define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \
|
||||
DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \
|
||||
TP_PROTO(char *hostname, \
|
||||
__u64 conn_id, \
|
||||
const struct __kernel_sockaddr_storage *addr, \
|
||||
int rc), \
|
||||
TP_ARGS(hostname, conn_id, addr, rc))
|
||||
|
||||
DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_reconnect_class,
|
||||
TP_PROTO(__u64 currmid,
|
||||
__u64 conn_id,
|
||||
|
Loading…
Reference in New Issue
Block a user