diff options
author | 2024-12-04 20:43:01 -0500 | |
---|---|---|
committer | 2024-12-21 01:36:22 -0500 | |
commit | 23f88c1d165563c9432314f92a9e7b8b6e17c7a2 (patch) | |
tree | 6346d441d1c8537c3e6389214aedf9d31d13fb17 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | bcachefs: Make sure __bch2_run_explicit_recovery_pass() signals to rewind (diff) | |
download | wireguard-linux-23f88c1d165563c9432314f92a9e7b8b6e17c7a2.tar.xz wireguard-linux-23f88c1d165563c9432314f92a9e7b8b6e17c7a2.zip |
bcachefs: Don't call bch2_btree_interior_update_will_free_node() until after update succeeds
Originally, btree splits always succeeded once we got to the point of
recursing to the btree_insert_node() call.
But that changed when we switched to not taking intent locks all the way
up to the root, and that introduced a bug, because
bch2_btree_interior_update_will_free_node() cancels paending writes and
reparents a node that's going to be made visible on disk by another
btree update to the current btree update.
This was discovered in recent backpointers work, because
bch2_btree_interior_update_will_free_node() also clears the
will_make_reachable flag, causing backpointer target lookup to
spuriously thing it had found a dangling backpointer (when the
backpointer just hadn't been created yet by
btree_update_nodes_written()).
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions