bcachefs: Fix bch2_btree_node_upgrade()
authorKent Overstreet <kent.overstreet@gmail.com>
Fri, 5 Aug 2022 17:06:44 +0000 (13:06 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:41 +0000 (17:09 -0400)
commit62448afee714354a26db8a0f3c644f58628f0792
tree97c0ead47c4af1dc655906672655d530b1a2a8d6
parent845cffed0d343ecea9f6ff3883cac9a6872d9920
bcachefs: Fix bch2_btree_node_upgrade()

Previously, if we were trying to upgrade from a read to an intent lock
but we held an additional read lock via another btree_path,
bch2_btree_node_upgrade() would always fail, in six_lock_tryupgrade().

This patch factors out the code that __bch2_btree_node_lock_write() uses
to temporarily drop extra read locks, so that six_lock_tryupgrade() can
succeed.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_locking.c