Commit | Line | Data |
---|---|---|
f5d26fa3 KO |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _BCACHEFS_SB_ERRORS_TYPES_H | |
3 | #define _BCACHEFS_SB_ERRORS_TYPES_H | |
4 | ||
5 | #include "darray.h" | |
6 | ||
6b49b0f7 KO |
7 | #define BCH_SB_ERRS() \ |
8 | x(clean_but_journal_not_empty, 0) \ | |
9 | x(dirty_but_no_journal_entries, 1) \ | |
10 | x(dirty_but_no_journal_entries_post_drop_nonflushes, 2) \ | |
11 | x(sb_clean_journal_seq_mismatch, 3) \ | |
12 | x(sb_clean_btree_root_mismatch, 4) \ | |
13 | x(sb_clean_missing, 5) \ | |
14 | x(jset_unsupported_version, 6) \ | |
15 | x(jset_unknown_csum, 7) \ | |
16 | x(jset_last_seq_newer_than_seq, 8) \ | |
17 | x(jset_past_bucket_end, 9) \ | |
18 | x(jset_seq_blacklisted, 10) \ | |
19 | x(journal_entries_missing, 11) \ | |
20 | x(journal_entry_replicas_not_marked, 12) \ | |
21 | x(journal_entry_past_jset_end, 13) \ | |
22 | x(journal_entry_replicas_data_mismatch, 14) \ | |
23 | x(journal_entry_bkey_u64s_0, 15) \ | |
24 | x(journal_entry_bkey_past_end, 16) \ | |
25 | x(journal_entry_bkey_bad_format, 17) \ | |
26 | x(journal_entry_bkey_invalid, 18) \ | |
27 | x(journal_entry_btree_root_bad_size, 19) \ | |
28 | x(journal_entry_blacklist_bad_size, 20) \ | |
29 | x(journal_entry_blacklist_v2_bad_size, 21) \ | |
30 | x(journal_entry_blacklist_v2_start_past_end, 22) \ | |
31 | x(journal_entry_usage_bad_size, 23) \ | |
32 | x(journal_entry_data_usage_bad_size, 24) \ | |
33 | x(journal_entry_clock_bad_size, 25) \ | |
34 | x(journal_entry_clock_bad_rw, 26) \ | |
35 | x(journal_entry_dev_usage_bad_size, 27) \ | |
36 | x(journal_entry_dev_usage_bad_dev, 28) \ | |
37 | x(journal_entry_dev_usage_bad_pad, 29) \ | |
38 | x(btree_node_unreadable, 30) \ | |
39 | x(btree_node_fault_injected, 31) \ | |
40 | x(btree_node_bad_magic, 32) \ | |
41 | x(btree_node_bad_seq, 33) \ | |
42 | x(btree_node_unsupported_version, 34) \ | |
43 | x(btree_node_bset_older_than_sb_min, 35) \ | |
44 | x(btree_node_bset_newer_than_sb, 36) \ | |
45 | x(btree_node_data_missing, 37) \ | |
46 | x(btree_node_bset_after_end, 38) \ | |
47 | x(btree_node_replicas_sectors_written_mismatch, 39) \ | |
48 | x(btree_node_replicas_data_mismatch, 40) \ | |
49 | x(bset_unknown_csum, 41) \ | |
50 | x(bset_bad_csum, 42) \ | |
51 | x(bset_past_end_of_btree_node, 43) \ | |
52 | x(bset_wrong_sector_offset, 44) \ | |
53 | x(bset_empty, 45) \ | |
54 | x(bset_bad_seq, 46) \ | |
55 | x(bset_blacklisted_journal_seq, 47) \ | |
56 | x(first_bset_blacklisted_journal_seq, 48) \ | |
57 | x(btree_node_bad_btree, 49) \ | |
58 | x(btree_node_bad_level, 50) \ | |
59 | x(btree_node_bad_min_key, 51) \ | |
60 | x(btree_node_bad_max_key, 52) \ | |
61 | x(btree_node_bad_format, 53) \ | |
62 | x(btree_node_bkey_past_bset_end, 54) \ | |
63 | x(btree_node_bkey_bad_format, 55) \ | |
64 | x(btree_node_bad_bkey, 56) \ | |
65 | x(btree_node_bkey_out_of_order, 57) \ | |
66 | x(btree_root_bkey_invalid, 58) \ | |
67 | x(btree_root_read_error, 59) \ | |
68 | x(btree_root_bad_min_key, 60) \ | |
69 | x(btree_root_bad_max_key, 61) \ | |
70 | x(btree_node_read_error, 62) \ | |
71 | x(btree_node_topology_bad_min_key, 63) \ | |
72 | x(btree_node_topology_bad_max_key, 64) \ | |
73 | x(btree_node_topology_overwritten_by_prev_node, 65) \ | |
74 | x(btree_node_topology_overwritten_by_next_node, 66) \ | |
75 | x(btree_node_topology_interior_node_empty, 67) \ | |
76 | x(fs_usage_hidden_wrong, 68) \ | |
77 | x(fs_usage_btree_wrong, 69) \ | |
78 | x(fs_usage_data_wrong, 70) \ | |
79 | x(fs_usage_cached_wrong, 71) \ | |
80 | x(fs_usage_reserved_wrong, 72) \ | |
81 | x(fs_usage_persistent_reserved_wrong, 73) \ | |
82 | x(fs_usage_nr_inodes_wrong, 74) \ | |
83 | x(fs_usage_replicas_wrong, 75) \ | |
84 | x(dev_usage_buckets_wrong, 76) \ | |
85 | x(dev_usage_sectors_wrong, 77) \ | |
86 | x(dev_usage_fragmented_wrong, 78) \ | |
87 | x(dev_usage_buckets_ec_wrong, 79) \ | |
88 | x(bkey_version_in_future, 80) \ | |
89 | x(bkey_u64s_too_small, 81) \ | |
90 | x(bkey_invalid_type_for_btree, 82) \ | |
91 | x(bkey_extent_size_zero, 83) \ | |
92 | x(bkey_extent_size_greater_than_offset, 84) \ | |
93 | x(bkey_size_nonzero, 85) \ | |
94 | x(bkey_snapshot_nonzero, 86) \ | |
95 | x(bkey_snapshot_zero, 87) \ | |
96 | x(bkey_at_pos_max, 88) \ | |
97 | x(bkey_before_start_of_btree_node, 89) \ | |
98 | x(bkey_after_end_of_btree_node, 90) \ | |
99 | x(bkey_val_size_nonzero, 91) \ | |
100 | x(bkey_val_size_too_small, 92) \ | |
101 | x(alloc_v1_val_size_bad, 93) \ | |
102 | x(alloc_v2_unpack_error, 94) \ | |
103 | x(alloc_v3_unpack_error, 95) \ | |
104 | x(alloc_v4_val_size_bad, 96) \ | |
105 | x(alloc_v4_backpointers_start_bad, 97) \ | |
106 | x(alloc_key_data_type_bad, 98) \ | |
107 | x(alloc_key_empty_but_have_data, 99) \ | |
108 | x(alloc_key_dirty_sectors_0, 100) \ | |
109 | x(alloc_key_data_type_inconsistency, 101) \ | |
110 | x(alloc_key_to_missing_dev_bucket, 102) \ | |
111 | x(alloc_key_cached_inconsistency, 103) \ | |
112 | x(alloc_key_cached_but_read_time_zero, 104) \ | |
113 | x(alloc_key_to_missing_lru_entry, 105) \ | |
114 | x(alloc_key_data_type_wrong, 106) \ | |
115 | x(alloc_key_gen_wrong, 107) \ | |
116 | x(alloc_key_dirty_sectors_wrong, 108) \ | |
117 | x(alloc_key_cached_sectors_wrong, 109) \ | |
118 | x(alloc_key_stripe_wrong, 110) \ | |
119 | x(alloc_key_stripe_redundancy_wrong, 111) \ | |
120 | x(bucket_sector_count_overflow, 112) \ | |
121 | x(bucket_metadata_type_mismatch, 113) \ | |
122 | x(need_discard_key_wrong, 114) \ | |
123 | x(freespace_key_wrong, 115) \ | |
124 | x(freespace_hole_missing, 116) \ | |
125 | x(bucket_gens_val_size_bad, 117) \ | |
126 | x(bucket_gens_key_wrong, 118) \ | |
127 | x(bucket_gens_hole_wrong, 119) \ | |
128 | x(bucket_gens_to_invalid_dev, 120) \ | |
129 | x(bucket_gens_to_invalid_buckets, 121) \ | |
130 | x(bucket_gens_nonzero_for_invalid_buckets, 122) \ | |
131 | x(need_discard_freespace_key_to_invalid_dev_bucket, 123) \ | |
132 | x(need_discard_freespace_key_bad, 124) \ | |
f0a73d4f | 133 | x(backpointer_bucket_offset_wrong, 125) \ |
6b49b0f7 KO |
134 | x(backpointer_to_missing_device, 126) \ |
135 | x(backpointer_to_missing_alloc, 127) \ | |
136 | x(backpointer_to_missing_ptr, 128) \ | |
137 | x(lru_entry_at_time_0, 129) \ | |
138 | x(lru_entry_to_invalid_bucket, 130) \ | |
139 | x(lru_entry_bad, 131) \ | |
140 | x(btree_ptr_val_too_big, 132) \ | |
141 | x(btree_ptr_v2_val_too_big, 133) \ | |
142 | x(btree_ptr_has_non_ptr, 134) \ | |
143 | x(extent_ptrs_invalid_entry, 135) \ | |
144 | x(extent_ptrs_no_ptrs, 136) \ | |
145 | x(extent_ptrs_too_many_ptrs, 137) \ | |
146 | x(extent_ptrs_redundant_crc, 138) \ | |
147 | x(extent_ptrs_redundant_stripe, 139) \ | |
148 | x(extent_ptrs_unwritten, 140) \ | |
149 | x(extent_ptrs_written_and_unwritten, 141) \ | |
150 | x(ptr_to_invalid_device, 142) \ | |
151 | x(ptr_to_duplicate_device, 143) \ | |
152 | x(ptr_after_last_bucket, 144) \ | |
153 | x(ptr_before_first_bucket, 145) \ | |
154 | x(ptr_spans_multiple_buckets, 146) \ | |
155 | x(ptr_to_missing_backpointer, 147) \ | |
156 | x(ptr_to_missing_alloc_key, 148) \ | |
157 | x(ptr_to_missing_replicas_entry, 149) \ | |
158 | x(ptr_to_missing_stripe, 150) \ | |
159 | x(ptr_to_incorrect_stripe, 151) \ | |
160 | x(ptr_gen_newer_than_bucket_gen, 152) \ | |
161 | x(ptr_too_stale, 153) \ | |
162 | x(stale_dirty_ptr, 154) \ | |
163 | x(ptr_bucket_data_type_mismatch, 155) \ | |
164 | x(ptr_cached_and_erasure_coded, 156) \ | |
165 | x(ptr_crc_uncompressed_size_too_small, 157) \ | |
166 | x(ptr_crc_csum_type_unknown, 158) \ | |
167 | x(ptr_crc_compression_type_unknown, 159) \ | |
168 | x(ptr_crc_redundant, 160) \ | |
169 | x(ptr_crc_uncompressed_size_too_big, 161) \ | |
170 | x(ptr_crc_nonce_mismatch, 162) \ | |
171 | x(ptr_stripe_redundant, 163) \ | |
172 | x(reservation_key_nr_replicas_invalid, 164) \ | |
173 | x(reflink_v_refcount_wrong, 165) \ | |
174 | x(reflink_p_to_missing_reflink_v, 166) \ | |
175 | x(stripe_pos_bad, 167) \ | |
176 | x(stripe_val_size_bad, 168) \ | |
177 | x(stripe_sector_count_wrong, 169) \ | |
178 | x(snapshot_tree_pos_bad, 170) \ | |
179 | x(snapshot_tree_to_missing_snapshot, 171) \ | |
180 | x(snapshot_tree_to_missing_subvol, 172) \ | |
181 | x(snapshot_tree_to_wrong_subvol, 173) \ | |
182 | x(snapshot_tree_to_snapshot_subvol, 174) \ | |
183 | x(snapshot_pos_bad, 175) \ | |
184 | x(snapshot_parent_bad, 176) \ | |
185 | x(snapshot_children_not_normalized, 177) \ | |
186 | x(snapshot_child_duplicate, 178) \ | |
187 | x(snapshot_child_bad, 179) \ | |
188 | x(snapshot_skiplist_not_normalized, 180) \ | |
189 | x(snapshot_skiplist_bad, 181) \ | |
190 | x(snapshot_should_not_have_subvol, 182) \ | |
191 | x(snapshot_to_bad_snapshot_tree, 183) \ | |
192 | x(snapshot_bad_depth, 184) \ | |
193 | x(snapshot_bad_skiplist, 185) \ | |
194 | x(subvol_pos_bad, 186) \ | |
195 | x(subvol_not_master_and_not_snapshot, 187) \ | |
196 | x(subvol_to_missing_root, 188) \ | |
197 | x(subvol_root_wrong_bi_subvol, 189) \ | |
198 | x(bkey_in_missing_snapshot, 190) \ | |
199 | x(inode_pos_inode_nonzero, 191) \ | |
200 | x(inode_pos_blockdev_range, 192) \ | |
201 | x(inode_unpack_error, 193) \ | |
202 | x(inode_str_hash_invalid, 194) \ | |
203 | x(inode_v3_fields_start_bad, 195) \ | |
204 | x(inode_snapshot_mismatch, 196) \ | |
205 | x(inode_unlinked_but_clean, 197) \ | |
206 | x(inode_unlinked_but_nlink_nonzero, 198) \ | |
207 | x(inode_checksum_type_invalid, 199) \ | |
208 | x(inode_compression_type_invalid, 200) \ | |
209 | x(inode_subvol_root_but_not_dir, 201) \ | |
210 | x(inode_i_size_dirty_but_clean, 202) \ | |
211 | x(inode_i_sectors_dirty_but_clean, 203) \ | |
212 | x(inode_i_sectors_wrong, 204) \ | |
213 | x(inode_dir_wrong_nlink, 205) \ | |
214 | x(inode_dir_multiple_links, 206) \ | |
215 | x(inode_multiple_links_but_nlink_0, 207) \ | |
216 | x(inode_wrong_backpointer, 208) \ | |
217 | x(inode_wrong_nlink, 209) \ | |
218 | x(inode_unreachable, 210) \ | |
219 | x(deleted_inode_but_clean, 211) \ | |
220 | x(deleted_inode_missing, 212) \ | |
221 | x(deleted_inode_is_dir, 213) \ | |
222 | x(deleted_inode_not_unlinked, 214) \ | |
223 | x(extent_overlapping, 215) \ | |
224 | x(extent_in_missing_inode, 216) \ | |
225 | x(extent_in_non_reg_inode, 217) \ | |
226 | x(extent_past_end_of_inode, 218) \ | |
227 | x(dirent_empty_name, 219) \ | |
228 | x(dirent_val_too_big, 220) \ | |
229 | x(dirent_name_too_long, 221) \ | |
230 | x(dirent_name_embedded_nul, 222) \ | |
231 | x(dirent_name_dot_or_dotdot, 223) \ | |
232 | x(dirent_name_has_slash, 224) \ | |
233 | x(dirent_d_type_wrong, 225) \ | |
f4e68c85 | 234 | x(inode_bi_parent_wrong, 226) \ |
6b49b0f7 KO |
235 | x(dirent_in_missing_dir_inode, 227) \ |
236 | x(dirent_in_non_dir_inode, 228) \ | |
237 | x(dirent_to_missing_inode, 229) \ | |
238 | x(dirent_to_missing_subvol, 230) \ | |
239 | x(dirent_to_itself, 231) \ | |
240 | x(quota_type_invalid, 232) \ | |
241 | x(xattr_val_size_too_small, 233) \ | |
242 | x(xattr_val_size_too_big, 234) \ | |
243 | x(xattr_invalid_type, 235) \ | |
244 | x(xattr_name_invalid_chars, 236) \ | |
245 | x(xattr_in_missing_inode, 237) \ | |
246 | x(root_subvol_missing, 238) \ | |
247 | x(root_dir_missing, 239) \ | |
248 | x(root_inode_not_dir, 240) \ | |
249 | x(dir_loop, 241) \ | |
250 | x(hash_table_key_duplicate, 242) \ | |
359d1bad | 251 | x(hash_table_key_wrong_offset, 243) \ |
074cbcda | 252 | x(unlinked_inode_not_on_deleted_list, 244) \ |
94817db9 KO |
253 | x(reflink_p_front_pad_bad, 245) \ |
254 | x(journal_entry_dup_same_device, 246) \ | |
255 | x(inode_bi_subvol_missing, 247) \ | |
256 | x(inode_bi_subvol_wrong, 248) \ | |
257 | x(inode_points_to_missing_dirent, 249) \ | |
258 | x(inode_points_to_wrong_dirent, 250) \ | |
259 | x(inode_bi_parent_nonzero, 251) \ | |
260 | x(dirent_to_missing_parent_subvol, 252) \ | |
261 | x(dirent_not_visible_in_parent_subvol, 253) \ | |
262 | x(subvol_fs_path_parent_wrong, 254) \ | |
263 | x(subvol_root_fs_path_parent_nonzero, 255) \ | |
264 | x(subvol_children_not_set, 256) \ | |
265 | x(subvol_children_bad, 257) \ | |
266 | x(subvol_loop, 258) \ | |
267 | x(subvol_unreachable, 259) \ | |
79032b07 | 268 | x(btree_node_bkey_bad_u64s, 260) \ |
805b535a | 269 | x(btree_node_topology_empty_interior_node, 261) \ |
43f5ea46 | 270 | x(btree_ptr_v2_min_key_bad, 262) \ |
a292be3b | 271 | x(btree_root_unreadable_and_scan_found_nothing, 263) \ |
4c02e63d | 272 | x(snapshot_node_missing, 264) \ |
27c15ed2 | 273 | x(dup_backpointer_to_bad_csum_extent, 265) \ |
fcdbc1d7 KO |
274 | x(btree_bitmap_not_marked, 266) \ |
275 | x(sb_clean_entry_overrun, 267) | |
6b49b0f7 KO |
276 | |
277 | enum bch_sb_error_id { | |
278 | #define x(t, n) BCH_FSCK_ERR_##t = n, | |
279 | BCH_SB_ERRS() | |
280 | #undef x | |
281 | BCH_SB_ERR_MAX | |
282 | }; | |
283 | ||
f5d26fa3 KO |
284 | struct bch_sb_error_entry_cpu { |
285 | u64 id:16, | |
286 | nr:48; | |
287 | u64 last_error_time; | |
288 | }; | |
289 | ||
290 | typedef DARRAY(struct bch_sb_error_entry_cpu) bch_sb_errors_cpu; | |
291 | ||
292 | #endif /* _BCACHEFS_SB_ERRORS_TYPES_H */ | |
293 |