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