]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Don't set BCH_FS_error on transaction restart
authorKent Overstreet <kent.overstreet@linux.dev>
Tue, 8 Jul 2025 19:21:39 +0000 (15:21 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Tue, 8 Jul 2025 19:24:15 +0000 (15:24 -0400)
This started showing up more when we started logging the error being
corrected in the journal - but __bch2_fsck_err() could return
transaction restarts before that.

Setting BCH_FS_error incorrectly causes recovery passes to not be
cleared, among other issues.

Fixes: b43f72492768 ("bcachefs: Log fsck errors in the journal")
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/error.c

index ea37f5af1800c8848fd2c4cafb49e998e64f1de4..267e73d9d7e6eefb18e3946bd00136818e1bcc22 100644 (file)
@@ -633,7 +633,9 @@ err:
         * log_fsck_err()s: that would require us to track for every error type
         * which recovery pass corrects it, to get the fsck exit status correct:
         */
-       if (bch2_err_matches(ret, BCH_ERR_fsck_fix)) {
+       if (bch2_err_matches(ret, BCH_ERR_transaction_restart)) {
+               /* nothing */
+       } else if (bch2_err_matches(ret, BCH_ERR_fsck_fix)) {
                set_bit(BCH_FS_errors_fixed, &c->flags);
        } else {
                set_bit(BCH_FS_errors_not_fixed, &c->flags);