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: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2022-08-23 01:20:24 -04:00
parent 14599cce44
commit c240c3a944

View file

@ -3024,9 +3024,21 @@ bch2_btree_path_node_to_text(struct printbuf *out,
struct btree_bkey_cached_common *b,
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:",
b->level, bch2_btree_ids[b->btree_id]);
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