123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Copyright (C) 2018, Microsoft Corporation.
- *
- * Author(s): Steve French <stfrench@microsoft.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- */
- #undef TRACE_SYSTEM
- #define TRACE_SYSTEM cifs
- #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
- #define _CIFS_TRACE_H
- #include <linux/tracepoint.h>
- /* For logging errors in read or write */
- DECLARE_EVENT_CLASS(smb3_rw_err_class,
- TP_PROTO(unsigned int xid,
- __u64 fid,
- __u32 tid,
- __u64 sesid,
- __u64 offset,
- __u32 len,
- int rc),
- TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(__u64, fid)
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(__u64, offset)
- __field(__u32, len)
- __field(int, rc)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->fid = fid;
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->offset = offset;
- __entry->len = len;
- __entry->rc = rc;
- ),
- TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
- __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
- __entry->offset, __entry->len, __entry->rc)
- )
- #define DEFINE_SMB3_RW_ERR_EVENT(name) \
- DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- __u64 fid, \
- __u32 tid, \
- __u64 sesid, \
- __u64 offset, \
- __u32 len, \
- int rc), \
- TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
- DEFINE_SMB3_RW_ERR_EVENT(write_err);
- DEFINE_SMB3_RW_ERR_EVENT(read_err);
- /* For logging successful read or write */
- DECLARE_EVENT_CLASS(smb3_rw_done_class,
- TP_PROTO(unsigned int xid,
- __u64 fid,
- __u32 tid,
- __u64 sesid,
- __u64 offset,
- __u32 len),
- TP_ARGS(xid, fid, tid, sesid, offset, len),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(__u64, fid)
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(__u64, offset)
- __field(__u32, len)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->fid = fid;
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->offset = offset;
- __entry->len = len;
- ),
- TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
- __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
- __entry->offset, __entry->len)
- )
- #define DEFINE_SMB3_RW_DONE_EVENT(name) \
- DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- __u64 fid, \
- __u32 tid, \
- __u64 sesid, \
- __u64 offset, \
- __u32 len), \
- TP_ARGS(xid, fid, tid, sesid, offset, len))
- DEFINE_SMB3_RW_DONE_EVENT(write_done);
- DEFINE_SMB3_RW_DONE_EVENT(read_done);
- /*
- * For handle based calls other than read and write, and get/set info
- */
- DECLARE_EVENT_CLASS(smb3_fd_err_class,
- TP_PROTO(unsigned int xid,
- __u64 fid,
- __u32 tid,
- __u64 sesid,
- int rc),
- TP_ARGS(xid, fid, tid, sesid, rc),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(__u64, fid)
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(int, rc)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->fid = fid;
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->rc = rc;
- ),
- TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
- __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
- __entry->rc)
- )
- #define DEFINE_SMB3_FD_ERR_EVENT(name) \
- DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- __u64 fid, \
- __u32 tid, \
- __u64 sesid, \
- int rc), \
- TP_ARGS(xid, fid, tid, sesid, rc))
- DEFINE_SMB3_FD_ERR_EVENT(flush_err);
- DEFINE_SMB3_FD_ERR_EVENT(lock_err);
- DEFINE_SMB3_FD_ERR_EVENT(close_err);
- /*
- * For handle based query/set info calls
- */
- DECLARE_EVENT_CLASS(smb3_inf_err_class,
- TP_PROTO(unsigned int xid,
- __u64 fid,
- __u32 tid,
- __u64 sesid,
- __u8 infclass,
- __u32 type,
- int rc),
- TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(__u64, fid)
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(__u8, infclass)
- __field(__u32, type)
- __field(int, rc)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->fid = fid;
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->infclass = infclass;
- __entry->type = type;
- __entry->rc = rc;
- ),
- TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
- __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
- __entry->infclass, __entry->type, __entry->rc)
- )
- #define DEFINE_SMB3_INF_ERR_EVENT(name) \
- DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- __u64 fid, \
- __u32 tid, \
- __u64 sesid, \
- __u8 infclass, \
- __u32 type, \
- int rc), \
- TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
- DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
- DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
- DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
- /*
- * For logging SMB3 Status code and Command for responses which return errors
- */
- DECLARE_EVENT_CLASS(smb3_cmd_err_class,
- TP_PROTO(__u32 tid,
- __u64 sesid,
- __u16 cmd,
- __u64 mid,
- __u32 status,
- int rc),
- TP_ARGS(tid, sesid, cmd, mid, status, rc),
- TP_STRUCT__entry(
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(__u16, cmd)
- __field(__u64, mid)
- __field(__u32, status)
- __field(int, rc)
- ),
- TP_fast_assign(
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->cmd = cmd;
- __entry->mid = mid;
- __entry->status = status;
- __entry->rc = rc;
- ),
- TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
- __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
- __entry->status, __entry->rc)
- )
- #define DEFINE_SMB3_CMD_ERR_EVENT(name) \
- DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \
- TP_PROTO(__u32 tid, \
- __u64 sesid, \
- __u16 cmd, \
- __u64 mid, \
- __u32 status, \
- int rc), \
- TP_ARGS(tid, sesid, cmd, mid, status, rc))
- DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
- DECLARE_EVENT_CLASS(smb3_cmd_done_class,
- TP_PROTO(__u32 tid,
- __u64 sesid,
- __u16 cmd,
- __u64 mid),
- TP_ARGS(tid, sesid, cmd, mid),
- TP_STRUCT__entry(
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(__u16, cmd)
- __field(__u64, mid)
- ),
- TP_fast_assign(
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->cmd = cmd;
- __entry->mid = mid;
- ),
- TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
- __entry->sesid, __entry->tid,
- __entry->cmd, __entry->mid)
- )
- #define DEFINE_SMB3_CMD_DONE_EVENT(name) \
- DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \
- TP_PROTO(__u32 tid, \
- __u64 sesid, \
- __u16 cmd, \
- __u64 mid), \
- TP_ARGS(tid, sesid, cmd, mid))
- DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
- DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
- DECLARE_EVENT_CLASS(smb3_mid_class,
- TP_PROTO(__u16 cmd,
- __u64 mid,
- __u32 pid,
- unsigned long when_sent,
- unsigned long when_received),
- TP_ARGS(cmd, mid, pid, when_sent, when_received),
- TP_STRUCT__entry(
- __field(__u16, cmd)
- __field(__u64, mid)
- __field(__u32, pid)
- __field(unsigned long, when_sent)
- __field(unsigned long, when_received)
- ),
- TP_fast_assign(
- __entry->cmd = cmd;
- __entry->mid = mid;
- __entry->pid = pid;
- __entry->when_sent = when_sent;
- __entry->when_received = when_received;
- ),
- TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
- __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
- __entry->when_received)
- )
- #define DEFINE_SMB3_MID_EVENT(name) \
- DEFINE_EVENT(smb3_mid_class, smb3_##name, \
- TP_PROTO(__u16 cmd, \
- __u64 mid, \
- __u32 pid, \
- unsigned long when_sent, \
- unsigned long when_received), \
- TP_ARGS(cmd, mid, pid, when_sent, when_received))
- DEFINE_SMB3_MID_EVENT(slow_rsp);
- DECLARE_EVENT_CLASS(smb3_exit_err_class,
- TP_PROTO(unsigned int xid,
- const char *func_name,
- int rc),
- TP_ARGS(xid, func_name, rc),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(const char *, func_name)
- __field(int, rc)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->func_name = func_name;
- __entry->rc = rc;
- ),
- TP_printk("\t%s: xid=%u rc=%d",
- __entry->func_name, __entry->xid, __entry->rc)
- )
- #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \
- DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- const char *func_name, \
- int rc), \
- TP_ARGS(xid, func_name, rc))
- DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
- DECLARE_EVENT_CLASS(smb3_enter_exit_class,
- TP_PROTO(unsigned int xid,
- const char *func_name),
- TP_ARGS(xid, func_name),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(const char *, func_name)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->func_name = func_name;
- ),
- TP_printk("\t%s: xid=%u",
- __entry->func_name, __entry->xid)
- )
- #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \
- DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- const char *func_name), \
- TP_ARGS(xid, func_name))
- DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
- DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
- /*
- * For smb2/smb3 open call
- */
- DECLARE_EVENT_CLASS(smb3_open_err_class,
- TP_PROTO(unsigned int xid,
- __u32 tid,
- __u64 sesid,
- int create_options,
- int desired_access,
- int rc),
- TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(int, create_options)
- __field(int, desired_access)
- __field(int, rc)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->create_options = create_options;
- __entry->desired_access = desired_access;
- __entry->rc = rc;
- ),
- TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
- __entry->xid, __entry->sesid, __entry->tid,
- __entry->create_options, __entry->desired_access, __entry->rc)
- )
- #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \
- DEFINE_EVENT(smb3_open_err_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- __u32 tid, \
- __u64 sesid, \
- int create_options, \
- int desired_access, \
- int rc), \
- TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
- DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
- DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
- DECLARE_EVENT_CLASS(smb3_open_done_class,
- TP_PROTO(unsigned int xid,
- __u64 fid,
- __u32 tid,
- __u64 sesid,
- int create_options,
- int desired_access),
- TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
- TP_STRUCT__entry(
- __field(unsigned int, xid)
- __field(__u64, fid)
- __field(__u32, tid)
- __field(__u64, sesid)
- __field(int, create_options)
- __field(int, desired_access)
- ),
- TP_fast_assign(
- __entry->xid = xid;
- __entry->fid = fid;
- __entry->tid = tid;
- __entry->sesid = sesid;
- __entry->create_options = create_options;
- __entry->desired_access = desired_access;
- ),
- TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
- __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
- __entry->create_options, __entry->desired_access)
- )
- #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \
- DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
- TP_PROTO(unsigned int xid, \
- __u64 fid, \
- __u32 tid, \
- __u64 sesid, \
- int create_options, \
- int desired_access), \
- TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
- 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
- #define TRACE_INCLUDE_PATH .
- #define TRACE_INCLUDE_FILE trace
- #include <trace/define_trace.h>
|