bcachefs: debug_check_btree_locking modparam

Don't put btree locking asserts behind CONFIG_BCACHEFS_DEBUG, put them
behind a module parameter.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2025-05-10 15:12:13 -04:00
parent 2842515575
commit 110bb6cb8b
3 changed files with 19 additions and 14 deletions

View File

@ -393,6 +393,8 @@ do { \
"Disables rewriting of btree nodes during mark and sweep")\
BCH_DEBUG_PARAM(btree_shrinker_disabled, \
"Disables the shrinker callback for the btree node cache")\
BCH_DEBUG_PARAM(verify_btree_locking, \
"Enable additional asserts for btree locking") \
BCH_DEBUG_PARAM(verify_btree_ondisk, \
"Reread btree nodes at various points to verify the " \
"mergesort in the read path against modifications " \

View File

@ -839,9 +839,7 @@ int __bch2_trans_mutex_lock(struct btree_trans *trans,
/* Debug */
#ifdef CONFIG_BCACHEFS_DEBUG
void bch2_btree_path_verify_locks(struct btree_path *path)
void __bch2_btree_path_verify_locks(struct btree_path *path)
{
/*
* A path may be uptodate and yet have nothing locked if and only if
@ -882,7 +880,7 @@ static bool bch2_trans_locked(struct btree_trans *trans)
return false;
}
void bch2_trans_verify_locks(struct btree_trans *trans)
void __bch2_trans_verify_locks(struct btree_trans *trans)
{
if (!trans->locked) {
BUG_ON(bch2_trans_locked(trans));
@ -893,7 +891,5 @@ void bch2_trans_verify_locks(struct btree_trans *trans)
unsigned i;
trans_for_each_path(trans, path, i)
bch2_btree_path_verify_locks(path);
__bch2_btree_path_verify_locks(path);
}
#endif

View File

@ -429,12 +429,19 @@ struct six_lock_count bch2_btree_node_lock_counts(struct btree_trans *,
int bch2_check_for_deadlock(struct btree_trans *, struct printbuf *);
#ifdef CONFIG_BCACHEFS_DEBUG
void bch2_btree_path_verify_locks(struct btree_path *);
void bch2_trans_verify_locks(struct btree_trans *);
#else
static inline void bch2_btree_path_verify_locks(struct btree_path *path) {}
static inline void bch2_trans_verify_locks(struct btree_trans *trans) {}
#endif
void __bch2_btree_path_verify_locks(struct btree_path *);
void __bch2_trans_verify_locks(struct btree_trans *);
static inline void bch2_btree_path_verify_locks(struct btree_path *path)
{
if (static_branch_unlikely(&bch2_debug_check_btree_locking))
__bch2_btree_path_verify_locks(path);
}
static inline void bch2_trans_verify_locks(struct btree_trans *trans)
{
if (static_branch_unlikely(&bch2_debug_check_btree_locking))
__bch2_trans_verify_locks(trans);
}
#endif /* _BCACHEFS_BTREE_LOCKING_H */