Commit c240c3a9 authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: Print lock counts in debugs btree_transactions

Improve our debugfs output, to help in debugging deadlocks: this shows,
for every btree node we print, the current number of readers/intent
locks/write locks held.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 14599cce
...@@ -3024,9 +3024,21 @@ bch2_btree_path_node_to_text(struct printbuf *out, ...@@ -3024,9 +3024,21 @@ bch2_btree_path_node_to_text(struct printbuf *out,
struct btree_bkey_cached_common *b, struct btree_bkey_cached_common *b,
bool cached) bool cached)
{ {
struct six_lock_count c = six_lock_counts(&b->lock);
struct task_struct *owner;
pid_t pid;
rcu_read_lock();
owner = READ_ONCE(b->lock.owner);
pid = owner ? owner->pid : 0;;
rcu_read_unlock();
prt_printf(out, " l=%u %s:", prt_printf(out, " l=%u %s:",
b->level, bch2_btree_ids[b->btree_id]); b->level, bch2_btree_ids[b->btree_id]);
bch2_bpos_to_text(out, btree_node_pos(b, cached)); bch2_bpos_to_text(out, btree_node_pos(b, cached));
prt_printf(out, " locks %u:%u:%u held by pid %u",
c.n[0], c.n[1], c.n[2], pid);
} }
#ifdef CONFIG_BCACHEFS_DEBUG_TRANSACTIONS #ifdef CONFIG_BCACHEFS_DEBUG_TRANSACTIONS
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment