]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/errcode.h
rust: Fix ptr casting in Fs::open()
[bcachefs-tools-debian] / libbcachefs / errcode.h
index 15a1be2fcc84e68df6205bc8560fffda72e2a4d1..283303db7dfda74919cc5c0d532972c30c6c47f0 100644 (file)
 #ifndef _BCACHEFS_ERRCODE_H
 #define _BCACHEFS_ERRCODE_H
 
-#define BCH_ERRCODES()                                                 \
-       x(0,                    open_buckets_empty)                     \
-       x(0,                    freelist_empty)                         \
-       x(freelist_empty,       no_buckets_found)                       \
-       x(0,                    insufficient_devices)                   \
-       x(0,                    transaction_restart)                    \
-       x(transaction_restart,  transaction_restart_fault_inject)       \
-       x(transaction_restart,  transaction_restart_relock)             \
-       x(transaction_restart,  transaction_restart_relock_path)        \
-       x(transaction_restart,  transaction_restart_relock_path_intent) \
-       x(transaction_restart,  transaction_restart_relock_after_fill)  \
-       x(transaction_restart,  transaction_restart_too_many_iters)     \
-       x(transaction_restart,  transaction_restart_lock_node_reused)   \
-       x(transaction_restart,  transaction_restart_fill_relock)        \
-       x(transaction_restart,  transaction_restart_fill_mem_alloc_fail)\
-       x(transaction_restart,  transaction_restart_mem_realloced)      \
-       x(transaction_restart,  transaction_restart_in_traverse_all)    \
-       x(transaction_restart,  transaction_restart_would_deadlock)     \
-       x(transaction_restart,  transaction_restart_would_deadlock_write)\
-       x(transaction_restart,  transaction_restart_upgrade)            \
-       x(transaction_restart,  transaction_restart_key_cache_upgrade)  \
-       x(transaction_restart,  transaction_restart_key_cache_fill)     \
-       x(transaction_restart,  transaction_restart_key_cache_raced)    \
-       x(transaction_restart,  transaction_restart_key_cache_realloced)\
-       x(transaction_restart,  transaction_restart_journal_preres_get) \
-       x(transaction_restart,  transaction_restart_nested)             \
-       x(0,                    no_btree_node)                          \
-       x(no_btree_node,        no_btree_node_relock)                   \
-       x(no_btree_node,        no_btree_node_upgrade)                  \
-       x(no_btree_node,        no_btree_node_drop)                     \
-       x(no_btree_node,        no_btree_node_lock_root)                \
-       x(no_btree_node,        no_btree_node_up)                       \
-       x(no_btree_node,        no_btree_node_down)                     \
-       x(no_btree_node,        no_btree_node_init)                     \
-       x(no_btree_node,        no_btree_node_cached)                   \
-       x(0,                    lock_fail_node_reused)                  \
-       x(0,                    lock_fail_root_changed)                 \
-       x(0,                    journal_reclaim_would_deadlock)         \
-       x(0,                    fsck)                                   \
-       x(fsck,                 fsck_fix)                               \
-       x(fsck,                 fsck_ignore)                            \
-       x(fsck,                 fsck_errors_not_fixed)                  \
-       x(fsck,                 fsck_repair_unimplemented)              \
-       x(fsck,                 fsck_repair_impossible)                 \
-       x(0,                    need_snapshot_cleanup)                  \
-       x(0,                    need_topology_repair)
+#define BCH_ERRCODES()                                                         \
+       x(ENOSPC,                       ENOSPC_disk_reservation)                \
+       x(ENOSPC,                       ENOSPC_bucket_alloc)                    \
+       x(ENOSPC,                       ENOSPC_disk_label_add)                  \
+       x(ENOSPC,                       ENOSPC_stripe_create)                   \
+       x(ENOSPC,                       ENOSPC_stripe_reuse)                    \
+       x(ENOSPC,                       ENOSPC_inode_create)                    \
+       x(ENOSPC,                       ENOSPC_str_hash_create)                 \
+       x(ENOSPC,                       ENOSPC_snapshot_create)                 \
+       x(ENOSPC,                       ENOSPC_subvolume_create)                \
+       x(ENOSPC,                       ENOSPC_sb)                              \
+       x(ENOSPC,                       ENOSPC_sb_journal)                      \
+       x(ENOSPC,                       ENOSPC_sb_quota)                        \
+       x(ENOSPC,                       ENOSPC_sb_replicas)                     \
+       x(ENOSPC,                       ENOSPC_sb_members)                      \
+       x(0,                            open_buckets_empty)                     \
+       x(0,                            freelist_empty)                         \
+       x(BCH_ERR_freelist_empty,       no_buckets_found)                       \
+       x(0,                            transaction_restart)                    \
+       x(BCH_ERR_transaction_restart,  transaction_restart_fault_inject)       \
+       x(BCH_ERR_transaction_restart,  transaction_restart_relock)             \
+       x(BCH_ERR_transaction_restart,  transaction_restart_relock_path)        \
+       x(BCH_ERR_transaction_restart,  transaction_restart_relock_path_intent) \
+       x(BCH_ERR_transaction_restart,  transaction_restart_relock_after_fill)  \
+       x(BCH_ERR_transaction_restart,  transaction_restart_too_many_iters)     \
+       x(BCH_ERR_transaction_restart,  transaction_restart_lock_node_reused)   \
+       x(BCH_ERR_transaction_restart,  transaction_restart_fill_relock)        \
+       x(BCH_ERR_transaction_restart,  transaction_restart_fill_mem_alloc_fail)\
+       x(BCH_ERR_transaction_restart,  transaction_restart_mem_realloced)      \
+       x(BCH_ERR_transaction_restart,  transaction_restart_in_traverse_all)    \
+       x(BCH_ERR_transaction_restart,  transaction_restart_would_deadlock)     \
+       x(BCH_ERR_transaction_restart,  transaction_restart_would_deadlock_write)\
+       x(BCH_ERR_transaction_restart,  transaction_restart_deadlock_recursion_limit)\
+       x(BCH_ERR_transaction_restart,  transaction_restart_upgrade)            \
+       x(BCH_ERR_transaction_restart,  transaction_restart_key_cache_upgrade)  \
+       x(BCH_ERR_transaction_restart,  transaction_restart_key_cache_fill)     \
+       x(BCH_ERR_transaction_restart,  transaction_restart_key_cache_raced)    \
+       x(BCH_ERR_transaction_restart,  transaction_restart_key_cache_realloced)\
+       x(BCH_ERR_transaction_restart,  transaction_restart_journal_preres_get) \
+       x(BCH_ERR_transaction_restart,  transaction_restart_split_race)         \
+       x(BCH_ERR_transaction_restart,  transaction_restart_write_buffer_flush) \
+       x(BCH_ERR_transaction_restart,  transaction_restart_nested)             \
+       x(0,                            no_btree_node)                          \
+       x(BCH_ERR_no_btree_node,        no_btree_node_relock)                   \
+       x(BCH_ERR_no_btree_node,        no_btree_node_upgrade)                  \
+       x(BCH_ERR_no_btree_node,        no_btree_node_drop)                     \
+       x(BCH_ERR_no_btree_node,        no_btree_node_lock_root)                \
+       x(BCH_ERR_no_btree_node,        no_btree_node_up)                       \
+       x(BCH_ERR_no_btree_node,        no_btree_node_down)                     \
+       x(BCH_ERR_no_btree_node,        no_btree_node_init)                     \
+       x(BCH_ERR_no_btree_node,        no_btree_node_cached)                   \
+       x(BCH_ERR_no_btree_node,        no_btree_node_srcu_reset)               \
+       x(0,                            btree_insert_fail)                      \
+       x(BCH_ERR_btree_insert_fail,    btree_insert_btree_node_full)           \
+       x(BCH_ERR_btree_insert_fail,    btree_insert_need_mark_replicas)        \
+       x(BCH_ERR_btree_insert_fail,    btree_insert_need_journal_res)          \
+       x(BCH_ERR_btree_insert_fail,    btree_insert_need_journal_reclaim)      \
+       x(BCH_ERR_btree_insert_fail,    btree_insert_need_flush_buffer)         \
+       x(0,                            backpointer_to_overwritten_btree_node)  \
+       x(0,                            lock_fail_root_changed)                 \
+       x(0,                            journal_reclaim_would_deadlock)         \
+       x(0,                            fsck)                                   \
+       x(BCH_ERR_fsck,                 fsck_fix)                               \
+       x(BCH_ERR_fsck,                 fsck_ignore)                            \
+       x(BCH_ERR_fsck,                 fsck_errors_not_fixed)                  \
+       x(BCH_ERR_fsck,                 fsck_repair_unimplemented)              \
+       x(BCH_ERR_fsck,                 fsck_repair_impossible)                 \
+       x(0,                            need_snapshot_cleanup)                  \
+       x(0,                            need_topology_repair)                   \
+       x(0,                            unwritten_extent_update)                \
+       x(EINVAL,                       device_state_not_allowed)               \
+       x(EINVAL,                       member_info_missing)                    \
+       x(EINVAL,                       mismatched_block_size)                  \
+       x(EINVAL,                       block_size_too_small)                   \
+       x(EINVAL,                       bucket_size_too_small)                  \
+       x(EINVAL,                       device_size_too_small)                  \
+       x(EINVAL,                       device_not_a_member_of_filesystem)      \
+       x(EINVAL,                       device_has_been_removed)                \
+       x(EINVAL,                       device_already_online)                  \
+       x(EINVAL,                       insufficient_devices_to_start)          \
+       x(EINVAL,                       invalid)                                \
+       x(EROFS,                        erofs_trans_commit)                     \
+       x(EROFS,                        erofs_no_writes)                        \
+       x(EROFS,                        erofs_journal_err)                      \
+       x(EROFS,                        erofs_sb_err)                           \
+       x(EROFS,                        insufficient_devices)                   \
+       x(0,                            operation_blocked)                      \
+       x(BCH_ERR_operation_blocked,    btree_cache_cannibalize_lock_blocked)   \
+       x(BCH_ERR_operation_blocked,    journal_res_get_blocked)                \
+       x(BCH_ERR_operation_blocked,    journal_preres_get_blocked)             \
+       x(BCH_ERR_operation_blocked,    bucket_alloc_blocked)                   \
+       x(BCH_ERR_operation_blocked,    stripe_alloc_blocked)                   \
+       x(BCH_ERR_invalid,              invalid_sb)                             \
+       x(BCH_ERR_invalid_sb,           invalid_sb_magic)                       \
+       x(BCH_ERR_invalid_sb,           invalid_sb_version)                     \
+       x(BCH_ERR_invalid_sb,           invalid_sb_features)                    \
+       x(BCH_ERR_invalid_sb,           invalid_sb_too_big)                     \
+       x(BCH_ERR_invalid_sb,           invalid_sb_csum_type)                   \
+       x(BCH_ERR_invalid_sb,           invalid_sb_csum)                        \
+       x(BCH_ERR_invalid_sb,           invalid_sb_block_size)                  \
+       x(BCH_ERR_invalid_sb,           invalid_sb_uuid)                        \
+       x(BCH_ERR_invalid_sb,           invalid_sb_too_many_members)            \
+       x(BCH_ERR_invalid_sb,           invalid_sb_dev_idx)                     \
+       x(BCH_ERR_invalid_sb,           invalid_sb_time_precision)              \
+       x(BCH_ERR_invalid_sb,           invalid_sb_field_size)                  \
+       x(BCH_ERR_invalid_sb,           invalid_sb_layout)                      \
+       x(BCH_ERR_invalid_sb_layout,    invalid_sb_layout_type)                 \
+       x(BCH_ERR_invalid_sb_layout,    invalid_sb_layout_nr_superblocks)       \
+       x(BCH_ERR_invalid_sb_layout,    invalid_sb_layout_superblocks_overlap)  \
+       x(BCH_ERR_invalid_sb,           invalid_sb_members_missing)             \
+       x(BCH_ERR_invalid_sb,           invalid_sb_members)                     \
+       x(BCH_ERR_invalid_sb,           invalid_sb_disk_groups)                 \
+       x(BCH_ERR_invalid_sb,           invalid_sb_replicas)                    \
+       x(BCH_ERR_invalid_sb,           invalid_sb_journal)                     \
+       x(BCH_ERR_invalid_sb,           invalid_sb_journal_seq_blacklist)       \
+       x(BCH_ERR_invalid_sb,           invalid_sb_crypt)                       \
+       x(BCH_ERR_invalid_sb,           invalid_sb_clean)                       \
+       x(BCH_ERR_invalid_sb,           invalid_sb_quota)                       \
+       x(BCH_ERR_invalid,              invalid_bkey)                           \
+       x(BCH_ERR_operation_blocked,    nocow_lock_blocked)                     \
 
 enum bch_errcode {
        BCH_ERR_START           = 2048,
@@ -71,4 +145,11 @@ static inline bool _bch2_err_matches(int err, int class)
        _bch2_err_matches(_err, _class);                \
 })
 
+int __bch2_err_class(int);
+
+static inline long bch2_err_class(long err)
+{
+       return err < 0 ? __bch2_err_class(err) : err;
+}
+
 #endif /* _BCACHFES_ERRCODE_H */