diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-07-14 15:17:05 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-07-14 15:17:05 -0400 |
commit | 386ae4e0c07d9b0962fa2108ae107fbc5b9cf7fe (patch) | |
tree | ae19a2b21c41fd9865a9a4f0ecb3b4aa9397c01e /libbcachefs/btree_node_scan.c | |
parent | 6687933bdb7731939a38bb30955201d395c906f7 (diff) |
Update bcachefs sources to 4d1d53862afb bcachefs: show none if label is not setbadhib-debug
Diffstat (limited to 'libbcachefs/btree_node_scan.c')
-rw-r--r-- | libbcachefs/btree_node_scan.c | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/libbcachefs/btree_node_scan.c b/libbcachefs/btree_node_scan.c index 1e250558..00110722 100644 --- a/libbcachefs/btree_node_scan.c +++ b/libbcachefs/btree_node_scan.c @@ -330,37 +330,15 @@ again: } else if (n->level) { n->overwritten = true; } else { - struct printbuf buf = PRINTBUF; - - prt_str(&buf, "overlapping btree nodes with same seq! halting\n "); - found_btree_node_to_text(&buf, c, start); - prt_str(&buf, "\n "); - found_btree_node_to_text(&buf, c, n); - bch_err(c, "%s", buf.buf); - printbuf_exit(&buf); - - struct { __BKEY_PADDED(k, BKEY_BTREE_PTR_VAL_U64s_MAX); } tmp; - struct btree *b; - - struct btree_trans *trans = bch2_trans_get(c); - - found_btree_node_to_key(&tmp.k, start); - b = bch2_btree_node_get_noiter(trans, &tmp.k, - start->btree_id, start->level, false); - if (!IS_ERR_OR_NULL(b)) { - bch2_dump_btree_node(c, b); - six_unlock_read(&b->c.lock); - } - - found_btree_node_to_key(&tmp.k, n); - b = bch2_btree_node_get_noiter(trans, &tmp.k, - start->btree_id, start->level, false); - if (!IS_ERR_OR_NULL(b)) { - bch2_dump_btree_node(c, b); - six_unlock_read(&b->c.lock); + if (bpos_cmp(start->max_key, n->max_key) >= 0) + n->overwritten = true; + else { + n->range_updated = true; + n->min_key = bpos_successor(start->max_key); + n->range_updated = true; + bubble_up(n, end); + goto again; } - bch2_trans_put(trans); - return -BCH_ERR_fsck_repair_unimplemented; } } |