bcachefs: Fix a deadlock
authorKent Overstreet <kent.overstreet@gmail.com>
Fri, 12 Jun 2020 18:58:07 +0000 (14:58 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:41 +0000 (17:08 -0400)
commit515282ac7d847d567dd3ba802edf34316368bb14
treebf4b1cf0cbd0826e8899bf9c1b0c907d4cd38aed
parent4e8224ed8ab3c671bb96b6b98c8f8de14637440d
bcachefs: Fix a deadlock

__bch2_btree_node_lock() was incorrectly using iter->pos as a proxy for
btree node lock ordering, this caused an off by one error that was
triggered by bch2_btree_node_get_sibling() getting the previous node.

This refactors the code to compare against btree node keys directly.

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