diff options
-rw-r--r-- | Documentation/filesystems/ubifs.txt | 25 | ||||
-rw-r--r-- | fs/ubifs/debug.c | 3 | ||||
-rw-r--r-- | fs/ubifs/debug.h | 132 |
3 files changed, 43 insertions, 117 deletions
diff --git a/Documentation/filesystems/ubifs.txt b/Documentation/filesystems/ubifs.txt index 7d17e5b91ff4..8e4fab639d9c 100644 --- a/Documentation/filesystems/ubifs.txt +++ b/Documentation/filesystems/ubifs.txt | |||
@@ -115,28 +115,8 @@ ubi.mtd=0 root=ubi0:rootfs rootfstype=ubifs | |||
115 | Module Parameters for Debugging | 115 | Module Parameters for Debugging |
116 | =============================== | 116 | =============================== |
117 | 117 | ||
118 | When UBIFS has been compiled with debugging enabled, there are 3 module | 118 | When UBIFS has been compiled with debugging enabled, there are 2 module |
119 | parameters that are available to control aspects of testing and debugging. | 119 | parameters that are available to control aspects of testing and debugging. |
120 | The parameters are unsigned integers where each bit controls an option. | ||
121 | The parameters are: | ||
122 | |||
123 | debug_msgs Selects which debug messages to display, as follows: | ||
124 | |||
125 | Message Type Flag value | ||
126 | |||
127 | General messages 1 | ||
128 | Journal messages 2 | ||
129 | Mount messages 4 | ||
130 | Commit messages 8 | ||
131 | LEB search messages 16 | ||
132 | Budgeting messages 32 | ||
133 | Garbage collection messages 64 | ||
134 | Tree Node Cache (TNC) messages 128 | ||
135 | LEB properties (lprops) messages 256 | ||
136 | Input/output messages 512 | ||
137 | Log messages 1024 | ||
138 | Scan messages 2048 | ||
139 | Recovery messages 4096 | ||
140 | 120 | ||
141 | debug_chks Selects extra checks that UBIFS can do while running: | 121 | debug_chks Selects extra checks that UBIFS can do while running: |
142 | 122 | ||
@@ -156,8 +136,7 @@ debug_tsts Selects a mode of testing, as follows: | |||
156 | 136 | ||
157 | Failure mode for recovery testing 4 | 137 | Failure mode for recovery testing 4 |
158 | 138 | ||
159 | For example, set debug_msgs to 5 to display General messages and Mount | 139 | For example, set debug_chks to 3 to enable general and TNC checks. |
160 | messages. | ||
161 | 140 | ||
162 | 141 | ||
163 | References | 142 | References |
diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c index f46d77e9f031..0bb2bcef0de9 100644 --- a/fs/ubifs/debug.c +++ b/fs/ubifs/debug.c | |||
@@ -42,15 +42,12 @@ DEFINE_SPINLOCK(dbg_lock); | |||
42 | static char dbg_key_buf0[128]; | 42 | static char dbg_key_buf0[128]; |
43 | static char dbg_key_buf1[128]; | 43 | static char dbg_key_buf1[128]; |
44 | 44 | ||
45 | unsigned int ubifs_msg_flags; | ||
46 | unsigned int ubifs_chk_flags; | 45 | unsigned int ubifs_chk_flags; |
47 | unsigned int ubifs_tst_flags; | 46 | unsigned int ubifs_tst_flags; |
48 | 47 | ||
49 | module_param_named(debug_msgs, ubifs_msg_flags, uint, S_IRUGO | S_IWUSR); | ||
50 | module_param_named(debug_chks, ubifs_chk_flags, uint, S_IRUGO | S_IWUSR); | 48 | module_param_named(debug_chks, ubifs_chk_flags, uint, S_IRUGO | S_IWUSR); |
51 | module_param_named(debug_tsts, ubifs_tst_flags, uint, S_IRUGO | S_IWUSR); | 49 | module_param_named(debug_tsts, ubifs_tst_flags, uint, S_IRUGO | S_IWUSR); |
52 | 50 | ||
53 | MODULE_PARM_DESC(debug_msgs, "Debug message type flags"); | ||
54 | MODULE_PARM_DESC(debug_chks, "Debug check flags"); | 51 | MODULE_PARM_DESC(debug_chks, "Debug check flags"); |
55 | MODULE_PARM_DESC(debug_tsts, "Debug special test flags"); | 52 | MODULE_PARM_DESC(debug_tsts, "Debug special test flags"); |
56 | 53 | ||
diff --git a/fs/ubifs/debug.h b/fs/ubifs/debug.h index 7538bf23c243..a811ac4a26bb 100644 --- a/fs/ubifs/debug.h +++ b/fs/ubifs/debug.h | |||
@@ -109,19 +109,6 @@ struct ubifs_debug_info { | |||
109 | 109 | ||
110 | #define dbg_dump_stack() dump_stack() | 110 | #define dbg_dump_stack() dump_stack() |
111 | 111 | ||
112 | /* Generic debugging messages */ | ||
113 | #define dbg_msg(fmt, ...) do { \ | ||
114 | spin_lock(&dbg_lock); \ | ||
115 | printk(KERN_DEBUG "UBIFS DBG (pid %d): %s: " fmt "\n", current->pid, \ | ||
116 | __func__, ##__VA_ARGS__); \ | ||
117 | spin_unlock(&dbg_lock); \ | ||
118 | } while (0) | ||
119 | |||
120 | #define dbg_do_msg(typ, fmt, ...) do { \ | ||
121 | if (ubifs_msg_flags & typ) \ | ||
122 | dbg_msg(fmt, ##__VA_ARGS__); \ | ||
123 | } while (0) | ||
124 | |||
125 | #define dbg_err(fmt, ...) do { \ | 112 | #define dbg_err(fmt, ...) do { \ |
126 | spin_lock(&dbg_lock); \ | 113 | spin_lock(&dbg_lock); \ |
127 | ubifs_err(fmt, ##__VA_ARGS__); \ | 114 | ubifs_err(fmt, ##__VA_ARGS__); \ |
@@ -140,77 +127,40 @@ const char *dbg_key_str1(const struct ubifs_info *c, | |||
140 | #define DBGKEY(key) dbg_key_str0(c, (key)) | 127 | #define DBGKEY(key) dbg_key_str0(c, (key)) |
141 | #define DBGKEY1(key) dbg_key_str1(c, (key)) | 128 | #define DBGKEY1(key) dbg_key_str1(c, (key)) |
142 | 129 | ||
143 | /* General messages */ | 130 | #define ubifs_dbg_msg(type, fmt, ...) do { \ |
144 | #define dbg_gen(fmt, ...) dbg_do_msg(UBIFS_MSG_GEN, fmt, ##__VA_ARGS__) | 131 | spin_lock(&dbg_lock); \ |
132 | pr_debug("UBIFS DBG " type ": " fmt "\n", ##__VA_ARGS__); \ | ||
133 | spin_unlock(&dbg_lock); \ | ||
134 | } while (0) | ||
145 | 135 | ||
136 | /* Just a debugging messages not related to any specific UBIFS subsystem */ | ||
137 | #define dbg_msg(fmt, ...) ubifs_dbg_msg("msg", fmt, ##__VA_ARGS__) | ||
138 | /* General messages */ | ||
139 | #define dbg_gen(fmt, ...) ubifs_dbg_msg("gen", fmt, ##__VA_ARGS__) | ||
146 | /* Additional journal messages */ | 140 | /* Additional journal messages */ |
147 | #define dbg_jnl(fmt, ...) dbg_do_msg(UBIFS_MSG_JNL, fmt, ##__VA_ARGS__) | 141 | #define dbg_jnl(fmt, ...) ubifs_dbg_msg("jnl", fmt, ##__VA_ARGS__) |
148 | |||
149 | /* Additional TNC messages */ | 142 | /* Additional TNC messages */ |
150 | #define dbg_tnc(fmt, ...) dbg_do_msg(UBIFS_MSG_TNC, fmt, ##__VA_ARGS__) | 143 | #define dbg_tnc(fmt, ...) ubifs_dbg_msg("tnc", fmt, ##__VA_ARGS__) |
151 | |||
152 | /* Additional lprops messages */ | 144 | /* Additional lprops messages */ |
153 | #define dbg_lp(fmt, ...) dbg_do_msg(UBIFS_MSG_LP, fmt, ##__VA_ARGS__) | 145 | #define dbg_lp(fmt, ...) ubifs_dbg_msg("lp", fmt, ##__VA_ARGS__) |
154 | |||
155 | /* Additional LEB find messages */ | 146 | /* Additional LEB find messages */ |
156 | #define dbg_find(fmt, ...) dbg_do_msg(UBIFS_MSG_FIND, fmt, ##__VA_ARGS__) | 147 | #define dbg_find(fmt, ...) ubifs_dbg_msg("find", fmt, ##__VA_ARGS__) |
157 | |||
158 | /* Additional mount messages */ | 148 | /* Additional mount messages */ |
159 | #define dbg_mnt(fmt, ...) dbg_do_msg(UBIFS_MSG_MNT, fmt, ##__VA_ARGS__) | 149 | #define dbg_mnt(fmt, ...) ubifs_dbg_msg("mnt", fmt, ##__VA_ARGS__) |
160 | |||
161 | /* Additional I/O messages */ | 150 | /* Additional I/O messages */ |
162 | #define dbg_io(fmt, ...) dbg_do_msg(UBIFS_MSG_IO, fmt, ##__VA_ARGS__) | 151 | #define dbg_io(fmt, ...) ubifs_dbg_msg("io", fmt, ##__VA_ARGS__) |
163 | |||
164 | /* Additional commit messages */ | 152 | /* Additional commit messages */ |
165 | #define dbg_cmt(fmt, ...) dbg_do_msg(UBIFS_MSG_CMT, fmt, ##__VA_ARGS__) | 153 | #define dbg_cmt(fmt, ...) ubifs_dbg_msg("cmt", fmt, ##__VA_ARGS__) |
166 | |||
167 | /* Additional budgeting messages */ | 154 | /* Additional budgeting messages */ |
168 | #define dbg_budg(fmt, ...) dbg_do_msg(UBIFS_MSG_BUDG, fmt, ##__VA_ARGS__) | 155 | #define dbg_budg(fmt, ...) ubifs_dbg_msg("budg", fmt, ##__VA_ARGS__) |
169 | |||
170 | /* Additional log messages */ | 156 | /* Additional log messages */ |
171 | #define dbg_log(fmt, ...) dbg_do_msg(UBIFS_MSG_LOG, fmt, ##__VA_ARGS__) | 157 | #define dbg_log(fmt, ...) ubifs_dbg_msg("log", fmt, ##__VA_ARGS__) |
172 | |||
173 | /* Additional gc messages */ | 158 | /* Additional gc messages */ |
174 | #define dbg_gc(fmt, ...) dbg_do_msg(UBIFS_MSG_GC, fmt, ##__VA_ARGS__) | 159 | #define dbg_gc(fmt, ...) ubifs_dbg_msg("gc", fmt, ##__VA_ARGS__) |
175 | |||
176 | /* Additional scan messages */ | 160 | /* Additional scan messages */ |
177 | #define dbg_scan(fmt, ...) dbg_do_msg(UBIFS_MSG_SCAN, fmt, ##__VA_ARGS__) | 161 | #define dbg_scan(fmt, ...) ubifs_dbg_msg("scan", fmt, ##__VA_ARGS__) |
178 | |||
179 | /* Additional recovery messages */ | 162 | /* Additional recovery messages */ |
180 | #define dbg_rcvry(fmt, ...) dbg_do_msg(UBIFS_MSG_RCVRY, fmt, ##__VA_ARGS__) | 163 | #define dbg_rcvry(fmt, ...) ubifs_dbg_msg("rcvry", fmt, ##__VA_ARGS__) |
181 | |||
182 | /* | ||
183 | * Debugging message type flags. | ||
184 | * | ||
185 | * UBIFS_MSG_GEN: general messages | ||
186 | * UBIFS_MSG_JNL: journal messages | ||
187 | * UBIFS_MSG_MNT: mount messages | ||
188 | * UBIFS_MSG_CMT: commit messages | ||
189 | * UBIFS_MSG_FIND: LEB find messages | ||
190 | * UBIFS_MSG_BUDG: budgeting messages | ||
191 | * UBIFS_MSG_GC: garbage collection messages | ||
192 | * UBIFS_MSG_TNC: TNC messages | ||
193 | * UBIFS_MSG_LP: lprops messages | ||
194 | * UBIFS_MSG_IO: I/O messages | ||
195 | * UBIFS_MSG_LOG: log messages | ||
196 | * UBIFS_MSG_SCAN: scan messages | ||
197 | * UBIFS_MSG_RCVRY: recovery messages | ||
198 | */ | ||
199 | enum { | ||
200 | UBIFS_MSG_GEN = 0x1, | ||
201 | UBIFS_MSG_JNL = 0x2, | ||
202 | UBIFS_MSG_MNT = 0x4, | ||
203 | UBIFS_MSG_CMT = 0x8, | ||
204 | UBIFS_MSG_FIND = 0x10, | ||
205 | UBIFS_MSG_BUDG = 0x20, | ||
206 | UBIFS_MSG_GC = 0x40, | ||
207 | UBIFS_MSG_TNC = 0x80, | ||
208 | UBIFS_MSG_LP = 0x100, | ||
209 | UBIFS_MSG_IO = 0x200, | ||
210 | UBIFS_MSG_LOG = 0x400, | ||
211 | UBIFS_MSG_SCAN = 0x800, | ||
212 | UBIFS_MSG_RCVRY = 0x1000, | ||
213 | }; | ||
214 | 164 | ||
215 | /* | 165 | /* |
216 | * Debugging check flags. | 166 | * Debugging check flags. |
@@ -368,33 +318,33 @@ void dbg_debugfs_exit_fs(struct ubifs_info *c); | |||
368 | __func__, __LINE__, current->pid); \ | 318 | __func__, __LINE__, current->pid); \ |
369 | } while (0) | 319 | } while (0) |
370 | 320 | ||
371 | #define dbg_err(fmt, ...) do { \ | 321 | #define dbg_err(fmt, ...) do { \ |
372 | if (0) \ | 322 | if (0) \ |
373 | ubifs_err(fmt, ##__VA_ARGS__); \ | 323 | ubifs_err(fmt, ##__VA_ARGS__); \ |
374 | } while (0) | 324 | } while (0) |
375 | 325 | ||
376 | #define dbg_msg(fmt, ...) do { \ | 326 | #define ubifs_dbg_msg(fmt, ...) do { \ |
377 | if (0) \ | 327 | if (0) \ |
378 | printk(KERN_DEBUG "UBIFS DBG (pid %d): %s: " fmt "\n", \ | 328 | pr_debug(fmt "\n", ##__VA_ARGS__); \ |
379 | current->pid, __func__, ##__VA_ARGS__); \ | ||
380 | } while (0) | 329 | } while (0) |
381 | 330 | ||
382 | #define dbg_dump_stack() | 331 | #define dbg_dump_stack() |
383 | #define ubifs_assert_cmt_locked(c) | 332 | #define ubifs_assert_cmt_locked(c) |
384 | 333 | ||
385 | #define dbg_gen(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 334 | #define dbg_msg(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
386 | #define dbg_jnl(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 335 | #define dbg_gen(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
387 | #define dbg_tnc(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 336 | #define dbg_jnl(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
388 | #define dbg_lp(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 337 | #define dbg_tnc(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
389 | #define dbg_find(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 338 | #define dbg_lp(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
390 | #define dbg_mnt(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 339 | #define dbg_find(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
391 | #define dbg_io(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 340 | #define dbg_mnt(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
392 | #define dbg_cmt(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 341 | #define dbg_io(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
393 | #define dbg_budg(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 342 | #define dbg_cmt(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
394 | #define dbg_log(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 343 | #define dbg_budg(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
395 | #define dbg_gc(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 344 | #define dbg_log(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
396 | #define dbg_scan(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 345 | #define dbg_gc(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
397 | #define dbg_rcvry(fmt, ...) dbg_msg(fmt, ##__VA_ARGS__) | 346 | #define dbg_scan(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) |
347 | #define dbg_rcvry(fmt, ...) ubifs_dbg_msg(fmt, ##__VA_ARGS__) | ||
398 | 348 | ||
399 | #define DBGKEY(key) ((char *)(key)) | 349 | #define DBGKEY(key) ((char *)(key)) |
400 | #define DBGKEY1(key) ((char *)(key)) | 350 | #define DBGKEY1(key) ((char *)(key)) |