summaryrefslogtreecommitdiff
path: root/libbcachefs/error.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-11-09 22:49:03 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2019-11-09 22:49:03 -0500
commit1f7098c22213bbe66896f390a529223468a3986e (patch)
tree4f791db0a1cd2bfa9c568b46ffed73ce641c8d57 /libbcachefs/error.c
parentf597e81aab00d0f5174f104f967cbf20da7c51c7 (diff)
Update bcachefs sources to b1a4dc53be bcachefs: Set lost+found mode to 0700
Diffstat (limited to 'libbcachefs/error.c')
-rw-r--r--libbcachefs/error.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/libbcachefs/error.c b/libbcachefs/error.c
index 304ff925..5a5cfee6 100644
--- a/libbcachefs/error.c
+++ b/libbcachefs/error.c
@@ -64,7 +64,7 @@ void bch2_io_error(struct bch_dev *ca)
enum fsck_err_ret bch2_fsck_err(struct bch_fs *c, unsigned flags,
const char *fmt, ...)
{
- struct fsck_err_state *s;
+ struct fsck_err_state *s = NULL;
va_list args;
bool fix = false, print = true, suppressing = false;
char _buf[sizeof(s->buf)], *buf = _buf;
@@ -99,8 +99,13 @@ enum fsck_err_ret bch2_fsck_err(struct bch_fs *c, unsigned flags,
found:
list_move(&s->list, &c->fsck_errors);
s->nr++;
- suppressing = s->nr == FSCK_ERR_RATELIMIT_NR;
- print = s->nr <= FSCK_ERR_RATELIMIT_NR;
+ if (c->opts.ratelimit_errors &&
+ s->nr >= FSCK_ERR_RATELIMIT_NR) {
+ if (s->nr == FSCK_ERR_RATELIMIT_NR)
+ suppressing = true;
+ else
+ print = false;
+ }
buf = s->buf;
print:
va_start(args, fmt);
@@ -156,7 +161,7 @@ void bch2_flush_fsck_errs(struct bch_fs *c)
mutex_lock(&c->fsck_error_lock);
list_for_each_entry_safe(s, n, &c->fsck_errors, list) {
- if (s->nr > FSCK_ERR_RATELIMIT_NR)
+ if (s->ratelimited)
bch_err(c, "Saw %llu errors like:\n %s", s->nr, s->buf);
list_del(&s->list);