bool fix = false, print = true, suppressing = false;
char _buf[sizeof(s->buf)], *buf = _buf;
- mutex_lock(&c->fsck_error_lock);
+ if (test_bit(BCH_FS_FSCK_DONE, &c->flags)) {
+ va_start(args, fmt);
+ vprintk(fmt, args);
+ va_end(args);
- if (test_bit(BCH_FS_FSCK_DONE, &c->flags))
- goto print;
+ if (c->opts.errors == BCH_ON_ERROR_CONTINUE &&
+ flags & FSCK_CAN_FIX)
+ return FSCK_ERR_FIX;
+
+ bch2_inconsistent_error(c);
+ return FSCK_ERR_EXIT;
+ }
+
+ mutex_lock(&c->fsck_error_lock);
list_for_each_entry(s, &c->fsck_errors, list)
if (s->fmt == fmt)