bcachefs: Fix hidden btree errors when reading roots
authorKent Overstreet <kent.overstreet@linux.dev>
Fri, 8 Nov 2024 05:25:18 +0000 (00:25 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Fri, 8 Nov 2024 19:07:12 +0000 (14:07 -0500)
We silence btree errors in btree_node_scan, since it's probing and
errors are expected: add a fake pass so that btree_node_scan is no
longer recovery pass 0, and we don't think we're in btree node scan when
reading btree roots.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/recovery_passes.c
fs/bcachefs/recovery_passes_types.h

index 4bbeac9e0526bf24603a7aab5199d07ca699a87c..dff589ddc984d34b99ae430af15e3cad17a11f62 100644 (file)
@@ -27,6 +27,12 @@ const char * const bch2_recovery_passes[] = {
        NULL
 };
 
+/* Fake recovery pass, so that scan_for_btree_nodes isn't 0: */
+static int bch2_recovery_pass_empty(struct bch_fs *c)
+{
+       return 0;
+}
+
 static int bch2_set_may_go_rw(struct bch_fs *c)
 {
        struct journal_keys *keys = &c->journal_keys;
index 9d96c06e365c93700df5d056ea7e59973ffddd1d..94dc20ca20653e07ac4d9a89d740024842e2c50f 100644 (file)
@@ -13,6 +13,7 @@
  * must never change:
  */
 #define BCH_RECOVERY_PASSES()                                                  \
+       x(recovery_pass_empty,                  41, PASS_SILENT)                \
        x(scan_for_btree_nodes,                 37, 0)                          \
        x(check_topology,                        4, 0)                          \
        x(accounting_read,                      39, PASS_ALWAYS)                \