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