diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-07-01 13:19:04 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-07-02 14:45:52 -0400 |
commit | 27e51d62ea4d030a74357ce436886f4187f9380c (patch) | |
tree | e22ea35e64961f8888eae8d7a0cfe27fdc966c62 /libbcachefs/error.c | |
parent | 4145de1746459e118783b51e45f9a1fe9b6d2005 (diff) |
Update bcachefs sources to 48d506769bc0 bcachefs: bch2_journal_entry_missing_range()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'libbcachefs/error.c')
-rw-r--r-- | libbcachefs/error.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libbcachefs/error.c b/libbcachefs/error.c index b2a6c041..a9a9fe19 100644 --- a/libbcachefs/error.c +++ b/libbcachefs/error.c @@ -401,7 +401,8 @@ int bch2_fsck_err_opt(struct bch_fs *c, if (!WARN_ON(err >= ARRAY_SIZE(fsck_flags_extra))) flags |= fsck_flags_extra[err]; - if (test_bit(BCH_FS_in_fsck, &c->flags)) { + if (test_bit(BCH_FS_in_fsck, &c->flags) || + test_bit(BCH_FS_in_recovery, &c->flags)) { if (!(flags & (FSCK_CAN_FIX|FSCK_CAN_IGNORE))) return bch_err_throw(c, fsck_repair_unimplemented); @@ -472,10 +473,13 @@ int __bch2_fsck_err(struct bch_fs *c, !trans && bch2_current_has_btree_trans(c)); - if (test_bit(err, c->sb.errors_silent)) - return flags & FSCK_CAN_FIX + if ((flags & FSCK_ERR_SILENT) || + test_bit(err, c->sb.errors_silent)) { + ret = flags & FSCK_CAN_FIX ? bch_err_throw(c, fsck_fix) : bch_err_throw(c, fsck_ignore); + goto err; + } printbuf_indent_add_nextline(out, 2); @@ -620,14 +624,14 @@ print: if (s) s->ret = ret; - +err_unlock: + mutex_unlock(&c->fsck_error_msgs_lock); +err: if (trans && !(flags & FSCK_ERR_NO_LOG) && ret == -BCH_ERR_fsck_fix) ret = bch2_trans_log_str(trans, bch2_sb_error_strs[err]) ?: ret; -err_unlock: - mutex_unlock(&c->fsck_error_msgs_lock); -err: + /* * We don't yet track whether the filesystem currently has errors, for * log_fsck_err()s: that would require us to track for every error type |