Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
xfs
xfs_error.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
3
* All Rights Reserved.
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License as
7
* published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it would be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write the Free Software Foundation,
16
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
#ifndef __XFS_ERROR_H__
19
#define __XFS_ERROR_H__
20
21
#ifdef DEBUG
22
#define XFS_ERROR_NTRAP 10
23
extern
int
xfs_etrap[XFS_ERROR_NTRAP];
24
extern
int
xfs_error_trap(
int
);
25
#define XFS_ERROR(e) xfs_error_trap(e)
26
#else
27
#define XFS_ERROR(e) (e)
28
#endif
29
30
struct
xfs_mount;
31
32
extern
void
xfs_error_report
(
const
char
*
tag
,
int
level
,
struct
xfs_mount *
mp
,
33
const
char
*
filename
,
int
linenum, inst_t *
ra
);
34
extern
void
xfs_corruption_error
(
const
char
*
tag
,
int
level
,
35
struct
xfs_mount *
mp
,
void
*
p
,
const
char
*
filename
,
36
int
linenum, inst_t *
ra
);
37
38
#define XFS_ERROR_REPORT(e, lvl, mp) \
39
xfs_error_report(e, lvl, mp, __FILE__, __LINE__, __return_address)
40
#define XFS_CORRUPTION_ERROR(e, lvl, mp, mem) \
41
xfs_corruption_error(e, lvl, mp, mem, \
42
__FILE__, __LINE__, __return_address)
43
44
#define XFS_ERRLEVEL_OFF 0
45
#define XFS_ERRLEVEL_LOW 1
46
#define XFS_ERRLEVEL_HIGH 5
47
48
/*
49
* Macros to set EFSCORRUPTED & return/branch.
50
*/
51
#define XFS_WANT_CORRUPTED_GOTO(x,l) \
52
{ \
53
int fs_is_ok = (x); \
54
ASSERT(fs_is_ok); \
55
if (unlikely(!fs_is_ok)) { \
56
XFS_ERROR_REPORT("XFS_WANT_CORRUPTED_GOTO", \
57
XFS_ERRLEVEL_LOW, NULL); \
58
error = XFS_ERROR(EFSCORRUPTED); \
59
goto l; \
60
} \
61
}
62
63
#define XFS_WANT_CORRUPTED_RETURN(x) \
64
{ \
65
int fs_is_ok = (x); \
66
ASSERT(fs_is_ok); \
67
if (unlikely(!fs_is_ok)) { \
68
XFS_ERROR_REPORT("XFS_WANT_CORRUPTED_RETURN", \
69
XFS_ERRLEVEL_LOW, NULL); \
70
return XFS_ERROR(EFSCORRUPTED); \
71
} \
72
}
73
74
/*
75
* error injection tags - the labels can be anything you want
76
* but each tag should have its own unique number
77
*/
78
79
#define XFS_ERRTAG_NOERROR 0
80
#define XFS_ERRTAG_IFLUSH_1 1
81
#define XFS_ERRTAG_IFLUSH_2 2
82
#define XFS_ERRTAG_IFLUSH_3 3
83
#define XFS_ERRTAG_IFLUSH_4 4
84
#define XFS_ERRTAG_IFLUSH_5 5
85
#define XFS_ERRTAG_IFLUSH_6 6
86
#define XFS_ERRTAG_DA_READ_BUF 7
87
#define XFS_ERRTAG_BTREE_CHECK_LBLOCK 8
88
#define XFS_ERRTAG_BTREE_CHECK_SBLOCK 9
89
#define XFS_ERRTAG_ALLOC_READ_AGF 10
90
#define XFS_ERRTAG_IALLOC_READ_AGI 11
91
#define XFS_ERRTAG_ITOBP_INOTOBP 12
92
#define XFS_ERRTAG_IUNLINK 13
93
#define XFS_ERRTAG_IUNLINK_REMOVE 14
94
#define XFS_ERRTAG_DIR_INO_VALIDATE 15
95
#define XFS_ERRTAG_BULKSTAT_READ_CHUNK 16
96
#define XFS_ERRTAG_IODONE_IOERR 17
97
#define XFS_ERRTAG_STRATREAD_IOERR 18
98
#define XFS_ERRTAG_STRATCMPL_IOERR 19
99
#define XFS_ERRTAG_DIOWRITE_IOERR 20
100
#define XFS_ERRTAG_BMAPIFORMAT 21
101
#define XFS_ERRTAG_MAX 22
102
103
/*
104
* Random factors for above tags, 1 means always, 2 means 1/2 time, etc.
105
*/
106
#define XFS_RANDOM_DEFAULT 100
107
#define XFS_RANDOM_IFLUSH_1 XFS_RANDOM_DEFAULT
108
#define XFS_RANDOM_IFLUSH_2 XFS_RANDOM_DEFAULT
109
#define XFS_RANDOM_IFLUSH_3 XFS_RANDOM_DEFAULT
110
#define XFS_RANDOM_IFLUSH_4 XFS_RANDOM_DEFAULT
111
#define XFS_RANDOM_IFLUSH_5 XFS_RANDOM_DEFAULT
112
#define XFS_RANDOM_IFLUSH_6 XFS_RANDOM_DEFAULT
113
#define XFS_RANDOM_DA_READ_BUF XFS_RANDOM_DEFAULT
114
#define XFS_RANDOM_BTREE_CHECK_LBLOCK (XFS_RANDOM_DEFAULT/4)
115
#define XFS_RANDOM_BTREE_CHECK_SBLOCK XFS_RANDOM_DEFAULT
116
#define XFS_RANDOM_ALLOC_READ_AGF XFS_RANDOM_DEFAULT
117
#define XFS_RANDOM_IALLOC_READ_AGI XFS_RANDOM_DEFAULT
118
#define XFS_RANDOM_ITOBP_INOTOBP XFS_RANDOM_DEFAULT
119
#define XFS_RANDOM_IUNLINK XFS_RANDOM_DEFAULT
120
#define XFS_RANDOM_IUNLINK_REMOVE XFS_RANDOM_DEFAULT
121
#define XFS_RANDOM_DIR_INO_VALIDATE XFS_RANDOM_DEFAULT
122
#define XFS_RANDOM_BULKSTAT_READ_CHUNK XFS_RANDOM_DEFAULT
123
#define XFS_RANDOM_IODONE_IOERR (XFS_RANDOM_DEFAULT/10)
124
#define XFS_RANDOM_STRATREAD_IOERR (XFS_RANDOM_DEFAULT/10)
125
#define XFS_RANDOM_STRATCMPL_IOERR (XFS_RANDOM_DEFAULT/10)
126
#define XFS_RANDOM_DIOWRITE_IOERR (XFS_RANDOM_DEFAULT/10)
127
#define XFS_RANDOM_BMAPIFORMAT XFS_RANDOM_DEFAULT
128
129
#ifdef DEBUG
130
extern
int
xfs_error_test_active;
131
extern
int
xfs_error_test(
int
,
int
*,
char
*,
int
,
char
*,
unsigned
long
);
132
133
#define XFS_NUM_INJECT_ERROR 10
134
#define XFS_TEST_ERROR(expr, mp, tag, rf) \
135
((expr) || (xfs_error_test_active && \
136
xfs_error_test((tag), (mp)->m_fixedfsid, "expr", __LINE__, __FILE__, \
137
(rf))))
138
139
extern
int
xfs_errortag_add
(
int
error_tag,
struct
xfs_mount *
mp
);
140
extern
int
xfs_errortag_clearall
(
struct
xfs_mount *
mp
,
int
loud);
141
#else
142
#define XFS_TEST_ERROR(expr, mp, tag, rf) (expr)
143
#define xfs_errortag_add(tag, mp) (ENOSYS)
144
#define xfs_errortag_clearall(mp, loud) (ENOSYS)
145
#endif
/* DEBUG */
146
147
/*
148
* XFS panic tags -- allow a call to xfs_alert_tag() be turned into
149
* a panic by setting xfs_panic_mask in a sysctl.
150
*/
151
#define XFS_NO_PTAG 0
152
#define XFS_PTAG_IFLUSH 0x00000001
153
#define XFS_PTAG_LOGRES 0x00000002
154
#define XFS_PTAG_AILDELETE 0x00000004
155
#define XFS_PTAG_ERROR_REPORT 0x00000008
156
#define XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010
157
#define XFS_PTAG_SHUTDOWN_IOERROR 0x00000020
158
#define XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040
159
#define XFS_PTAG_FSBLOCK_ZERO 0x00000080
160
161
#endif
/* __XFS_ERROR_H__ */
Generated on Thu Jan 10 2013 14:50:25 for Linux Kernel by
1.8.2