bcachefs: Drop unneeded journal pin in bch2_btree_update_start()
authorKent Overstreet <kent.overstreet@gmail.com>
Tue, 1 Mar 2022 20:31:20 +0000 (15:31 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:26 +0000 (17:09 -0400)
commitb66fbf33425f30aacbbb95182c22d2df5b1d3b12
tree980b5d739a900593e2fb0f52216fd9cc45898d2c
parentdfc0f7ea00a71e12772d174e5f070dd5b1bf8981
bcachefs: Drop unneeded journal pin in bch2_btree_update_start()

When we do an interior btree update, we create new btree nodes and link
them into the btree in memory, but they don't become reachable on disk
until later, when btree_update_nodes_written_trans() runs.

Updates to the new nodes can thus happen before they're reachable on
disk, and if the updates to those new nodes are written before the nodes
become reachable, we would then drop the journal pin for those updates
before the btree has them.

This is what the journal pin in bch2_btree_update_start() was protecting
against. However, it's not actually needed because we don't allow
subsequent append writes to btree nodes until the node is reachable on
disk.

Dropping this unneeded pin also fixes a bug introduced by "bcachefs:
Journal seq now incremented at entry open, not close" - in the new code,
if the journal is completely empty a journal pin list for
journal_cur_seq() won't exist.

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