bcachefs: Fix a deadlock in bch2_btree_node_get_sibling()
authorKent Overstreet <kent.overstreet@gmail.com>
Tue, 2 Jun 2020 23:41:47 +0000 (19:41 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:40 +0000 (17:08 -0400)
commitf96c0df4dbb0ed845bbc51f341d00bc90368c93c
treee2e2caa6a99307007fc44f0167ec537896847c33
parent495aabede3ff594c5eda98cb9f4463502cb48cad
bcachefs: Fix a deadlock in bch2_btree_node_get_sibling()

There was a bad interaction with bch2_btree_iter_set_pos_same_leaf(),
which can leave a btree node locked that is just outside iter->pos,
breaking the lock ordering checks in __bch2_btree_node_lock(). Ideally
we should get rid of this corner case, but for now fix it locally with
verbose comments.

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