bcachefs: Fix locking in btree_node_write_done()
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 27 Feb 2022 02:35:16 +0000 (21:35 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:26 +0000 (17:09 -0400)
commit39dcace83889f43d5619d07c2ec76c286c88a85b
tree5d02db8021dfdb61d8175fcad239f32a731d19eb
parent75ef2c59bc2f4d3c3ecd48286ac36ee7b868321c
bcachefs: Fix locking in btree_node_write_done()

There was a rare recursive locking bug, in __bch2_btree_node_write()
nowrite path -> btree_node_write_done(), in the path that kicks off
another write.

This splits out an inner __btree_node_write_done() that expects to be
run with the btree node lock held.

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