diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-25 02:44:36 +0200 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-11-02 02:11:08 +0100 |
commit | b65db750e2bb9252321fd54c284edd73c1595a09 (patch) | |
tree | 4974f89c5f7307357a7aa1e0f6969aba1e1a653c /fs/bcachefs/error.c | |
parent | bcachefs: bch_sb_field_errors (diff) | |
download | linux-b65db750e2bb9252321fd54c284edd73c1595a09.tar.xz linux-b65db750e2bb9252321fd54c284edd73c1595a09.zip |
bcachefs: Enumerate fsck errors
This patch adds a superblock error counter for every distinct fsck
error; this means that when analyzing filesystems out in the wild we'll
be able to see what sorts of inconsistencies are being found and repair,
and hence what bugs to look for.
Errors validating bkeys are not yet considered distinct fsck errors, but
this patch adds a new helper, bkey_fsck_err(), in order to add distinct
error types for them as well.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/error.c')
-rw-r--r-- | fs/bcachefs/error.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/bcachefs/error.c b/fs/bcachefs/error.c index d759afc910fc..7b28d37922fd 100644 --- a/fs/bcachefs/error.c +++ b/fs/bcachefs/error.c @@ -141,7 +141,10 @@ static struct fsck_err_state *fsck_err_get(struct bch_fs *c, const char *fmt) return s; } -int bch2_fsck_err(struct bch_fs *c, unsigned flags, const char *fmt, ...) +int bch2_fsck_err(struct bch_fs *c, + enum bch_fsck_flags flags, + enum bch_sb_error_id err, + const char *fmt, ...) { struct fsck_err_state *s = NULL; va_list args; @@ -149,6 +152,8 @@ int bch2_fsck_err(struct bch_fs *c, unsigned flags, const char *fmt, ...) struct printbuf buf = PRINTBUF, *out = &buf; int ret = -BCH_ERR_fsck_ignore; + bch2_sb_error_count(c, err); + va_start(args, fmt); prt_vprintf(out, fmt, args); va_end(args); |