]> asedeno.scripts.mit.edu Git - linux.git/blob - fs/cifs/cifs_debug.h
skd_main: don't use req->special
[linux.git] / fs / cifs / cifs_debug.h
1 /*
2  *
3  *   Copyright (c) International Business Machines  Corp., 2000,2002
4  *   Modified by Steve French (sfrench@us.ibm.com)
5  *
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.
10  *
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.
15  *
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
19  *
20 */
21
22 #ifndef _H_CIFS_DEBUG
23 #define _H_CIFS_DEBUG
24
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
31 #define CIFS_RC         0x02
32 #define CIFS_TIMER      0x04
33
34 #define VFS 1
35 #define FYI 2
36 extern int cifsFYI;
37 #ifdef CONFIG_CIFS_DEBUG2
38 #define NOISY 4
39 #else
40 #define NOISY 0
41 #endif
42 #define ONCE 8
43
44 /*
45  *      debug ON
46  *      --------
47  */
48 #ifdef CONFIG_CIFS_DEBUG
49
50
51 /*
52  * When adding tracepoints and debug messages we have various choices.
53  * Some considerations:
54  *
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
60  */
61
62 /* Information level messages, minor events */
63 #define cifs_info_func(ratefunc, fmt, ...)                      \
64 do {                                                            \
65         pr_info_ ## ratefunc("CIFS: " fmt, ##__VA_ARGS__);      \
66 } while (0)
67
68 #define cifs_info(fmt, ...)                                     \
69 do {                                                            \
70         cifs_info_func(ratelimited, fmt, ##__VA_ARGS__);        \
71 } while (0)
72
73 /* information message: e.g., configuration, major event */
74 #define cifs_dbg_func(ratefunc, type, fmt, ...)                 \
75 do {                                                            \
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__);      \
84         }                                                       \
85 } while (0)
86
87 #define cifs_dbg(type, fmt, ...) \
88 do {                                                    \
89         if ((type) & ONCE)                              \
90                 cifs_dbg_func(once,                     \
91                          type, fmt, ##__VA_ARGS__);     \
92         else                                            \
93                 cifs_dbg_func(ratelimited,              \
94                         type, fmt, ##__VA_ARGS__);      \
95 } while (0)
96
97 /*
98  *      debug OFF
99  *      ---------
100  */
101 #else           /* _CIFS_DEBUG */
102 #define cifs_dbg(type, fmt, ...)                                        \
103 do {                                                                    \
104         if (0)                                                          \
105                 pr_debug(fmt, ##__VA_ARGS__);                           \
106 } while (0)
107
108 #define cifs_info(fmt, ...)                                             \
109 do {                                                                    \
110         pr_info("CIFS: "fmt, ##__VA_ARGS__);                            \
111 } while (0)
112 #endif
113
114 #endif                          /* _H_CIFS_DEBUG */