bcachefs: Improve error message when finding wrong btree node
authorKent Overstreet <kent.overstreet@linux.dev>
Tue, 5 Dec 2023 20:22:25 +0000 (15:22 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 1 Jan 2024 16:47:40 +0000 (11:47 -0500)
single_device.merge_torture_flakey is, very rarely, finding a btree node
that doesn't match the key that points to it: this patch improves the
error message to print out more fields from the btree node header, so
that we can see what else does or does not match the key.

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

index a6ac68fe90fb5f496cc12fb4ae76d4db84c326a1..d99c237c88733204799ea76f291dfcf81a743931 100644 (file)
@@ -968,12 +968,20 @@ int bch2_btree_node_read_done(struct bch_fs *c, struct bch_dev *ca,
                struct bch_btree_ptr_v2 *bp =
                        &bkey_i_to_btree_ptr_v2(&b->key)->v;
 
+               bch2_bpos_to_text(&buf, b->data->min_key);
+               prt_str(&buf, "-");
+               bch2_bpos_to_text(&buf, b->data->max_key);
+
                btree_err_on(b->data->keys.seq != bp->seq,
                             -BCH_ERR_btree_node_read_err_must_retry,
                             c, ca, b, NULL,
                             btree_node_bad_seq,
-                            "got wrong btree node (seq %llx want %llx)",
-                            b->data->keys.seq, bp->seq);
+                            "got wrong btree node (want %llx got %llx)\n"
+                            "got btree %s level %llu pos %s",
+                            bp->seq, b->data->keys.seq,
+                            bch2_btree_id_str(BTREE_NODE_ID(b->data)),
+                            BTREE_NODE_LEVEL(b->data),
+                            buf.buf);
        } else {
                btree_err_on(!b->data->keys.seq,
                             -BCH_ERR_btree_node_read_err_must_retry,