summaryrefslogtreecommitdiff
path: root/fs/bcachefs/errcode.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2022-09-18 15:43:50 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:09:40 -0400
commit5c1ef830f6786059f85bebe7501b63dffed0b633 (patch)
tree3a6f94498dd5f0d4f9d416db36d97ed01cf31373 /fs/bcachefs/errcode.h
parent57ce827442c4e7b0f38b14b91c97413c5d779697 (diff)
bcachefs: Errcodes can now subtype standard error codes
The next patch is going to be adding private error codes for all the places we return -ENOSPC. Additionally, this patch updates return paths at all module boundaries to call bch2_err_class(), to return the standard error code. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/errcode.h')
-rw-r--r--fs/bcachefs/errcode.h97
1 files changed, 52 insertions, 45 deletions
diff --git a/fs/bcachefs/errcode.h b/fs/bcachefs/errcode.h
index 15a1be2fcc84..2088cc5a4f3c 100644
--- a/fs/bcachefs/errcode.h
+++ b/fs/bcachefs/errcode.h
@@ -3,51 +3,51 @@
#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)
+ x(0, open_buckets_empty) \
+ x(0, freelist_empty) \
+ x(BCH_ERR_freelist_empty, no_buckets_found) \
+ x(0, insufficient_devices) \
+ 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_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_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(0, lock_fail_node_reused) \
+ 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)
enum bch_errcode {
BCH_ERR_START = 2048,
@@ -71,4 +71,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 */