summaryrefslogtreecommitdiff
path: root/fs/bcachefs/errcode.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/errcode.h')
-rw-r--r--fs/bcachefs/errcode.h33
1 files changed, 27 insertions, 6 deletions
diff --git a/fs/bcachefs/errcode.h b/fs/bcachefs/errcode.h
index 0581f3c7a0d8..69cc7cdd1c06 100644
--- a/fs/bcachefs/errcode.h
+++ b/fs/bcachefs/errcode.h
@@ -2,12 +2,33 @@
#ifndef _BCACHEFS_ERRCODE_H
#define _BCACHEFS_ERRCODE_H
-enum {
- /* Bucket allocator: */
- OPEN_BUCKETS_EMPTY = 2048,
- FREELIST_EMPTY, /* Allocator thread not keeping up */
- INSUFFICIENT_DEVICES,
- NEED_SNAPSHOT_CLEANUP,
+#define BCH_ERRCODES() \
+ x(0, open_buckets_empty) \
+ x(0, freelist_empty) \
+ x(freelist_empty, no_buckets_found) \
+ x(0, insufficient_devices) \
+ x(0, need_snapshot_cleanup)
+
+enum bch_errcode {
+ BCH_ERR_START = 2048,
+#define x(class, err) BCH_ERR_##err,
+ BCH_ERRCODES()
+#undef x
+ BCH_ERR_MAX
};
+const char *bch2_err_str(int);
+bool __bch2_err_matches(int, int);
+
+static inline bool _bch2_err_matches(int err, int class)
+{
+ return err && __bch2_err_matches(err, class);
+}
+
+#define bch2_err_matches(_err, _class) \
+({ \
+ BUILD_BUG_ON(!__builtin_constant_p(_class)); \
+ _bch2_err_matches(_err, _class); \
+})
+
#endif /* _BCACHFES_ERRCODE_H */