diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-03-28 05:21:24 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2019-03-28 05:28:38 -0400 |
commit | 133dfeb64843af65a018be770eb005363ca59bd9 (patch) | |
tree | 6d37383fdb83a5bc618ec506fd1e14c22d7a32c2 /libbcachefs/error.c | |
parent | 365d3450058ba0a8d282d8155bfcc2057837ab95 (diff) |
Update bcachefs sources to d868a87c67 bcachefs: fix initial gc
Diffstat (limited to 'libbcachefs/error.c')
-rw-r--r-- | libbcachefs/error.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libbcachefs/error.c b/libbcachefs/error.c index 9505b6e6..e3747781 100644 --- a/libbcachefs/error.c +++ b/libbcachefs/error.c @@ -66,10 +66,20 @@ enum fsck_err_ret bch2_fsck_err(struct bch_fs *c, unsigned flags, 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) |