diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-04-24 16:33:06 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2021-04-26 20:18:47 -0400 |
commit | edc3ffe8f25506e60218aa6eb5cbcd3a019f6210 (patch) | |
tree | 78d57e95d6ea8c51cf0c04f3ffdc4d2f39650600 /libbcachefs/error.c | |
parent | 78905d7540c6689d4c780900f957318452aa316e (diff) |
Update bcachefs sources to 8d3093bd9b bcachefs: Evict btree nodes we're deleting
Diffstat (limited to 'libbcachefs/error.c')
-rw-r--r-- | libbcachefs/error.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libbcachefs/error.c b/libbcachefs/error.c index a8ee1db8..90c3b986 100644 --- a/libbcachefs/error.c +++ b/libbcachefs/error.c @@ -25,6 +25,13 @@ bool bch2_inconsistent_error(struct bch_fs *c) } } +void bch2_topology_error(struct bch_fs *c) +{ + set_bit(BCH_FS_TOPOLOGY_ERROR, &c->flags); + if (test_bit(BCH_FS_INITIAL_GC_DONE, &c->flags)) + bch2_inconsistent_error(c); +} + void bch2_fatal_error(struct bch_fs *c) { if (bch2_fs_emergency_read_only(c)) @@ -74,9 +81,13 @@ enum fsck_err_ret bch2_fsck_err(struct bch_fs *c, unsigned flags, vprintk(fmt, args); va_end(args); - return bch2_inconsistent_error(c) - ? FSCK_ERR_EXIT - : FSCK_ERR_FIX; + if (c->opts.errors == BCH_ON_ERROR_continue) { + bch_err(c, "fixing"); + return FSCK_ERR_FIX; + } else { + bch2_inconsistent_error(c); + return FSCK_ERR_EXIT; + } } mutex_lock(&c->fsck_error_lock); @@ -146,6 +157,7 @@ print: set_bit(BCH_FS_ERRORS_FIXED, &c->flags); return FSCK_ERR_FIX; } else { + set_bit(BCH_FS_ERRORS_NOT_FIXED, &c->flags); set_bit(BCH_FS_ERROR, &c->flags); return c->opts.fix_errors == FSCK_OPT_EXIT || !(flags & FSCK_CAN_IGNORE) |