smb3: add reconnect tracepoints
Add tracepoints for reconnecting an smb3 session Example output (from trace-cmd) with the patch (showing the session marked for reconnect, the stat failing, and then the subsequent SMB3 commands after the server comes back up). The "smb3_reconnect" event is the new one. cifsd-25993 [000] .... 29635.368265: smb3_reconnect: server=localhost current_mid=0x1e stat-26200 [001] .... 29638.516403: smb3_enter: cifs_revalidate_dentry_attr: xid=22 stat-26200 [001] .... 29648.723296: smb3_exit_err: cifs_revalidate_dentry_attr: xid=22 rc=-112 kworker/0:1-22830 [000] .... 29653.850947: smb3_cmd_done: sid=0x0 tid=0x0 cmd=0 mid=0 kworker/0:1-22830 [000] .... 29653.851191: smb3_cmd_err: sid=0x8ae4683c tid=0x0 cmd=1 mid=1 status=0xc0000016 rc=-5 kworker/0:1-22830 [000] .... 29653.855254: smb3_cmd_done: sid=0x8ae4683c tid=0x0 cmd=1 mid=2 kworker/0:1-22830 [000] .... 29653.855482: smb3_cmd_done: sid=0x8ae4683c tid=0x8084f30d cmd=3 mid=3 Signed-off-by: Steve French <stfrench@microsoft.com> Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com> Reviewed-by: Aurelien Aptel <aaptel@suse.com>
This commit is contained in:
parent
e68a932b0b
commit
bf1fdeb789
|
@ -348,6 +348,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
|
|||
server->max_read = 0;
|
||||
|
||||
cifs_dbg(FYI, "Reconnecting tcp session\n");
|
||||
trace_smb3_reconnect(server->CurrentMid, server->hostname);
|
||||
|
||||
/* before reconnecting the tcp session, mark the smb session (uid)
|
||||
and the tid bad so they are not used until reconnected */
|
||||
|
|
|
@ -423,6 +423,32 @@ DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
|
|||
DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
|
||||
DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_reconnect_class,
|
||||
TP_PROTO(__u64 currmid,
|
||||
char *hostname),
|
||||
TP_ARGS(currmid, hostname),
|
||||
TP_STRUCT__entry(
|
||||
__field(__u64, currmid)
|
||||
__field(char *, hostname)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->currmid = currmid;
|
||||
__entry->hostname = hostname;
|
||||
),
|
||||
TP_printk("server=%s current_mid=0x%llx",
|
||||
__entry->hostname,
|
||||
__entry->currmid)
|
||||
)
|
||||
|
||||
#define DEFINE_SMB3_RECONNECT_EVENT(name) \
|
||||
DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \
|
||||
TP_PROTO(__u64 currmid, \
|
||||
char *hostname), \
|
||||
TP_ARGS(currmid, hostname))
|
||||
|
||||
DEFINE_SMB3_RECONNECT_EVENT(reconnect);
|
||||
DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
|
||||
|
||||
#endif /* _CIFS_TRACE_H */
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
|
|
|
@ -361,6 +361,8 @@ uncork:
|
|||
* socket so the server throws away the partial SMB
|
||||
*/
|
||||
server->tcpStatus = CifsNeedReconnect;
|
||||
trace_smb3_partial_send_reconnect(server->CurrentMid,
|
||||
server->hostname);
|
||||
}
|
||||
smbd_done:
|
||||
if (rc < 0 && rc != -EINTR)
|
||||
|
|
Loading…
Reference in New Issue