diff options
Diffstat (limited to 'fs/bcachefs/errcode.h')
-rw-r--r-- | fs/bcachefs/errcode.h | 33 |
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 */ |