3 * Copyright (c) International Business Machines Corp., 2000,2002
4 * Modified by Steve French (sfrench@us.ibm.com)
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
14 * the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 void cifs_dump_mem(char *label
, void *data
, int length
);
26 void cifs_dump_detail(void *buf
, struct TCP_Server_Info
*ptcp_info
);
27 void cifs_dump_mids(struct TCP_Server_Info
*);
28 extern bool traceSMB
; /* flag which enables the function below */
29 void dump_smb(void *, int);
30 #define CIFS_INFO 0x01
32 #define CIFS_TIMER 0x04
37 #ifdef CONFIG_CIFS_DEBUG2
48 #ifdef CONFIG_CIFS_DEBUG
52 * When adding tracepoints and debug messages we have various choices.
53 * Some considerations:
55 * Use cifs_dbg(VFS, ...) for things we always want logged, and the user to see
56 * cifs_info(...) slightly less important, admin can filter via loglevel > 6
57 * cifs_dbg(FYI, ...) minor debugging messages, off by default
58 * trace_smb3_* ftrace functions are preferred for complex debug messages
59 * intended for developers or experienced admins, off by default
62 /* Information level messages, minor events */
63 #define cifs_info_func(ratefunc, fmt, ...) \
65 pr_info_ ## ratefunc("CIFS: " fmt, ##__VA_ARGS__); \
68 #define cifs_info(fmt, ...) \
70 cifs_info_func(ratelimited, fmt, ##__VA_ARGS__); \
73 /* information message: e.g., configuration, major event */
74 #define cifs_dbg_func(ratefunc, type, fmt, ...) \
76 if ((type) & FYI && cifsFYI & CIFS_INFO) { \
77 pr_debug_ ## ratefunc("%s: " \
78 fmt, __FILE__, ##__VA_ARGS__); \
79 } else if ((type) & VFS) { \
80 pr_err_ ## ratefunc("CIFS VFS: " \
81 fmt, ##__VA_ARGS__); \
82 } else if ((type) & NOISY && (NOISY != 0)) { \
83 pr_debug_ ## ratefunc(fmt, ##__VA_ARGS__); \
87 #define cifs_dbg(type, fmt, ...) \
91 type, fmt, ##__VA_ARGS__); \
93 cifs_dbg_func(ratelimited, \
94 type, fmt, ##__VA_ARGS__); \
101 #else /* _CIFS_DEBUG */
102 #define cifs_dbg(type, fmt, ...) \
105 pr_debug(fmt, ##__VA_ARGS__); \
108 #define cifs_info(fmt, ...) \
110 pr_info("CIFS: "fmt, ##__VA_ARGS__); \
114 #endif /* _H_CIFS_DEBUG */