xref: /linux/fs/bcachefs/errcode.h (revision 4a4b30ea80d8cb5e8c4c62bb86201f4ea0d9b030)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_ERRCODE_H
3 #define _BCACHEFS_ERRCODE_H
4 
5 #define BCH_ERRCODES()								\
6 	x(ERANGE,			ERANGE_option_too_small)		\
7 	x(ERANGE,			ERANGE_option_too_big)			\
8 	x(EINVAL,			mount_option)				\
9 	x(BCH_ERR_mount_option,		option_name)				\
10 	x(BCH_ERR_mount_option,		option_value)				\
11 	x(BCH_ERR_mount_option,         option_not_bool)                        \
12 	x(ENOMEM,			ENOMEM_stripe_buf)			\
13 	x(ENOMEM,			ENOMEM_replicas_table)			\
14 	x(ENOMEM,			ENOMEM_cpu_replicas)			\
15 	x(ENOMEM,			ENOMEM_replicas_gc)			\
16 	x(ENOMEM,			ENOMEM_disk_groups_validate)		\
17 	x(ENOMEM,			ENOMEM_disk_groups_to_cpu)		\
18 	x(ENOMEM,			ENOMEM_mark_snapshot)			\
19 	x(ENOMEM,			ENOMEM_mark_stripe)			\
20 	x(ENOMEM,			ENOMEM_mark_stripe_ptr)			\
21 	x(ENOMEM,			ENOMEM_btree_key_cache_create)		\
22 	x(ENOMEM,			ENOMEM_btree_key_cache_fill)		\
23 	x(ENOMEM,			ENOMEM_btree_key_cache_insert)		\
24 	x(ENOMEM,			ENOMEM_trans_kmalloc)			\
25 	x(ENOMEM,			ENOMEM_trans_log_msg)			\
26 	x(ENOMEM,			ENOMEM_do_encrypt)			\
27 	x(ENOMEM,			ENOMEM_ec_read_extent)			\
28 	x(ENOMEM,			ENOMEM_ec_stripe_mem_alloc)		\
29 	x(ENOMEM,			ENOMEM_ec_new_stripe_alloc)		\
30 	x(ENOMEM,			ENOMEM_fs_btree_cache_init)		\
31 	x(ENOMEM,			ENOMEM_fs_btree_key_cache_init)		\
32 	x(ENOMEM,			ENOMEM_fs_counters_init)		\
33 	x(ENOMEM,			ENOMEM_fs_btree_write_buffer_init)	\
34 	x(ENOMEM,			ENOMEM_io_clock_init)			\
35 	x(ENOMEM,			ENOMEM_blacklist_table_init)		\
36 	x(ENOMEM,			ENOMEM_sb_realloc_injected)		\
37 	x(ENOMEM,			ENOMEM_sb_bio_realloc)			\
38 	x(ENOMEM,			ENOMEM_sb_buf_realloc)			\
39 	x(ENOMEM,			ENOMEM_sb_journal_validate)		\
40 	x(ENOMEM,			ENOMEM_sb_journal_v2_validate)		\
41 	x(ENOMEM,			ENOMEM_journal_entry_add)		\
42 	x(ENOMEM,			ENOMEM_journal_read_buf_realloc)	\
43 	x(ENOMEM,			ENOMEM_btree_interior_update_worker_init)\
44 	x(ENOMEM,			ENOMEM_btree_interior_update_pool_init)	\
45 	x(ENOMEM,			ENOMEM_bio_read_init)			\
46 	x(ENOMEM,			ENOMEM_bio_read_split_init)		\
47 	x(ENOMEM,			ENOMEM_bio_write_init)			\
48 	x(ENOMEM,			ENOMEM_bio_bounce_pages_init)		\
49 	x(ENOMEM,			ENOMEM_writepage_bioset_init)		\
50 	x(ENOMEM,			ENOMEM_dio_read_bioset_init)		\
51 	x(ENOMEM,			ENOMEM_dio_write_bioset_init)		\
52 	x(ENOMEM,			ENOMEM_nocow_flush_bioset_init)		\
53 	x(ENOMEM,			ENOMEM_promote_table_init)		\
54 	x(ENOMEM,			ENOMEM_compression_bounce_read_init)	\
55 	x(ENOMEM,			ENOMEM_compression_bounce_write_init)	\
56 	x(ENOMEM,			ENOMEM_compression_workspace_init)	\
57 	x(ENOMEM,			ENOMEM_backpointer_mismatches_bitmap)	\
58 	x(EIO,				compression_workspace_not_initialized)	\
59 	x(ENOMEM,			ENOMEM_bucket_gens)			\
60 	x(ENOMEM,			ENOMEM_buckets_nouse)			\
61 	x(ENOMEM,			ENOMEM_usage_init)			\
62 	x(ENOMEM,			ENOMEM_btree_node_read_all_replicas)	\
63 	x(ENOMEM,			ENOMEM_btree_node_reclaim)		\
64 	x(ENOMEM,			ENOMEM_btree_node_mem_alloc)		\
65 	x(ENOMEM,			ENOMEM_btree_cache_cannibalize_lock)	\
66 	x(ENOMEM,			ENOMEM_buckets_waiting_for_journal_init)\
67 	x(ENOMEM,			ENOMEM_buckets_waiting_for_journal_set)	\
68 	x(ENOMEM,			ENOMEM_set_nr_journal_buckets)		\
69 	x(ENOMEM,			ENOMEM_dev_journal_init)		\
70 	x(ENOMEM,			ENOMEM_journal_pin_fifo)		\
71 	x(ENOMEM,			ENOMEM_journal_buf)			\
72 	x(ENOMEM,			ENOMEM_gc_start)			\
73 	x(ENOMEM,			ENOMEM_gc_alloc_start)			\
74 	x(ENOMEM,			ENOMEM_gc_reflink_start)		\
75 	x(ENOMEM,			ENOMEM_gc_gens)				\
76 	x(ENOMEM,			ENOMEM_gc_repair_key)			\
77 	x(ENOMEM,			ENOMEM_fsck_extent_ends_at)		\
78 	x(ENOMEM,			ENOMEM_fsck_add_nlink)			\
79 	x(ENOMEM,			ENOMEM_journal_key_insert)		\
80 	x(ENOMEM,			ENOMEM_journal_keys_sort)		\
81 	x(ENOMEM,			ENOMEM_read_superblock_clean)		\
82 	x(ENOMEM,			ENOMEM_fs_alloc)			\
83 	x(ENOMEM,			ENOMEM_fs_name_alloc)			\
84 	x(ENOMEM,			ENOMEM_fs_other_alloc)			\
85 	x(ENOMEM,			ENOMEM_dev_alloc)			\
86 	x(ENOMEM,			ENOMEM_disk_accounting)			\
87 	x(ENOMEM,			ENOMEM_stripe_head_alloc)		\
88 	x(ENOMEM,                       ENOMEM_journal_read_bucket)             \
89 	x(ENOSPC,			ENOSPC_disk_reservation)		\
90 	x(ENOSPC,			ENOSPC_bucket_alloc)			\
91 	x(ENOSPC,			ENOSPC_disk_label_add)			\
92 	x(ENOSPC,			ENOSPC_stripe_create)			\
93 	x(ENOSPC,			ENOSPC_inode_create)			\
94 	x(ENOSPC,			ENOSPC_str_hash_create)			\
95 	x(ENOSPC,			ENOSPC_snapshot_create)			\
96 	x(ENOSPC,			ENOSPC_subvolume_create)		\
97 	x(ENOSPC,			ENOSPC_sb)				\
98 	x(ENOSPC,			ENOSPC_sb_journal)			\
99 	x(ENOSPC,			ENOSPC_sb_journal_seq_blacklist)	\
100 	x(ENOSPC,			ENOSPC_sb_quota)			\
101 	x(ENOSPC,			ENOSPC_sb_replicas)			\
102 	x(ENOSPC,			ENOSPC_sb_members)			\
103 	x(ENOSPC,			ENOSPC_sb_members_v2)			\
104 	x(ENOSPC,			ENOSPC_sb_crypt)			\
105 	x(ENOSPC,			ENOSPC_sb_downgrade)			\
106 	x(ENOSPC,			ENOSPC_btree_slot)			\
107 	x(ENOSPC,			ENOSPC_snapshot_tree)			\
108 	x(ENOENT,			ENOENT_bkey_type_mismatch)		\
109 	x(ENOENT,			ENOENT_str_hash_lookup)			\
110 	x(ENOENT,			ENOENT_str_hash_set_must_replace)	\
111 	x(ENOENT,			ENOENT_inode)				\
112 	x(ENOENT,			ENOENT_not_subvol)			\
113 	x(ENOENT,			ENOENT_not_directory)			\
114 	x(ENOENT,			ENOENT_directory_dead)			\
115 	x(ENOENT,			ENOENT_subvolume)			\
116 	x(ENOENT,			ENOENT_snapshot_tree)			\
117 	x(ENOENT,			ENOENT_dirent_doesnt_match_inode)	\
118 	x(ENOENT,			ENOENT_dev_not_found)			\
119 	x(ENOENT,			ENOENT_dev_bucket_not_found)		\
120 	x(ENOENT,			ENOENT_dev_idx_not_found)		\
121 	x(ENOENT,			ENOENT_inode_no_backpointer)		\
122 	x(ENOENT,			ENOENT_no_snapshot_tree_subvol)		\
123 	x(ENOENT,			btree_node_dying)			\
124 	x(ENOTEMPTY,			ENOTEMPTY_dir_not_empty)		\
125 	x(ENOTEMPTY,			ENOTEMPTY_subvol_not_empty)		\
126 	x(EEXIST,			EEXIST_str_hash_set)			\
127 	x(EEXIST,			EEXIST_discard_in_flight_add)		\
128 	x(EEXIST,			EEXIST_subvolume_create)		\
129 	x(ENOSPC,			open_buckets_empty)			\
130 	x(ENOSPC,			freelist_empty)				\
131 	x(BCH_ERR_freelist_empty,	no_buckets_found)			\
132 	x(0,				transaction_restart)			\
133 	x(BCH_ERR_transaction_restart,	transaction_restart_fault_inject)	\
134 	x(BCH_ERR_transaction_restart,	transaction_restart_relock)		\
135 	x(BCH_ERR_transaction_restart,	transaction_restart_relock_path)	\
136 	x(BCH_ERR_transaction_restart,	transaction_restart_relock_path_intent)	\
137 	x(BCH_ERR_transaction_restart,	transaction_restart_relock_after_fill)	\
138 	x(BCH_ERR_transaction_restart,	transaction_restart_too_many_iters)	\
139 	x(BCH_ERR_transaction_restart,	transaction_restart_lock_node_reused)	\
140 	x(BCH_ERR_transaction_restart,	transaction_restart_fill_relock)	\
141 	x(BCH_ERR_transaction_restart,	transaction_restart_fill_mem_alloc_fail)\
142 	x(BCH_ERR_transaction_restart,	transaction_restart_mem_realloced)	\
143 	x(BCH_ERR_transaction_restart,	transaction_restart_in_traverse_all)	\
144 	x(BCH_ERR_transaction_restart,	transaction_restart_would_deadlock)	\
145 	x(BCH_ERR_transaction_restart,	transaction_restart_would_deadlock_write)\
146 	x(BCH_ERR_transaction_restart,	transaction_restart_deadlock_recursion_limit)\
147 	x(BCH_ERR_transaction_restart,	transaction_restart_upgrade)		\
148 	x(BCH_ERR_transaction_restart,	transaction_restart_key_cache_upgrade)	\
149 	x(BCH_ERR_transaction_restart,	transaction_restart_key_cache_fill)	\
150 	x(BCH_ERR_transaction_restart,	transaction_restart_key_cache_raced)	\
151 	x(BCH_ERR_transaction_restart,	transaction_restart_key_cache_realloced)\
152 	x(BCH_ERR_transaction_restart,	transaction_restart_journal_preres_get)	\
153 	x(BCH_ERR_transaction_restart,	transaction_restart_split_race)		\
154 	x(BCH_ERR_transaction_restart,	transaction_restart_write_buffer_flush)	\
155 	x(BCH_ERR_transaction_restart,	transaction_restart_nested)		\
156 	x(BCH_ERR_transaction_restart,	transaction_restart_commit)		\
157 	x(0,				no_btree_node)				\
158 	x(BCH_ERR_no_btree_node,	no_btree_node_relock)			\
159 	x(BCH_ERR_no_btree_node,	no_btree_node_upgrade)			\
160 	x(BCH_ERR_no_btree_node,	no_btree_node_drop)			\
161 	x(BCH_ERR_no_btree_node,	no_btree_node_lock_root)		\
162 	x(BCH_ERR_no_btree_node,	no_btree_node_up)			\
163 	x(BCH_ERR_no_btree_node,	no_btree_node_down)			\
164 	x(BCH_ERR_no_btree_node,	no_btree_node_init)			\
165 	x(BCH_ERR_no_btree_node,	no_btree_node_cached)			\
166 	x(BCH_ERR_no_btree_node,	no_btree_node_srcu_reset)		\
167 	x(0,				btree_insert_fail)			\
168 	x(BCH_ERR_btree_insert_fail,	btree_insert_btree_node_full)		\
169 	x(BCH_ERR_btree_insert_fail,	btree_insert_need_mark_replicas)	\
170 	x(BCH_ERR_btree_insert_fail,	btree_insert_need_journal_res)		\
171 	x(BCH_ERR_btree_insert_fail,	btree_insert_need_journal_reclaim)	\
172 	x(0,				backpointer_to_overwritten_btree_node)	\
173 	x(0,				journal_reclaim_would_deadlock)		\
174 	x(EINVAL,			fsck)					\
175 	x(BCH_ERR_fsck,			fsck_fix)				\
176 	x(BCH_ERR_fsck,			fsck_delete_bkey)			\
177 	x(BCH_ERR_fsck,			fsck_ignore)				\
178 	x(BCH_ERR_fsck,			fsck_errors_not_fixed)			\
179 	x(BCH_ERR_fsck,			fsck_repair_unimplemented)		\
180 	x(BCH_ERR_fsck,			fsck_repair_impossible)			\
181 	x(EINVAL,			restart_recovery)			\
182 	x(EINVAL,			not_in_recovery)			\
183 	x(EINVAL,			cannot_rewind_recovery)			\
184 	x(0,				data_update_done)			\
185 	x(BCH_ERR_data_update_done,	data_update_done_would_block)		\
186 	x(BCH_ERR_data_update_done,	data_update_done_unwritten)		\
187 	x(BCH_ERR_data_update_done,	data_update_done_no_writes_needed)	\
188 	x(BCH_ERR_data_update_done,	data_update_done_no_snapshot)		\
189 	x(BCH_ERR_data_update_done,	data_update_done_no_dev_refs)		\
190 	x(BCH_ERR_data_update_done,	data_update_done_no_rw_devs)		\
191 	x(EINVAL,			device_state_not_allowed)		\
192 	x(EINVAL,			member_info_missing)			\
193 	x(EINVAL,			mismatched_block_size)			\
194 	x(EINVAL,			block_size_too_small)			\
195 	x(EINVAL,			bucket_size_too_small)			\
196 	x(EINVAL,			device_size_too_small)			\
197 	x(EINVAL,			device_size_too_big)			\
198 	x(EINVAL,			device_not_a_member_of_filesystem)	\
199 	x(EINVAL,			device_has_been_removed)		\
200 	x(EINVAL,			device_splitbrain)			\
201 	x(EINVAL,			device_already_online)			\
202 	x(EINVAL,			insufficient_devices_to_start)		\
203 	x(EINVAL,			invalid)				\
204 	x(EINVAL,			internal_fsck_err)			\
205 	x(EINVAL,			opt_parse_error)			\
206 	x(EINVAL,			remove_with_metadata_missing_unimplemented)\
207 	x(EINVAL,			remove_would_lose_data)			\
208 	x(EINVAL,			no_resize_with_buckets_nouse)		\
209 	x(EINVAL,			inode_unpack_error)			\
210 	x(EINVAL,			varint_decode_error)			\
211 	x(EINVAL,			erasure_coding_found_btree_node)	\
212 	x(EOPNOTSUPP,			may_not_use_incompat_feature)		\
213 	x(EROFS,			erofs_trans_commit)			\
214 	x(EROFS,			erofs_no_writes)			\
215 	x(EROFS,			erofs_journal_err)			\
216 	x(EROFS,			erofs_sb_err)				\
217 	x(EROFS,			erofs_unfixed_errors)			\
218 	x(EROFS,			erofs_norecovery)			\
219 	x(EROFS,			erofs_nochanges)			\
220 	x(EROFS,			insufficient_devices)			\
221 	x(0,				operation_blocked)			\
222 	x(BCH_ERR_operation_blocked,	btree_cache_cannibalize_lock_blocked)	\
223 	x(BCH_ERR_operation_blocked,	journal_res_blocked)			\
224 	x(BCH_ERR_journal_res_blocked,	journal_blocked)			\
225 	x(BCH_ERR_journal_res_blocked,	journal_max_in_flight)			\
226 	x(BCH_ERR_journal_res_blocked,	journal_max_open)			\
227 	x(BCH_ERR_journal_res_blocked,	journal_full)				\
228 	x(BCH_ERR_journal_res_blocked,	journal_pin_full)			\
229 	x(BCH_ERR_journal_res_blocked,	journal_buf_enomem)			\
230 	x(BCH_ERR_journal_res_blocked,	journal_stuck)				\
231 	x(BCH_ERR_journal_res_blocked,	journal_retry_open)			\
232 	x(BCH_ERR_journal_res_blocked,	journal_preres_get_blocked)		\
233 	x(BCH_ERR_journal_res_blocked,	bucket_alloc_blocked)			\
234 	x(BCH_ERR_journal_res_blocked,	stripe_alloc_blocked)			\
235 	x(BCH_ERR_invalid,		invalid_sb)				\
236 	x(BCH_ERR_invalid_sb,		invalid_sb_magic)			\
237 	x(BCH_ERR_invalid_sb,		invalid_sb_version)			\
238 	x(BCH_ERR_invalid_sb,		invalid_sb_features)			\
239 	x(BCH_ERR_invalid_sb,		invalid_sb_too_big)			\
240 	x(BCH_ERR_invalid_sb,		invalid_sb_csum_type)			\
241 	x(BCH_ERR_invalid_sb,		invalid_sb_csum)			\
242 	x(BCH_ERR_invalid_sb,		invalid_sb_block_size)			\
243 	x(BCH_ERR_invalid_sb,		invalid_sb_uuid)			\
244 	x(BCH_ERR_invalid_sb,		invalid_sb_offset)			\
245 	x(BCH_ERR_invalid_sb,		invalid_sb_too_many_members)		\
246 	x(BCH_ERR_invalid_sb,		invalid_sb_dev_idx)			\
247 	x(BCH_ERR_invalid_sb,		invalid_sb_time_precision)		\
248 	x(BCH_ERR_invalid_sb,		invalid_sb_field_size)			\
249 	x(BCH_ERR_invalid_sb,		invalid_sb_layout)			\
250 	x(BCH_ERR_invalid_sb_layout,	invalid_sb_layout_type)			\
251 	x(BCH_ERR_invalid_sb_layout,	invalid_sb_layout_nr_superblocks)	\
252 	x(BCH_ERR_invalid_sb_layout,	invalid_sb_layout_superblocks_overlap)	\
253 	x(BCH_ERR_invalid_sb_layout,    invalid_sb_layout_sb_max_size_bits)     \
254 	x(BCH_ERR_invalid_sb,		invalid_sb_members_missing)		\
255 	x(BCH_ERR_invalid_sb,		invalid_sb_members)			\
256 	x(BCH_ERR_invalid_sb,		invalid_sb_disk_groups)			\
257 	x(BCH_ERR_invalid_sb,		invalid_sb_replicas)			\
258 	x(BCH_ERR_invalid_sb,		invalid_replicas_entry)			\
259 	x(BCH_ERR_invalid_sb,		invalid_sb_journal)			\
260 	x(BCH_ERR_invalid_sb,		invalid_sb_journal_seq_blacklist)	\
261 	x(BCH_ERR_invalid_sb,		invalid_sb_crypt)			\
262 	x(BCH_ERR_invalid_sb,		invalid_sb_clean)			\
263 	x(BCH_ERR_invalid_sb,		invalid_sb_quota)			\
264 	x(BCH_ERR_invalid_sb,		invalid_sb_errors)			\
265 	x(BCH_ERR_invalid_sb,		invalid_sb_opt_compression)		\
266 	x(BCH_ERR_invalid_sb,		invalid_sb_ext)				\
267 	x(BCH_ERR_invalid_sb,		invalid_sb_downgrade)			\
268 	x(BCH_ERR_invalid,		invalid_bkey)				\
269 	x(BCH_ERR_operation_blocked,    nocow_lock_blocked)			\
270 	x(EIO,				journal_shutdown)			\
271 	x(EIO,				journal_flush_err)			\
272 	x(EIO,				journal_write_err)			\
273 	x(EIO,				btree_node_read_err)			\
274 	x(BCH_ERR_btree_node_read_err,	btree_node_read_err_cached)		\
275 	x(EIO,				sb_not_downgraded)			\
276 	x(EIO,				btree_node_write_all_failed)		\
277 	x(EIO,				btree_node_read_error)			\
278 	x(EIO,				btree_node_read_validate_error)		\
279 	x(EIO,				btree_need_topology_repair)		\
280 	x(EIO,				bucket_ref_update)			\
281 	x(EIO,				trigger_alloc)				\
282 	x(EIO,				trigger_pointer)			\
283 	x(EIO,				trigger_stripe_pointer)			\
284 	x(EIO,				metadata_bucket_inconsistency)		\
285 	x(EIO,				mark_stripe)				\
286 	x(EIO,				stripe_reconstruct)			\
287 	x(EIO,				key_type_error)				\
288 	x(EIO,				extent_poisened)			\
289 	x(EIO,				missing_indirect_extent)		\
290 	x(EIO,				invalidate_stripe_to_dev)		\
291 	x(EIO,				no_encryption_key)			\
292 	x(EIO,				insufficient_journal_devices)		\
293 	x(EIO,				device_offline)				\
294 	x(EIO,				EIO_fault_injected)			\
295 	x(EIO,				ec_block_read)				\
296 	x(EIO,				ec_block_write)				\
297 	x(EIO,				recompute_checksum)			\
298 	x(EIO,				decompress)				\
299 	x(BCH_ERR_decompress,		decompress_exceeded_max_encoded_extent)	\
300 	x(BCH_ERR_decompress,		decompress_lz4)				\
301 	x(BCH_ERR_decompress,		decompress_gzip)			\
302 	x(BCH_ERR_decompress,		decompress_zstd_src_len_bad)		\
303 	x(BCH_ERR_decompress,		decompress_zstd)			\
304 	x(EIO,				data_write)				\
305 	x(BCH_ERR_data_write,		data_write_io)				\
306 	x(BCH_ERR_data_write,		data_write_csum)			\
307 	x(BCH_ERR_data_write,		data_write_invalid_ptr)			\
308 	x(BCH_ERR_data_write,		data_write_misaligned)			\
309 	x(BCH_ERR_decompress,		data_read)				\
310 	x(BCH_ERR_data_read,		no_device_to_read_from)			\
311 	x(BCH_ERR_data_read,		data_read_io_err)			\
312 	x(BCH_ERR_data_read,		data_read_csum_err)			\
313 	x(BCH_ERR_data_read,		data_read_retry)			\
314 	x(BCH_ERR_data_read_retry,	data_read_retry_avoid)			\
315 	x(BCH_ERR_data_read_retry_avoid,data_read_retry_device_offline)		\
316 	x(BCH_ERR_data_read_retry_avoid,data_read_retry_io_err)			\
317 	x(BCH_ERR_data_read_retry_avoid,data_read_retry_ec_reconstruct_err)	\
318 	x(BCH_ERR_data_read_retry_avoid,data_read_retry_csum_err)		\
319 	x(BCH_ERR_data_read_retry,	data_read_retry_csum_err_maybe_userspace)\
320 	x(BCH_ERR_data_read,		data_read_decompress_err)		\
321 	x(BCH_ERR_data_read,		data_read_decrypt_err)			\
322 	x(BCH_ERR_data_read,		data_read_ptr_stale_race)		\
323 	x(BCH_ERR_data_read_retry,	data_read_ptr_stale_retry)		\
324 	x(BCH_ERR_data_read,		data_read_no_encryption_key)		\
325 	x(BCH_ERR_data_read,		data_read_buffer_too_small)		\
326 	x(BCH_ERR_data_read,		data_read_key_overwritten)		\
327 	x(BCH_ERR_btree_node_read_err,	btree_node_read_err_fixable)		\
328 	x(BCH_ERR_btree_node_read_err,	btree_node_read_err_want_retry)		\
329 	x(BCH_ERR_btree_node_read_err,	btree_node_read_err_must_retry)		\
330 	x(BCH_ERR_btree_node_read_err,	btree_node_read_err_bad_node)		\
331 	x(BCH_ERR_btree_node_read_err,	btree_node_read_err_incompatible)	\
332 	x(0,				nopromote)				\
333 	x(BCH_ERR_nopromote,		nopromote_may_not)			\
334 	x(BCH_ERR_nopromote,		nopromote_already_promoted)		\
335 	x(BCH_ERR_nopromote,		nopromote_unwritten)			\
336 	x(BCH_ERR_nopromote,		nopromote_congested)			\
337 	x(BCH_ERR_nopromote,		nopromote_in_flight)			\
338 	x(BCH_ERR_nopromote,		nopromote_no_writes)			\
339 	x(BCH_ERR_nopromote,		nopromote_enomem)			\
340 	x(0,				invalid_snapshot_node)			\
341 	x(0,				option_needs_open_fs)			\
342 	x(0,				remove_disk_accounting_entry)
343 
344 enum bch_errcode {
345 	BCH_ERR_START		= 2048,
346 #define x(class, err) BCH_ERR_##err,
347 	BCH_ERRCODES()
348 #undef x
349 	BCH_ERR_MAX
350 };
351 
352 const char *bch2_err_str(int);
353 bool __bch2_err_matches(int, int);
354 
_bch2_err_matches(int err,int class)355 static inline bool _bch2_err_matches(int err, int class)
356 {
357 	return err < 0 && __bch2_err_matches(err, class);
358 }
359 
360 #define bch2_err_matches(_err, _class)			\
361 ({							\
362 	BUILD_BUG_ON(!__builtin_constant_p(_class));	\
363 	unlikely(_bch2_err_matches(_err, _class));	\
364 })
365 
366 int __bch2_err_class(int);
367 
bch2_err_class(long err)368 static inline long bch2_err_class(long err)
369 {
370 	return err < 0 ? __bch2_err_class(err) : err;
371 }
372 
373 #define BLK_STS_REMOVED		((__force blk_status_t)128)
374 
375 #include <linux/blk_types.h>
376 const char *bch2_blk_status_to_str(blk_status_t);
377 
378 #endif /* _BCACHFES_ERRCODE_H */
379