Skip to content

Commit 759bb4e

Browse files
author
Kent Overstreet
committed
bcachefs: Split out sb-errors_format.h
Signed-off-by: Kent Overstreet <[email protected]>
1 parent 5c16c57 commit 759bb4e

File tree

3 files changed

+297
-292
lines changed

3 files changed

+297
-292
lines changed

fs/bcachefs/bcachefs_format.h

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,7 @@ struct bch_sb_field {
516516
#include "subvolume_format.h"
517517
#include "sb-counters_format.h"
518518
#include "sb-downgrade_format.h"
519+
#include "sb-errors_format.h"
519520
#include "sb-members_format.h"
520521
#include "xattr_format.h"
521522

@@ -667,17 +668,6 @@ struct bch_sb_field_clean {
667668
__u64 _data[];
668669
};
669670

670-
struct bch_sb_field_errors {
671-
struct bch_sb_field field;
672-
struct bch_sb_field_error_entry {
673-
__le64 v;
674-
__le64 last_error_time;
675-
} entries[];
676-
};
677-
678-
LE64_BITMASK(BCH_SB_ERROR_ENTRY_ID, struct bch_sb_field_error_entry, v, 0, 16);
679-
LE64_BITMASK(BCH_SB_ERROR_ENTRY_NR, struct bch_sb_field_error_entry, v, 16, 64);
680-
681671
struct bch_sb_field_ext {
682672
struct bch_sb_field field;
683673
__le64 recovery_passes_required[2];

fs/bcachefs/sb-errors_format.h

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

0 commit comments

Comments
 (0)