bcachefs: Don't deadlock when btree node reuse changes lock ordering
authorKent Overstreet <kent.overstreet@gmail.com>
Sat, 13 Jun 2020 02:29:48 +0000 (22:29 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:41 +0000 (17:08 -0400)
commitbd2bb273a09b93e2a7d79d30458ab5f6f0b3757a
tree8ed7c91566eaef19f442b0a763cf43e08fb72faa
parent515282ac7d847d567dd3ba802edf34316368bb14
bcachefs: Don't deadlock when btree node reuse changes lock ordering

Btree node lock ordering is based on the logical key. However, 'struct
btree' may be reused for a different btree node under memory pressure.
This patch uses the new six lock callback to check if a btree node is no
longer the node we wanted to lock before blocking.

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_locking.h
fs/bcachefs/btree_update_interior.c