aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/filesystems/ubifs.txt25
-rw-r--r--fs/ubifs/debug.c3
-rw-r--r--fs/ubifs/debug.h132
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
115Module Parameters for Debugging 115Module Parameters for Debugging
116=============================== 116===============================
117 117
118When UBIFS has been compiled with debugging enabled, there are 3 module 118When UBIFS has been compiled with debugging enabled, there are 2 module
119parameters that are available to control aspects of testing and debugging. 119parameters that are available to control aspects of testing and debugging.
120The parameters are unsigned integers where each bit controls an option.
121The parameters are:
122
123debug_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
141debug_chks Selects extra checks that UBIFS can do while running: 121debug_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
159For example, set debug_msgs to 5 to display General messages and Mount 139For example, set debug_chks to 3 to enable general and TNC checks.
160messages.
161 140
162 141
163References 142References
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);
42static char dbg_key_buf0[128]; 42static char dbg_key_buf0[128];
43static char dbg_key_buf1[128]; 43static char dbg_key_buf1[128];
44 44
45unsigned int ubifs_msg_flags;
46unsigned int ubifs_chk_flags; 45unsigned int ubifs_chk_flags;
47unsigned int ubifs_tst_flags; 46unsigned int ubifs_tst_flags;
48 47
49module_param_named(debug_msgs, ubifs_msg_flags, uint, S_IRUGO | S_IWUSR);
50module_param_named(debug_chks, ubifs_chk_flags, uint, S_IRUGO | S_IWUSR); 48module_param_named(debug_chks, ubifs_chk_flags, uint, S_IRUGO | S_IWUSR);
51module_param_named(debug_tsts, ubifs_tst_flags, uint, S_IRUGO | S_IWUSR); 49module_param_named(debug_tsts, ubifs_tst_flags, uint, S_IRUGO | S_IWUSR);
52 50
53MODULE_PARM_DESC(debug_msgs, "Debug message type flags");
54MODULE_PARM_DESC(debug_chks, "Debug check flags"); 51MODULE_PARM_DESC(debug_chks, "Debug check flags");
55MODULE_PARM_DESC(debug_tsts, "Debug special test flags"); 52MODULE_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 */
199enum {
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))