diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-04-05 21:32:40 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-04-05 23:32:44 -0400 |
commit | 7127ca66733ea7dbf48e0362dd134d3b7b8246e6 (patch) | |
tree | 91fa53d1f666bdabb790befb85ddf7024517f6bc | |
parent | 330275596b0af24653132a0b58780bccf611e27f (diff) |
bcachefs: debug assert for merge locking bug
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/btree_update_interior.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_update_interior.h b/fs/bcachefs/btree_update_interior.h index ca1a3be43af8..804e22dd36eb 100644 --- a/fs/bcachefs/btree_update_interior.h +++ b/fs/bcachefs/btree_update_interior.h @@ -5,6 +5,7 @@ #include "btree_cache.h" #include "btree_locking.h" #include "btree_update.h" +#include "error.h" #define BTREE_UPDATE_NODES_MAX ((BTREE_MAX_DEPTH - 2) * 2 + GC_MERGE_NODES) @@ -142,7 +143,17 @@ static inline int bch2_foreground_maybe_merge_sibling(struct btree_trans *trans, struct btree_path *path = trans->paths + path_idx; struct btree *b; - EBUG_ON(!btree_node_locked(path, level)); + if (!btree_node_locked(path, level)) { + struct printbuf buf = PRINTBUF; + bch2_btree_path_to_text(&buf, trans, path_idx); + bch2_fs_fatal_error(trans->c, "node not locked at level %u\n" + "trans->restarted %s\n" + "%s", level, + bch2_err_str(trans->restarted), + buf.buf); + printbuf_exit(&buf); + return 0; + } if (bch2_btree_node_merging_disabled) return 0; |