]> git.sesse.net Git - bcachefs-tools-debian/blob - libbcachefs/errcode.h
Update bcachefs sources to 90a9c61e2b bcachefs: Switch bch2_btree_delete_range()...
[bcachefs-tools-debian] / libbcachefs / errcode.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_ERRCODE_H
3 #define _BCACHEFS_ERRCODE_H
4
5 #define BCH_ERRCODES()                                                  \
6         x(0,                    open_buckets_empty)                     \
7         x(0,                    freelist_empty)                         \
8         x(freelist_empty,       no_buckets_found)                       \
9         x(0,                    insufficient_devices)                   \
10         x(0,                    transaction_restart)                    \
11         x(transaction_restart,  transaction_restart_fault_inject)       \
12         x(transaction_restart,  transaction_restart_relock)             \
13         x(transaction_restart,  transaction_restart_relock_path)        \
14         x(transaction_restart,  transaction_restart_relock_path_intent) \
15         x(transaction_restart,  transaction_restart_relock_after_fill)  \
16         x(transaction_restart,  transaction_restart_too_many_iters)     \
17         x(transaction_restart,  transaction_restart_lock_node_reused)   \
18         x(transaction_restart,  transaction_restart_fill_relock)        \
19         x(transaction_restart,  transaction_restart_fill_mem_alloc_fail)\
20         x(transaction_restart,  transaction_restart_mem_realloced)      \
21         x(transaction_restart,  transaction_restart_in_traverse_all)    \
22         x(transaction_restart,  transaction_restart_would_deadlock)     \
23         x(transaction_restart,  transaction_restart_would_deadlock_write)\
24         x(transaction_restart,  transaction_restart_upgrade)            \
25         x(transaction_restart,  transaction_restart_key_cache_upgrade)  \
26         x(transaction_restart,  transaction_restart_key_cache_fill)     \
27         x(transaction_restart,  transaction_restart_key_cache_raced)    \
28         x(transaction_restart,  transaction_restart_key_cache_realloced)\
29         x(transaction_restart,  transaction_restart_journal_preres_get) \
30         x(transaction_restart,  transaction_restart_nested)             \
31         x(0,                    no_btree_node)                          \
32         x(no_btree_node,        no_btree_node_relock)                   \
33         x(no_btree_node,        no_btree_node_upgrade)                  \
34         x(no_btree_node,        no_btree_node_drop)                     \
35         x(no_btree_node,        no_btree_node_lock_root)                \
36         x(no_btree_node,        no_btree_node_up)                       \
37         x(no_btree_node,        no_btree_node_down)                     \
38         x(no_btree_node,        no_btree_node_init)                     \
39         x(no_btree_node,        no_btree_node_cached)                   \
40         x(0,                    lock_fail_node_reused)                  \
41         x(0,                    lock_fail_root_changed)                 \
42         x(0,                    journal_reclaim_would_deadlock)         \
43         x(0,                    fsck)                                   \
44         x(fsck,                 fsck_fix)                               \
45         x(fsck,                 fsck_ignore)                            \
46         x(fsck,                 fsck_errors_not_fixed)                  \
47         x(fsck,                 fsck_repair_unimplemented)              \
48         x(fsck,                 fsck_repair_impossible)                 \
49         x(0,                    need_snapshot_cleanup)                  \
50         x(0,                    need_topology_repair)
51
52 enum bch_errcode {
53         BCH_ERR_START           = 2048,
54 #define x(class, err) BCH_ERR_##err,
55         BCH_ERRCODES()
56 #undef x
57         BCH_ERR_MAX
58 };
59
60 const char *bch2_err_str(int);
61 bool __bch2_err_matches(int, int);
62
63 static inline bool _bch2_err_matches(int err, int class)
64 {
65         return err && __bch2_err_matches(err, class);
66 }
67
68 #define bch2_err_matches(_err, _class)                  \
69 ({                                                      \
70         BUILD_BUG_ON(!__builtin_constant_p(_class));    \
71         _bch2_err_matches(_err, _class);                \
72 })
73
74 #endif /* _BCACHFES_ERRCODE_H */