]> www.infradead.org Git - users/hch/misc.git/commitdiff
bcachefs: Silence errors after emergency shutdown
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 30 Mar 2025 00:02:44 +0000 (20:02 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 30 Mar 2025 20:35:13 +0000 (16:35 -0400)
We don't care about errors from asynchronous ops that were because we
did an emergency shutdown; silence them.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_update_interior.c
fs/bcachefs/journal_io.c

index 987fdfc043b88dd033533c3fbac7cae7ba0ccbd5..bf7e1dac7f465f5434ffcf9d5f877afcc2cf1562 100644 (file)
@@ -1268,7 +1268,8 @@ err:
        bch2_btree_update_free(as, trans);
        if (!bch2_err_matches(ret, ENOSPC) &&
            !bch2_err_matches(ret, EROFS) &&
-           ret != -BCH_ERR_journal_reclaim_would_deadlock)
+           ret != -BCH_ERR_journal_reclaim_would_deadlock &&
+           ret != -BCH_ERR_journal_shutdown)
                bch_err_fn_ratelimited(c, ret);
        return ERR_PTR(ret);
 }
@@ -2302,7 +2303,9 @@ static void async_btree_node_rewrite_work(struct work_struct *work)
 
        int ret = bch2_trans_do(c, bch2_btree_node_rewrite_key(trans,
                                                a->btree_id, a->level, a->key.k, 0));
-       if (ret != -ENOENT)
+       if (ret != -ENOENT &&
+           !bch2_err_matches(ret, EROFS) &&
+           ret != -BCH_ERR_journal_shutdown)
                bch_err_fn_ratelimited(c, ret);
 
        spin_lock(&c->btree_node_rewrites_lock);
index 24eaec1d406c6c1094aa9aed6611bace5a88927e..f461cb06df904a4208448885dc5f55e71fdaca13 100644 (file)
@@ -1623,7 +1623,8 @@ static CLOSURE_CALLBACK(journal_write_done)
                               : j->noflush_write_time, j->write_start_time);
 
        if (!w->devs_written.nr) {
-               bch_err(c, "unable to write journal to sufficient devices");
+               if (!bch2_journal_error(j))
+                       bch_err(c, "unable to write journal to sufficient devices");
                err = -BCH_ERR_journal_write_err;
        } else {
                bch2_devlist_to_replicas(&replicas.e, BCH_DATA_journal,