Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  *   Copyright (C) 2018, Microsoft Corporation.
0004  *
0005  *   Author(s): Steve French <stfrench@microsoft.com>
0006  */
0007 #undef TRACE_SYSTEM
0008 #define TRACE_SYSTEM cifs
0009 
0010 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
0011 #define _CIFS_TRACE_H
0012 
0013 #include <linux/tracepoint.h>
0014 #include <linux/net.h>
0015 #include <linux/inet.h>
0016 
0017 /*
0018  * Please use this 3-part article as a reference for writing new tracepoints:
0019  * https://lwn.net/Articles/379903/
0020  */
0021 
0022 /* For logging errors in read or write */
0023 DECLARE_EVENT_CLASS(smb3_rw_err_class,
0024     TP_PROTO(unsigned int xid,
0025         __u64   fid,
0026         __u32   tid,
0027         __u64   sesid,
0028         __u64   offset,
0029         __u32   len,
0030         int rc),
0031     TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
0032     TP_STRUCT__entry(
0033         __field(unsigned int, xid)
0034         __field(__u64, fid)
0035         __field(__u32, tid)
0036         __field(__u64, sesid)
0037         __field(__u64, offset)
0038         __field(__u32, len)
0039         __field(int, rc)
0040     ),
0041     TP_fast_assign(
0042         __entry->xid = xid;
0043         __entry->fid = fid;
0044         __entry->tid = tid;
0045         __entry->sesid = sesid;
0046         __entry->offset = offset;
0047         __entry->len = len;
0048         __entry->rc = rc;
0049     ),
0050     TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
0051         __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
0052         __entry->offset, __entry->len, __entry->rc)
0053 )
0054 
0055 #define DEFINE_SMB3_RW_ERR_EVENT(name)          \
0056 DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
0057     TP_PROTO(unsigned int xid,      \
0058         __u64   fid,            \
0059         __u32   tid,            \
0060         __u64   sesid,          \
0061         __u64   offset,         \
0062         __u32   len,            \
0063         int rc),            \
0064     TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
0065 
0066 DEFINE_SMB3_RW_ERR_EVENT(write_err);
0067 DEFINE_SMB3_RW_ERR_EVENT(read_err);
0068 DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
0069 DEFINE_SMB3_RW_ERR_EVENT(zero_err);
0070 DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
0071 
0072 
0073 /* For logging successful read or write */
0074 DECLARE_EVENT_CLASS(smb3_rw_done_class,
0075     TP_PROTO(unsigned int xid,
0076         __u64   fid,
0077         __u32   tid,
0078         __u64   sesid,
0079         __u64   offset,
0080         __u32   len),
0081     TP_ARGS(xid, fid, tid, sesid, offset, len),
0082     TP_STRUCT__entry(
0083         __field(unsigned int, xid)
0084         __field(__u64, fid)
0085         __field(__u32, tid)
0086         __field(__u64, sesid)
0087         __field(__u64, offset)
0088         __field(__u32, len)
0089     ),
0090     TP_fast_assign(
0091         __entry->xid = xid;
0092         __entry->fid = fid;
0093         __entry->tid = tid;
0094         __entry->sesid = sesid;
0095         __entry->offset = offset;
0096         __entry->len = len;
0097     ),
0098     TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
0099         __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
0100         __entry->offset, __entry->len)
0101 )
0102 
0103 #define DEFINE_SMB3_RW_DONE_EVENT(name)         \
0104 DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
0105     TP_PROTO(unsigned int xid,      \
0106         __u64   fid,            \
0107         __u32   tid,            \
0108         __u64   sesid,          \
0109         __u64   offset,         \
0110         __u32   len),           \
0111     TP_ARGS(xid, fid, tid, sesid, offset, len))
0112 
0113 DEFINE_SMB3_RW_DONE_EVENT(write_enter);
0114 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
0115 DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
0116 DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
0117 DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
0118 DEFINE_SMB3_RW_DONE_EVENT(write_done);
0119 DEFINE_SMB3_RW_DONE_EVENT(read_done);
0120 DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
0121 DEFINE_SMB3_RW_DONE_EVENT(zero_done);
0122 DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
0123 
0124 /* For logging successful set EOF (truncate) */
0125 DECLARE_EVENT_CLASS(smb3_eof_class,
0126     TP_PROTO(unsigned int xid,
0127         __u64   fid,
0128         __u32   tid,
0129         __u64   sesid,
0130         __u64   offset),
0131     TP_ARGS(xid, fid, tid, sesid, offset),
0132     TP_STRUCT__entry(
0133         __field(unsigned int, xid)
0134         __field(__u64, fid)
0135         __field(__u32, tid)
0136         __field(__u64, sesid)
0137         __field(__u64, offset)
0138     ),
0139     TP_fast_assign(
0140         __entry->xid = xid;
0141         __entry->fid = fid;
0142         __entry->tid = tid;
0143         __entry->sesid = sesid;
0144         __entry->offset = offset;
0145     ),
0146     TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
0147         __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
0148         __entry->offset)
0149 )
0150 
0151 #define DEFINE_SMB3_EOF_EVENT(name)         \
0152 DEFINE_EVENT(smb3_eof_class, smb3_##name,   \
0153     TP_PROTO(unsigned int xid,      \
0154         __u64   fid,            \
0155         __u32   tid,            \
0156         __u64   sesid,          \
0157         __u64   offset),        \
0158     TP_ARGS(xid, fid, tid, sesid, offset))
0159 
0160 DEFINE_SMB3_EOF_EVENT(set_eof);
0161 
0162 /*
0163  * For handle based calls other than read and write, and get/set info
0164  */
0165 DECLARE_EVENT_CLASS(smb3_fd_class,
0166     TP_PROTO(unsigned int xid,
0167         __u64   fid,
0168         __u32   tid,
0169         __u64   sesid),
0170     TP_ARGS(xid, fid, tid, sesid),
0171     TP_STRUCT__entry(
0172         __field(unsigned int, xid)
0173         __field(__u64, fid)
0174         __field(__u32, tid)
0175         __field(__u64, sesid)
0176     ),
0177     TP_fast_assign(
0178         __entry->xid = xid;
0179         __entry->fid = fid;
0180         __entry->tid = tid;
0181         __entry->sesid = sesid;
0182     ),
0183     TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
0184         __entry->xid, __entry->sesid, __entry->tid, __entry->fid)
0185 )
0186 
0187 #define DEFINE_SMB3_FD_EVENT(name)          \
0188 DEFINE_EVENT(smb3_fd_class, smb3_##name,    \
0189     TP_PROTO(unsigned int xid,      \
0190         __u64   fid,            \
0191         __u32   tid,            \
0192         __u64   sesid),         \
0193     TP_ARGS(xid, fid, tid, sesid))
0194 
0195 DEFINE_SMB3_FD_EVENT(flush_enter);
0196 DEFINE_SMB3_FD_EVENT(flush_done);
0197 DEFINE_SMB3_FD_EVENT(close_enter);
0198 DEFINE_SMB3_FD_EVENT(close_done);
0199 DEFINE_SMB3_FD_EVENT(oplock_not_found);
0200 
0201 DECLARE_EVENT_CLASS(smb3_fd_err_class,
0202     TP_PROTO(unsigned int xid,
0203         __u64   fid,
0204         __u32   tid,
0205         __u64   sesid,
0206         int rc),
0207     TP_ARGS(xid, fid, tid, sesid, rc),
0208     TP_STRUCT__entry(
0209         __field(unsigned int, xid)
0210         __field(__u64, fid)
0211         __field(__u32, tid)
0212         __field(__u64, sesid)
0213         __field(int, rc)
0214     ),
0215     TP_fast_assign(
0216         __entry->xid = xid;
0217         __entry->fid = fid;
0218         __entry->tid = tid;
0219         __entry->sesid = sesid;
0220         __entry->rc = rc;
0221     ),
0222     TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
0223         __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
0224         __entry->rc)
0225 )
0226 
0227 #define DEFINE_SMB3_FD_ERR_EVENT(name)          \
0228 DEFINE_EVENT(smb3_fd_err_class, smb3_##name,    \
0229     TP_PROTO(unsigned int xid,      \
0230         __u64   fid,            \
0231         __u32   tid,            \
0232         __u64   sesid,          \
0233         int rc),            \
0234     TP_ARGS(xid, fid, tid, sesid, rc))
0235 
0236 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
0237 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
0238 DEFINE_SMB3_FD_ERR_EVENT(close_err);
0239 
0240 /*
0241  * For handle based query/set info calls
0242  */
0243 DECLARE_EVENT_CLASS(smb3_inf_enter_class,
0244     TP_PROTO(unsigned int xid,
0245         __u64   fid,
0246         __u32   tid,
0247         __u64   sesid,
0248         __u8    infclass,
0249         __u32   type),
0250     TP_ARGS(xid, fid, tid, sesid, infclass, type),
0251     TP_STRUCT__entry(
0252         __field(unsigned int, xid)
0253         __field(__u64, fid)
0254         __field(__u32, tid)
0255         __field(__u64, sesid)
0256         __field(__u8, infclass)
0257         __field(__u32, type)
0258     ),
0259     TP_fast_assign(
0260         __entry->xid = xid;
0261         __entry->fid = fid;
0262         __entry->tid = tid;
0263         __entry->sesid = sesid;
0264         __entry->infclass = infclass;
0265         __entry->type = type;
0266     ),
0267     TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
0268         __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
0269         __entry->infclass, __entry->type)
0270 )
0271 
0272 #define DEFINE_SMB3_INF_ENTER_EVENT(name)          \
0273 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name,    \
0274     TP_PROTO(unsigned int xid,      \
0275         __u64   fid,            \
0276         __u32   tid,            \
0277         __u64   sesid,          \
0278         __u8    infclass,       \
0279         __u32   type),          \
0280     TP_ARGS(xid, fid, tid, sesid, infclass, type))
0281 
0282 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
0283 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
0284 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
0285 DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
0286 
0287 DECLARE_EVENT_CLASS(smb3_inf_err_class,
0288     TP_PROTO(unsigned int xid,
0289         __u64   fid,
0290         __u32   tid,
0291         __u64   sesid,
0292         __u8    infclass,
0293         __u32   type,
0294         int rc),
0295     TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
0296     TP_STRUCT__entry(
0297         __field(unsigned int, xid)
0298         __field(__u64, fid)
0299         __field(__u32, tid)
0300         __field(__u64, sesid)
0301         __field(__u8, infclass)
0302         __field(__u32, type)
0303         __field(int, rc)
0304     ),
0305     TP_fast_assign(
0306         __entry->xid = xid;
0307         __entry->fid = fid;
0308         __entry->tid = tid;
0309         __entry->sesid = sesid;
0310         __entry->infclass = infclass;
0311         __entry->type = type;
0312         __entry->rc = rc;
0313     ),
0314     TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
0315         __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
0316         __entry->infclass, __entry->type, __entry->rc)
0317 )
0318 
0319 #define DEFINE_SMB3_INF_ERR_EVENT(name)          \
0320 DEFINE_EVENT(smb3_inf_err_class, smb3_##name,    \
0321     TP_PROTO(unsigned int xid,      \
0322         __u64   fid,            \
0323         __u32   tid,            \
0324         __u64   sesid,          \
0325         __u8    infclass,       \
0326         __u32   type,           \
0327         int rc),            \
0328     TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
0329 
0330 DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
0331 DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
0332 DEFINE_SMB3_INF_ERR_EVENT(notify_err);
0333 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
0334 
0335 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
0336     TP_PROTO(unsigned int xid,
0337         __u32   tid,
0338         __u64   sesid,
0339         const char *full_path),
0340     TP_ARGS(xid, tid, sesid, full_path),
0341     TP_STRUCT__entry(
0342         __field(unsigned int, xid)
0343         __field(__u32, tid)
0344         __field(__u64, sesid)
0345         __string(path, full_path)
0346     ),
0347     TP_fast_assign(
0348         __entry->xid = xid;
0349         __entry->tid = tid;
0350         __entry->sesid = sesid;
0351         __assign_str(path, full_path);
0352     ),
0353     TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
0354         __entry->xid, __entry->sesid, __entry->tid,
0355         __get_str(path))
0356 )
0357 
0358 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name)     \
0359 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name,    \
0360     TP_PROTO(unsigned int xid,      \
0361         __u32   tid,            \
0362         __u64   sesid,          \
0363         const char *full_path),     \
0364     TP_ARGS(xid, tid, sesid, full_path))
0365 
0366 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
0367 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
0368 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
0369 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
0370 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
0371 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
0372 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
0373 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
0374 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
0375 
0376 
0377 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
0378     TP_PROTO(unsigned int xid,
0379         __u32   tid,
0380         __u64   sesid),
0381     TP_ARGS(xid, tid, sesid),
0382     TP_STRUCT__entry(
0383         __field(unsigned int, xid)
0384         __field(__u32, tid)
0385         __field(__u64, sesid)
0386     ),
0387     TP_fast_assign(
0388         __entry->xid = xid;
0389         __entry->tid = tid;
0390         __entry->sesid = sesid;
0391     ),
0392     TP_printk("xid=%u sid=0x%llx tid=0x%x",
0393         __entry->xid, __entry->sesid, __entry->tid)
0394 )
0395 
0396 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
0397 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
0398     TP_PROTO(unsigned int xid,      \
0399         __u32   tid,            \
0400         __u64   sesid),         \
0401     TP_ARGS(xid, tid, sesid))
0402 
0403 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
0404 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
0405 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
0406 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
0407 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
0408 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
0409 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
0410 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
0411 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
0412 
0413 
0414 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
0415     TP_PROTO(unsigned int xid,
0416         __u32   tid,
0417         __u64   sesid,
0418         int rc),
0419     TP_ARGS(xid, tid, sesid, rc),
0420     TP_STRUCT__entry(
0421         __field(unsigned int, xid)
0422         __field(__u32, tid)
0423         __field(__u64, sesid)
0424         __field(int, rc)
0425     ),
0426     TP_fast_assign(
0427         __entry->xid = xid;
0428         __entry->tid = tid;
0429         __entry->sesid = sesid;
0430         __entry->rc = rc;
0431     ),
0432     TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
0433         __entry->xid, __entry->sesid, __entry->tid,
0434         __entry->rc)
0435 )
0436 
0437 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
0438 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
0439     TP_PROTO(unsigned int xid,      \
0440         __u32   tid,            \
0441         __u64   sesid,          \
0442         int rc),            \
0443     TP_ARGS(xid, tid, sesid, rc))
0444 
0445 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
0446 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
0447 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
0448 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
0449 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
0450 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
0451 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
0452 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
0453 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
0454 
0455 /*
0456  * For logging SMB3 Status code and Command for responses which return errors
0457  */
0458 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
0459     TP_PROTO(__u32  tid,
0460         __u64   sesid,
0461         __u16   cmd,
0462         __u64   mid,
0463         __u32   status,
0464         int rc),
0465     TP_ARGS(tid, sesid, cmd, mid, status, rc),
0466     TP_STRUCT__entry(
0467         __field(__u32, tid)
0468         __field(__u64, sesid)
0469         __field(__u16, cmd)
0470         __field(__u64, mid)
0471         __field(__u32, status)
0472         __field(int, rc)
0473     ),
0474     TP_fast_assign(
0475         __entry->tid = tid;
0476         __entry->sesid = sesid;
0477         __entry->cmd = cmd;
0478         __entry->mid = mid;
0479         __entry->status = status;
0480         __entry->rc = rc;
0481     ),
0482     TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
0483         __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
0484         __entry->status, __entry->rc)
0485 )
0486 
0487 #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
0488 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
0489     TP_PROTO(__u32  tid,            \
0490         __u64   sesid,          \
0491         __u16   cmd,            \
0492         __u64   mid,            \
0493         __u32   status,         \
0494         int rc),            \
0495     TP_ARGS(tid, sesid, cmd, mid, status, rc))
0496 
0497 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
0498 
0499 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
0500     TP_PROTO(__u32  tid,
0501         __u64   sesid,
0502         __u16   cmd,
0503         __u64   mid),
0504     TP_ARGS(tid, sesid, cmd, mid),
0505     TP_STRUCT__entry(
0506         __field(__u32, tid)
0507         __field(__u64, sesid)
0508         __field(__u16, cmd)
0509         __field(__u64, mid)
0510     ),
0511     TP_fast_assign(
0512         __entry->tid = tid;
0513         __entry->sesid = sesid;
0514         __entry->cmd = cmd;
0515         __entry->mid = mid;
0516     ),
0517     TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
0518         __entry->sesid, __entry->tid,
0519         __entry->cmd, __entry->mid)
0520 )
0521 
0522 #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
0523 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
0524     TP_PROTO(__u32  tid,            \
0525         __u64   sesid,          \
0526         __u16   cmd,            \
0527         __u64   mid),           \
0528     TP_ARGS(tid, sesid, cmd, mid))
0529 
0530 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
0531 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
0532 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
0533 
0534 DECLARE_EVENT_CLASS(smb3_mid_class,
0535     TP_PROTO(__u16  cmd,
0536         __u64   mid,
0537         __u32   pid,
0538         unsigned long when_sent,
0539         unsigned long when_received),
0540     TP_ARGS(cmd, mid, pid, when_sent, when_received),
0541     TP_STRUCT__entry(
0542         __field(__u16, cmd)
0543         __field(__u64, mid)
0544         __field(__u32, pid)
0545         __field(unsigned long, when_sent)
0546         __field(unsigned long, when_received)
0547     ),
0548     TP_fast_assign(
0549         __entry->cmd = cmd;
0550         __entry->mid = mid;
0551         __entry->pid = pid;
0552         __entry->when_sent = when_sent;
0553         __entry->when_received = when_received;
0554     ),
0555     TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
0556         __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
0557         __entry->when_received)
0558 )
0559 
0560 #define DEFINE_SMB3_MID_EVENT(name)          \
0561 DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
0562     TP_PROTO(__u16  cmd,            \
0563         __u64   mid,            \
0564         __u32   pid,            \
0565         unsigned long when_sent,    \
0566         unsigned long when_received),   \
0567     TP_ARGS(cmd, mid, pid, when_sent, when_received))
0568 
0569 DEFINE_SMB3_MID_EVENT(slow_rsp);
0570 
0571 DECLARE_EVENT_CLASS(smb3_exit_err_class,
0572     TP_PROTO(unsigned int xid,
0573         const char *func_name,
0574         int rc),
0575     TP_ARGS(xid, func_name, rc),
0576     TP_STRUCT__entry(
0577         __field(unsigned int, xid)
0578         __string(func_name, func_name)
0579         __field(int, rc)
0580     ),
0581     TP_fast_assign(
0582         __entry->xid = xid;
0583         __assign_str(func_name, func_name);
0584         __entry->rc = rc;
0585     ),
0586     TP_printk("\t%s: xid=%u rc=%d",
0587         __get_str(func_name), __entry->xid, __entry->rc)
0588 )
0589 
0590 #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
0591 DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
0592     TP_PROTO(unsigned int xid,      \
0593         const char *func_name,      \
0594         int rc),            \
0595     TP_ARGS(xid, func_name, rc))
0596 
0597 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
0598 
0599 
0600 DECLARE_EVENT_CLASS(smb3_sync_err_class,
0601     TP_PROTO(unsigned long ino,
0602         int rc),
0603     TP_ARGS(ino, rc),
0604     TP_STRUCT__entry(
0605         __field(unsigned long, ino)
0606         __field(int, rc)
0607     ),
0608     TP_fast_assign(
0609         __entry->ino = ino;
0610         __entry->rc = rc;
0611     ),
0612     TP_printk("\tino=%lu rc=%d",
0613         __entry->ino, __entry->rc)
0614 )
0615 
0616 #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
0617 DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
0618     TP_PROTO(unsigned long ino,     \
0619         int rc),            \
0620     TP_ARGS(ino, rc))
0621 
0622 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
0623 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
0624 
0625 
0626 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
0627     TP_PROTO(unsigned int xid,
0628         const char *func_name),
0629     TP_ARGS(xid, func_name),
0630     TP_STRUCT__entry(
0631         __field(unsigned int, xid)
0632         __string(func_name, func_name)
0633     ),
0634     TP_fast_assign(
0635         __entry->xid = xid;
0636         __assign_str(func_name, func_name);
0637     ),
0638     TP_printk("\t%s: xid=%u",
0639         __get_str(func_name), __entry->xid)
0640 )
0641 
0642 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
0643 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
0644     TP_PROTO(unsigned int xid,      \
0645         const char *func_name),     \
0646     TP_ARGS(xid, func_name))
0647 
0648 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
0649 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
0650 
0651 /*
0652  * For SMB2/SMB3 tree connect
0653  */
0654 
0655 DECLARE_EVENT_CLASS(smb3_tcon_class,
0656     TP_PROTO(unsigned int xid,
0657         __u32   tid,
0658         __u64   sesid,
0659         const char *unc_name,
0660         int rc),
0661     TP_ARGS(xid, tid, sesid, unc_name, rc),
0662     TP_STRUCT__entry(
0663         __field(unsigned int, xid)
0664         __field(__u32, tid)
0665         __field(__u64, sesid)
0666         __string(name, unc_name)
0667         __field(int, rc)
0668     ),
0669     TP_fast_assign(
0670         __entry->xid = xid;
0671         __entry->tid = tid;
0672         __entry->sesid = sesid;
0673         __assign_str(name, unc_name);
0674         __entry->rc = rc;
0675     ),
0676     TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
0677         __entry->xid, __entry->sesid, __entry->tid,
0678         __get_str(name), __entry->rc)
0679 )
0680 
0681 #define DEFINE_SMB3_TCON_EVENT(name)          \
0682 DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
0683     TP_PROTO(unsigned int xid,      \
0684         __u32   tid,            \
0685         __u64   sesid,          \
0686         const char *unc_name,       \
0687         int rc),            \
0688     TP_ARGS(xid, tid, sesid, unc_name, rc))
0689 
0690 DEFINE_SMB3_TCON_EVENT(tcon);
0691 
0692 
0693 /*
0694  * For smb2/smb3 open (including create and mkdir) calls
0695  */
0696 
0697 DECLARE_EVENT_CLASS(smb3_open_enter_class,
0698     TP_PROTO(unsigned int xid,
0699         __u32   tid,
0700         __u64   sesid,
0701         int create_options,
0702         int desired_access),
0703     TP_ARGS(xid, tid, sesid, create_options, desired_access),
0704     TP_STRUCT__entry(
0705         __field(unsigned int, xid)
0706         __field(__u32, tid)
0707         __field(__u64, sesid)
0708         __field(int, create_options)
0709         __field(int, desired_access)
0710     ),
0711     TP_fast_assign(
0712         __entry->xid = xid;
0713         __entry->tid = tid;
0714         __entry->sesid = sesid;
0715         __entry->create_options = create_options;
0716         __entry->desired_access = desired_access;
0717     ),
0718     TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x",
0719         __entry->xid, __entry->sesid, __entry->tid,
0720         __entry->create_options, __entry->desired_access)
0721 )
0722 
0723 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
0724 DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
0725     TP_PROTO(unsigned int xid,      \
0726         __u32   tid,            \
0727         __u64   sesid,          \
0728         int create_options,     \
0729         int desired_access),    \
0730     TP_ARGS(xid, tid, sesid, create_options, desired_access))
0731 
0732 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
0733 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
0734 
0735 DECLARE_EVENT_CLASS(smb3_open_err_class,
0736     TP_PROTO(unsigned int xid,
0737         __u32   tid,
0738         __u64   sesid,
0739         int create_options,
0740         int desired_access,
0741         int rc),
0742     TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
0743     TP_STRUCT__entry(
0744         __field(unsigned int, xid)
0745         __field(__u32, tid)
0746         __field(__u64, sesid)
0747         __field(int,   create_options)
0748         __field(int, desired_access)
0749         __field(int, rc)
0750     ),
0751     TP_fast_assign(
0752         __entry->xid = xid;
0753         __entry->tid = tid;
0754         __entry->sesid = sesid;
0755         __entry->create_options = create_options;
0756         __entry->desired_access = desired_access;
0757         __entry->rc = rc;
0758     ),
0759     TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
0760         __entry->xid, __entry->sesid, __entry->tid,
0761         __entry->create_options, __entry->desired_access, __entry->rc)
0762 )
0763 
0764 #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
0765 DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
0766     TP_PROTO(unsigned int xid,      \
0767         __u32   tid,            \
0768         __u64   sesid,          \
0769         int create_options,     \
0770         int desired_access,     \
0771         int rc),            \
0772     TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
0773 
0774 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
0775 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
0776 
0777 DECLARE_EVENT_CLASS(smb3_open_done_class,
0778     TP_PROTO(unsigned int xid,
0779         __u64   fid,
0780         __u32   tid,
0781         __u64   sesid,
0782         int create_options,
0783         int desired_access),
0784     TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
0785     TP_STRUCT__entry(
0786         __field(unsigned int, xid)
0787         __field(__u64, fid)
0788         __field(__u32, tid)
0789         __field(__u64, sesid)
0790         __field(int, create_options)
0791         __field(int, desired_access)
0792     ),
0793     TP_fast_assign(
0794         __entry->xid = xid;
0795         __entry->fid = fid;
0796         __entry->tid = tid;
0797         __entry->sesid = sesid;
0798         __entry->create_options = create_options;
0799         __entry->desired_access = desired_access;
0800     ),
0801     TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
0802         __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
0803         __entry->create_options, __entry->desired_access)
0804 )
0805 
0806 #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
0807 DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
0808     TP_PROTO(unsigned int xid,      \
0809         __u64   fid,            \
0810         __u32   tid,            \
0811         __u64   sesid,          \
0812         int create_options,     \
0813         int desired_access),    \
0814     TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
0815 
0816 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
0817 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
0818 
0819 
0820 DECLARE_EVENT_CLASS(smb3_lease_done_class,
0821     TP_PROTO(__u32  lease_state,
0822         __u32   tid,
0823         __u64   sesid,
0824         __u64   lease_key_low,
0825         __u64   lease_key_high),
0826     TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
0827     TP_STRUCT__entry(
0828         __field(__u32, lease_state)
0829         __field(__u32, tid)
0830         __field(__u64, sesid)
0831         __field(__u64, lease_key_low)
0832         __field(__u64, lease_key_high)
0833     ),
0834     TP_fast_assign(
0835         __entry->lease_state = lease_state;
0836         __entry->tid = tid;
0837         __entry->sesid = sesid;
0838         __entry->lease_key_low = lease_key_low;
0839         __entry->lease_key_high = lease_key_high;
0840     ),
0841     TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
0842         __entry->sesid, __entry->tid, __entry->lease_key_high,
0843         __entry->lease_key_low, __entry->lease_state)
0844 )
0845 
0846 #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
0847 DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
0848     TP_PROTO(__u32  lease_state,        \
0849         __u32   tid,            \
0850         __u64   sesid,          \
0851         __u64   lease_key_low,      \
0852         __u64   lease_key_high),    \
0853     TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
0854 
0855 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
0856 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
0857 
0858 DECLARE_EVENT_CLASS(smb3_lease_err_class,
0859     TP_PROTO(__u32  lease_state,
0860         __u32   tid,
0861         __u64   sesid,
0862         __u64   lease_key_low,
0863         __u64   lease_key_high,
0864         int rc),
0865     TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
0866     TP_STRUCT__entry(
0867         __field(__u32, lease_state)
0868         __field(__u32, tid)
0869         __field(__u64, sesid)
0870         __field(__u64, lease_key_low)
0871         __field(__u64, lease_key_high)
0872         __field(int, rc)
0873     ),
0874     TP_fast_assign(
0875         __entry->lease_state = lease_state;
0876         __entry->tid = tid;
0877         __entry->sesid = sesid;
0878         __entry->lease_key_low = lease_key_low;
0879         __entry->lease_key_high = lease_key_high;
0880         __entry->rc = rc;
0881     ),
0882     TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
0883         __entry->sesid, __entry->tid, __entry->lease_key_high,
0884         __entry->lease_key_low, __entry->lease_state, __entry->rc)
0885 )
0886 
0887 #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
0888 DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
0889     TP_PROTO(__u32  lease_state,        \
0890         __u32   tid,            \
0891         __u64   sesid,          \
0892         __u64   lease_key_low,      \
0893         __u64   lease_key_high,     \
0894         int rc),            \
0895     TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
0896 
0897 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
0898 
0899 DECLARE_EVENT_CLASS(smb3_connect_class,
0900     TP_PROTO(char *hostname,
0901         __u64 conn_id,
0902         const struct __kernel_sockaddr_storage *dst_addr),
0903     TP_ARGS(hostname, conn_id, dst_addr),
0904     TP_STRUCT__entry(
0905         __string(hostname, hostname)
0906         __field(__u64, conn_id)
0907         __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
0908     ),
0909     TP_fast_assign(
0910         struct sockaddr_storage *pss = NULL;
0911 
0912         __entry->conn_id = conn_id;
0913         pss = (struct sockaddr_storage *)__entry->dst_addr;
0914         *pss = *dst_addr;
0915         __assign_str(hostname, hostname);
0916     ),
0917     TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
0918         __entry->conn_id,
0919         __get_str(hostname),
0920         __entry->dst_addr)
0921 )
0922 
0923 #define DEFINE_SMB3_CONNECT_EVENT(name)        \
0924 DEFINE_EVENT(smb3_connect_class, smb3_##name,  \
0925     TP_PROTO(char *hostname,        \
0926         __u64 conn_id,          \
0927         const struct __kernel_sockaddr_storage *addr),  \
0928     TP_ARGS(hostname, conn_id, addr))
0929 
0930 DEFINE_SMB3_CONNECT_EVENT(connect_done);
0931 
0932 DECLARE_EVENT_CLASS(smb3_connect_err_class,
0933     TP_PROTO(char *hostname, __u64 conn_id,
0934         const struct __kernel_sockaddr_storage *dst_addr, int rc),
0935     TP_ARGS(hostname, conn_id, dst_addr, rc),
0936     TP_STRUCT__entry(
0937         __string(hostname, hostname)
0938         __field(__u64, conn_id)
0939         __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
0940         __field(int, rc)
0941     ),
0942     TP_fast_assign(
0943         struct sockaddr_storage *pss = NULL;
0944 
0945         __entry->conn_id = conn_id;
0946         __entry->rc = rc;
0947         pss = (struct sockaddr_storage *)__entry->dst_addr;
0948         *pss = *dst_addr;
0949         __assign_str(hostname, hostname);
0950     ),
0951     TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
0952         __entry->rc,
0953         __entry->conn_id,
0954         __get_str(hostname),
0955         __entry->dst_addr)
0956 )
0957 
0958 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name)        \
0959 DEFINE_EVENT(smb3_connect_err_class, smb3_##name,  \
0960     TP_PROTO(char *hostname,        \
0961         __u64 conn_id,          \
0962         const struct __kernel_sockaddr_storage *addr,   \
0963         int rc),            \
0964     TP_ARGS(hostname, conn_id, addr, rc))
0965 
0966 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
0967 
0968 DECLARE_EVENT_CLASS(smb3_reconnect_class,
0969     TP_PROTO(__u64  currmid,
0970         __u64 conn_id,
0971         char *hostname),
0972     TP_ARGS(currmid, conn_id, hostname),
0973     TP_STRUCT__entry(
0974         __field(__u64, currmid)
0975         __field(__u64, conn_id)
0976         __string(hostname, hostname)
0977     ),
0978     TP_fast_assign(
0979         __entry->currmid = currmid;
0980         __entry->conn_id = conn_id;
0981         __assign_str(hostname, hostname);
0982     ),
0983     TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
0984         __entry->conn_id,
0985         __get_str(hostname),
0986         __entry->currmid)
0987 )
0988 
0989 #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
0990 DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
0991     TP_PROTO(__u64  currmid,        \
0992         __u64 conn_id,          \
0993         char *hostname),                \
0994     TP_ARGS(currmid, conn_id, hostname))
0995 
0996 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
0997 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
0998 
0999 DECLARE_EVENT_CLASS(smb3_credit_class,
1000     TP_PROTO(__u64  currmid,
1001         __u64 conn_id,
1002         char *hostname,
1003         int credits,
1004         int credits_to_add,
1005         int in_flight),
1006     TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1007     TP_STRUCT__entry(
1008         __field(__u64, currmid)
1009         __field(__u64, conn_id)
1010         __string(hostname, hostname)
1011         __field(int, credits)
1012         __field(int, credits_to_add)
1013         __field(int, in_flight)
1014     ),
1015     TP_fast_assign(
1016         __entry->currmid = currmid;
1017         __entry->conn_id = conn_id;
1018         __assign_str(hostname, hostname);
1019         __entry->credits = credits;
1020         __entry->credits_to_add = credits_to_add;
1021         __entry->in_flight = in_flight;
1022     ),
1023     TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1024             "credits=%d credit_change=%d in_flight=%d",
1025         __entry->conn_id,
1026         __get_str(hostname),
1027         __entry->currmid,
1028         __entry->credits,
1029         __entry->credits_to_add,
1030         __entry->in_flight)
1031 )
1032 
1033 #define DEFINE_SMB3_CREDIT_EVENT(name)        \
1034 DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
1035     TP_PROTO(__u64  currmid,        \
1036         __u64 conn_id,          \
1037         char *hostname,         \
1038         int  credits,           \
1039         int  credits_to_add,    \
1040         int in_flight),         \
1041     TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1042 
1043 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1044 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1045 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1046 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1047 DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1048 DEFINE_SMB3_CREDIT_EVENT(add_credits);
1049 DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1050 DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1051 DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1052 DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1053 DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1054 DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1055 DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1056 DEFINE_SMB3_CREDIT_EVENT(set_credits);
1057 
1058 #endif /* _CIFS_TRACE_H */
1059 
1060 #undef TRACE_INCLUDE_PATH
1061 #define TRACE_INCLUDE_PATH .
1062 #define TRACE_INCLUDE_FILE trace
1063 #include <trace/define_trace.h>