bcachefs: Fix btree_trans list ordering
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 23 Jun 2024 02:11:01 +0000 (22:11 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 23 Jun 2024 04:57:21 +0000 (00:57 -0400)
commit1aaf5cb41b8e92dcd3ac7e047124cb0e3e27f1c1
tree215882ec550c5c11317c6807554da27ea2cae06f
parentde611ab6fc5ed0d68dd46319b9913353e3b459e9
bcachefs: Fix btree_trans list ordering

The debug code relies on btree_trans_list being ordered so that it can
resume on subsequent calls or lock restarts.

However, it was using trans->locknig_wait.task.pid, which is incorrect
since btree_trans objects are cached and reused - typically by different
tasks.

Fix this by switching to pointer order, and also sort them lazily when
required - speeding up the btree_trans_get() fastpath.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c
fs/bcachefs/debug.c