Blame view
fs/jffs2/debug.h
8.35 KB
730554d94 [JFFS2] Debug cod... |
1 2 3 |
/* * JFFS2 -- Journalling Flash File System, Version 2. * |
c00c310ea [JFFS2] Tidy up l... |
4 |
* Copyright © 2001-2007 Red Hat, Inc. |
6088c0587 jffs2: Update cop... |
5 |
* Copyright © 2004-2010 David Woodhouse <dwmw2@infradead.org> |
730554d94 [JFFS2] Debug cod... |
6 7 8 9 10 |
* * Created by David Woodhouse <dwmw2@infradead.org> * * For licensing information, see the file 'LICENCE' in this directory. * |
730554d94 [JFFS2] Debug cod... |
11 |
*/ |
c00c310ea [JFFS2] Tidy up l... |
12 |
|
730554d94 [JFFS2] Debug cod... |
13 14 |
#ifndef _JFFS2_DEBUG_H_ #define _JFFS2_DEBUG_H_ |
e499e01d2 [JFFS2] debug.h: ... |
15 |
#include <linux/sched.h> |
730554d94 [JFFS2] Debug cod... |
16 17 |
#ifndef CONFIG_JFFS2_FS_DEBUG |
f538c96ba [JFFS2] Debug cod... |
18 |
#define CONFIG_JFFS2_FS_DEBUG 0 |
730554d94 [JFFS2] Debug cod... |
19 |
#endif |
008531f4c [JFFS2] Fix broke... |
20 |
#if CONFIG_JFFS2_FS_DEBUG > 0 |
e0c8e42f8 [JFFS2] Debug cod... |
21 |
/* Enable "paranoia" checks and dumps */ |
730554d94 [JFFS2] Debug cod... |
22 |
#define JFFS2_DBG_PARANOIA_CHECKS |
e0c8e42f8 [JFFS2] Debug cod... |
23 |
#define JFFS2_DBG_DUMPS |
733802d97 [JFFS2] Debug cod... |
24 |
|
182ec4eee [JFFS2] Clean up ... |
25 |
/* |
733802d97 [JFFS2] Debug cod... |
26 27 28 |
* By defining/undefining the below macros one may select debugging messages * fro specific JFFS2 subsystems. */ |
e0c8e42f8 [JFFS2] Debug cod... |
29 30 31 32 33 |
#define JFFS2_DBG_READINODE_MESSAGES #define JFFS2_DBG_FRAGTREE_MESSAGES #define JFFS2_DBG_DENTLIST_MESSAGES #define JFFS2_DBG_NODEREF_MESSAGES #define JFFS2_DBG_INOCACHE_MESSAGES |
e631ddba5 [JFFS2] Add erase... |
34 |
#define JFFS2_DBG_SUMMARY_MESSAGES |
733802d97 [JFFS2] Debug cod... |
35 |
#define JFFS2_DBG_FSBUILD_MESSAGES |
e0c8e42f8 [JFFS2] Debug cod... |
36 |
#endif |
008531f4c [JFFS2] Fix broke... |
37 |
#if CONFIG_JFFS2_FS_DEBUG > 1 |
e0c8e42f8 [JFFS2] Debug cod... |
38 |
#define JFFS2_DBG_FRAGTREE2_MESSAGES |
2c61cb250 [JFFS2] Introduce... |
39 |
#define JFFS2_DBG_READINODE2_MESSAGES |
733802d97 [JFFS2] Debug cod... |
40 |
#define JFFS2_DBG_MEMALLOC_MESSAGES |
e0c8e42f8 [JFFS2] Debug cod... |
41 |
#endif |
45ca1b509 [JFFS2] Debug cod... |
42 |
/* Sanity checks are supposed to be light-weight and enabled by default */ |
e0c8e42f8 [JFFS2] Debug cod... |
43 |
#define JFFS2_DBG_SANITY_CHECKS |
182ec4eee [JFFS2] Clean up ... |
44 |
/* |
e0c8e42f8 [JFFS2] Debug cod... |
45 |
* Dx() are mainly used for debugging messages, they must go away and be |
733802d97 [JFFS2] Debug cod... |
46 |
* superseded by nicer dbg_xxx() macros... |
e0c8e42f8 [JFFS2] Debug cod... |
47 48 |
*/ #if CONFIG_JFFS2_FS_DEBUG > 0 |
730554d94 [JFFS2] Debug cod... |
49 50 51 52 53 54 55 56 57 58 |
#define D1(x) x #else #define D1(x) #endif #if CONFIG_JFFS2_FS_DEBUG > 1 #define D2(x) x #else #define D2(x) #endif |
e0c8e42f8 [JFFS2] Debug cod... |
59 |
/* The prefixes of JFFS2 messages */ |
81e39cf02 [JFFS2] Debug mes... |
60 61 62 63 |
#define JFFS2_DBG_PREFIX "[JFFS2 DBG]" #define JFFS2_ERR_PREFIX "JFFS2 error:" #define JFFS2_WARN_PREFIX "JFFS2 warning:" #define JFFS2_NOTICE_PREFIX "JFFS2 notice:" |
730554d94 [JFFS2] Debug cod... |
64 |
|
81e39cf02 [JFFS2] Debug mes... |
65 66 67 68 69 70 71 72 73 |
#define JFFS2_ERR KERN_ERR #define JFFS2_WARN KERN_WARNING #define JFFS2_NOT KERN_NOTICE #define JFFS2_DBG KERN_DEBUG #define JFFS2_DBG_MSG_PREFIX JFFS2_DBG JFFS2_DBG_PREFIX #define JFFS2_ERR_MSG_PREFIX JFFS2_ERR JFFS2_ERR_PREFIX #define JFFS2_WARN_MSG_PREFIX JFFS2_WARN JFFS2_WARN_PREFIX #define JFFS2_NOTICE_MSG_PREFIX JFFS2_NOT JFFS2_NOTICE_PREFIX |
730554d94 [JFFS2] Debug cod... |
74 |
|
e0c8e42f8 [JFFS2] Debug cod... |
75 76 77 |
/* JFFS2 message macros */ #define JFFS2_ERROR(fmt, ...) \ do { \ |
81e39cf02 [JFFS2] Debug mes... |
78 |
printk(JFFS2_ERR_MSG_PREFIX \ |
ba25f9dcc Use helpers to ob... |
79 |
" (%d) %s: " fmt, task_pid_nr(current), \ |
8e24eea72 fs: replace remai... |
80 |
__func__ , ##__VA_ARGS__); \ |
e0c8e42f8 [JFFS2] Debug cod... |
81 |
} while(0) |
730554d94 [JFFS2] Debug cod... |
82 |
|
e0c8e42f8 [JFFS2] Debug cod... |
83 84 |
#define JFFS2_WARNING(fmt, ...) \ do { \ |
81e39cf02 [JFFS2] Debug mes... |
85 |
printk(JFFS2_WARN_MSG_PREFIX \ |
ba25f9dcc Use helpers to ob... |
86 |
" (%d) %s: " fmt, task_pid_nr(current), \ |
8e24eea72 fs: replace remai... |
87 |
__func__ , ##__VA_ARGS__); \ |
e0c8e42f8 [JFFS2] Debug cod... |
88 |
} while(0) |
182ec4eee [JFFS2] Clean up ... |
89 |
|
e0c8e42f8 [JFFS2] Debug cod... |
90 91 |
#define JFFS2_NOTICE(fmt, ...) \ do { \ |
81e39cf02 [JFFS2] Debug mes... |
92 |
printk(JFFS2_NOTICE_MSG_PREFIX \ |
ba25f9dcc Use helpers to ob... |
93 |
" (%d) %s: " fmt, task_pid_nr(current), \ |
8e24eea72 fs: replace remai... |
94 |
__func__ , ##__VA_ARGS__); \ |
e0c8e42f8 [JFFS2] Debug cod... |
95 |
} while(0) |
730554d94 [JFFS2] Debug cod... |
96 |
|
e0c8e42f8 [JFFS2] Debug cod... |
97 98 |
#define JFFS2_DEBUG(fmt, ...) \ do { \ |
81e39cf02 [JFFS2] Debug mes... |
99 |
printk(JFFS2_DBG_MSG_PREFIX \ |
ba25f9dcc Use helpers to ob... |
100 |
" (%d) %s: " fmt, task_pid_nr(current), \ |
8e24eea72 fs: replace remai... |
101 |
__func__ , ##__VA_ARGS__); \ |
e0c8e42f8 [JFFS2] Debug cod... |
102 |
} while(0) |
182ec4eee [JFFS2] Clean up ... |
103 |
/* |
e0c8e42f8 [JFFS2] Debug cod... |
104 105 106 107 108 |
* We split our debugging messages on several parts, depending on the JFFS2 * subsystem the message belongs to. */ /* Read inode debugging messages */ #ifdef JFFS2_DBG_READINODE_MESSAGES |
733802d97 [JFFS2] Debug cod... |
109 |
#define dbg_readinode(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
e0c8e42f8 [JFFS2] Debug cod... |
110 |
#else |
733802d97 [JFFS2] Debug cod... |
111 |
#define dbg_readinode(fmt, ...) |
730554d94 [JFFS2] Debug cod... |
112 |
#endif |
2c61cb250 [JFFS2] Introduce... |
113 114 115 116 117 |
#ifdef JFFS2_DBG_READINODE2_MESSAGES #define dbg_readinode2(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) #else #define dbg_readinode2(fmt, ...) #endif |
730554d94 [JFFS2] Debug cod... |
118 |
|
e0c8e42f8 [JFFS2] Debug cod... |
119 120 |
/* Fragtree build debugging messages */ #ifdef JFFS2_DBG_FRAGTREE_MESSAGES |
733802d97 [JFFS2] Debug cod... |
121 |
#define dbg_fragtree(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
e0c8e42f8 [JFFS2] Debug cod... |
122 |
#else |
733802d97 [JFFS2] Debug cod... |
123 |
#define dbg_fragtree(fmt, ...) |
e0c8e42f8 [JFFS2] Debug cod... |
124 |
#endif |
e0e3006f7 [JFFS2] Refine fr... |
125 |
#ifdef JFFS2_DBG_FRAGTREE2_MESSAGES |
733802d97 [JFFS2] Debug cod... |
126 |
#define dbg_fragtree2(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
e0e3006f7 [JFFS2] Refine fr... |
127 |
#else |
733802d97 [JFFS2] Debug cod... |
128 |
#define dbg_fragtree2(fmt, ...) |
e0e3006f7 [JFFS2] Refine fr... |
129 |
#endif |
e0c8e42f8 [JFFS2] Debug cod... |
130 131 132 |
/* Directory entry list manilulation debugging messages */ #ifdef JFFS2_DBG_DENTLIST_MESSAGES |
733802d97 [JFFS2] Debug cod... |
133 |
#define dbg_dentlist(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
e0c8e42f8 [JFFS2] Debug cod... |
134 |
#else |
733802d97 [JFFS2] Debug cod... |
135 |
#define dbg_dentlist(fmt, ...) |
e0c8e42f8 [JFFS2] Debug cod... |
136 |
#endif |
e0c8e42f8 [JFFS2] Debug cod... |
137 |
|
f538c96ba [JFFS2] Debug cod... |
138 |
/* Print the messages about manipulating node_refs */ |
e0c8e42f8 [JFFS2] Debug cod... |
139 |
#ifdef JFFS2_DBG_NODEREF_MESSAGES |
733802d97 [JFFS2] Debug cod... |
140 |
#define dbg_noderef(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
e0c8e42f8 [JFFS2] Debug cod... |
141 |
#else |
733802d97 [JFFS2] Debug cod... |
142 |
#define dbg_noderef(fmt, ...) |
e0c8e42f8 [JFFS2] Debug cod... |
143 |
#endif |
730554d94 [JFFS2] Debug cod... |
144 |
|
f538c96ba [JFFS2] Debug cod... |
145 |
/* Manipulations with the list of inodes (JFFS2 inocache) */ |
e0c8e42f8 [JFFS2] Debug cod... |
146 |
#ifdef JFFS2_DBG_INOCACHE_MESSAGES |
733802d97 [JFFS2] Debug cod... |
147 |
#define dbg_inocache(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
e0c8e42f8 [JFFS2] Debug cod... |
148 |
#else |
733802d97 [JFFS2] Debug cod... |
149 |
#define dbg_inocache(fmt, ...) |
e0c8e42f8 [JFFS2] Debug cod... |
150 |
#endif |
e631ddba5 [JFFS2] Add erase... |
151 152 |
/* Summary debugging messages */ #ifdef JFFS2_DBG_SUMMARY_MESSAGES |
733802d97 [JFFS2] Debug cod... |
153 154 155 156 157 158 159 160 |
#define dbg_summary(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) #else #define dbg_summary(fmt, ...) #endif /* File system build messages */ #ifdef JFFS2_DBG_FSBUILD_MESSAGES #define dbg_fsbuild(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
e631ddba5 [JFFS2] Add erase... |
161 |
#else |
733802d97 [JFFS2] Debug cod... |
162 |
#define dbg_fsbuild(fmt, ...) |
e631ddba5 [JFFS2] Add erase... |
163 |
#endif |
f538c96ba [JFFS2] Debug cod... |
164 165 |
/* Watch the object allocations */ #ifdef JFFS2_DBG_MEMALLOC_MESSAGES |
733802d97 [JFFS2] Debug cod... |
166 |
#define dbg_memalloc(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) |
f538c96ba [JFFS2] Debug cod... |
167 |
#else |
733802d97 [JFFS2] Debug cod... |
168 |
#define dbg_memalloc(fmt, ...) |
f538c96ba [JFFS2] Debug cod... |
169 |
#endif |
aa98d7cf5 [JFFS2][XATTR] XA... |
170 171 172 173 174 175 |
/* Watch the XATTR subsystem */ #ifdef JFFS2_DBG_XATTR_MESSAGES #define dbg_xattr(fmt, ...) JFFS2_DEBUG(fmt, ##__VA_ARGS__) #else #define dbg_xattr(fmt, ...) #endif |
f538c96ba [JFFS2] Debug cod... |
176 |
|
45ca1b509 [JFFS2] Debug cod... |
177 178 179 180 181 182 183 |
/* "Sanity" checks */ void __jffs2_dbg_acct_sanity_check_nolock(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); void __jffs2_dbg_acct_sanity_check(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); |
e0c8e42f8 [JFFS2] Debug cod... |
184 185 186 |
/* "Paranoia" checks */ void __jffs2_dbg_fragtree_paranoia_check(struct jffs2_inode_info *f); |
730554d94 [JFFS2] Debug cod... |
187 |
void |
e0c8e42f8 [JFFS2] Debug cod... |
188 189 190 191 192 193 194 195 196 197 |
__jffs2_dbg_fragtree_paranoia_check_nolock(struct jffs2_inode_info *f); void __jffs2_dbg_acct_paranoia_check(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); void __jffs2_dbg_acct_paranoia_check_nolock(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); void __jffs2_dbg_prewrite_paranoia_check(struct jffs2_sb_info *c, uint32_t ofs, int len); |
730554d94 [JFFS2] Debug cod... |
198 |
|
e0c8e42f8 [JFFS2] Debug cod... |
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
/* "Dump" functions */ void __jffs2_dbg_dump_jeb(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); void __jffs2_dbg_dump_jeb_nolock(struct jffs2_eraseblock *jeb); void __jffs2_dbg_dump_block_lists(struct jffs2_sb_info *c); void __jffs2_dbg_dump_block_lists_nolock(struct jffs2_sb_info *c); void __jffs2_dbg_dump_node_refs(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); void __jffs2_dbg_dump_node_refs_nolock(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); void __jffs2_dbg_dump_fragtree(struct jffs2_inode_info *f); void __jffs2_dbg_dump_fragtree_nolock(struct jffs2_inode_info *f); |
730554d94 [JFFS2] Debug cod... |
218 |
void |
e0c8e42f8 [JFFS2] Debug cod... |
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
__jffs2_dbg_dump_buffer(unsigned char *buf, int len, uint32_t offs); void __jffs2_dbg_dump_node(struct jffs2_sb_info *c, uint32_t ofs); #ifdef JFFS2_DBG_PARANOIA_CHECKS #define jffs2_dbg_fragtree_paranoia_check(f) \ __jffs2_dbg_fragtree_paranoia_check(f) #define jffs2_dbg_fragtree_paranoia_check_nolock(f) \ __jffs2_dbg_fragtree_paranoia_check_nolock(f) #define jffs2_dbg_acct_paranoia_check(c, jeb) \ __jffs2_dbg_acct_paranoia_check(c,jeb) #define jffs2_dbg_acct_paranoia_check_nolock(c, jeb) \ __jffs2_dbg_acct_paranoia_check_nolock(c,jeb) #define jffs2_dbg_prewrite_paranoia_check(c, ofs, len) \ __jffs2_dbg_prewrite_paranoia_check(c, ofs, len) |
730554d94 [JFFS2] Debug cod... |
234 235 |
#else #define jffs2_dbg_fragtree_paranoia_check(f) |
e0c8e42f8 [JFFS2] Debug cod... |
236 |
#define jffs2_dbg_fragtree_paranoia_check_nolock(f) |
730554d94 [JFFS2] Debug cod... |
237 |
#define jffs2_dbg_acct_paranoia_check(c, jeb) |
e0c8e42f8 [JFFS2] Debug cod... |
238 |
#define jffs2_dbg_acct_paranoia_check_nolock(c, jeb) |
730554d94 [JFFS2] Debug cod... |
239 240 |
#define jffs2_dbg_prewrite_paranoia_check(c, ofs, len) #endif /* !JFFS2_PARANOIA_CHECKS */ |
e0c8e42f8 [JFFS2] Debug cod... |
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
#ifdef JFFS2_DBG_DUMPS #define jffs2_dbg_dump_jeb(c, jeb) \ __jffs2_dbg_dump_jeb(c, jeb); #define jffs2_dbg_dump_jeb_nolock(jeb) \ __jffs2_dbg_dump_jeb_nolock(jeb); #define jffs2_dbg_dump_block_lists(c) \ __jffs2_dbg_dump_block_lists(c) #define jffs2_dbg_dump_block_lists_nolock(c) \ __jffs2_dbg_dump_block_lists_nolock(c) #define jffs2_dbg_dump_fragtree(f) \ __jffs2_dbg_dump_fragtree(f); #define jffs2_dbg_dump_fragtree_nolock(f) \ __jffs2_dbg_dump_fragtree_nolock(f); #define jffs2_dbg_dump_buffer(buf, len, offs) \ __jffs2_dbg_dump_buffer(*buf, len, offs); #define jffs2_dbg_dump_node(c, ofs) \ __jffs2_dbg_dump_node(c, ofs); #else #define jffs2_dbg_dump_jeb(c, jeb) #define jffs2_dbg_dump_jeb_nolock(jeb) #define jffs2_dbg_dump_block_lists(c) #define jffs2_dbg_dump_block_lists_nolock(c) #define jffs2_dbg_dump_fragtree(f) #define jffs2_dbg_dump_fragtree_nolock(f) #define jffs2_dbg_dump_buffer(buf, len, offs) #define jffs2_dbg_dump_node(c, ofs) #endif /* !JFFS2_DBG_DUMPS */ |
730554d94 [JFFS2] Debug cod... |
268 |
#ifdef JFFS2_DBG_SANITY_CHECKS |
45ca1b509 [JFFS2] Debug cod... |
269 270 271 272 |
#define jffs2_dbg_acct_sanity_check(c, jeb) \ __jffs2_dbg_acct_sanity_check(c, jeb) #define jffs2_dbg_acct_sanity_check_nolock(c, jeb) \ __jffs2_dbg_acct_sanity_check_nolock(c, jeb) |
e0c8e42f8 [JFFS2] Debug cod... |
273 274 275 |
#else #define jffs2_dbg_acct_sanity_check(c, jeb) #define jffs2_dbg_acct_sanity_check_nolock(c, jeb) |
730554d94 [JFFS2] Debug cod... |
276 277 278 |
#endif /* !JFFS2_DBG_SANITY_CHECKS */ #endif /* _JFFS2_DEBUG_H_ */ |