bcachefs: Fix journal replay with unreadable btree roots
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 9 Mar 2024 00:57:22 +0000 (19:57 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 10 Mar 2024 19:18:13 +0000 (15:18 -0400)
commitba89083e9f5d9d26f64565ec3ecb823b5bcad055
treea4c52dd758da7c240112406eb9673d862151bcc0
parent52f3a72fa7f4f021398d17e4ffa760d0b2a46386
bcachefs: Fix journal replay with unreadable btree roots

When a btree root is unreadable, we still might be able to get some data
back by replaying what's in the journal. Previously though, we got
confused when journal replay would attempt to replay a key for a level
that didn't exist.

This adds bch2_btree_increase_depth(), so that journal replay can handle
this.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c
fs/bcachefs/btree_update_interior.c
fs/bcachefs/btree_update_interior.h
fs/bcachefs/recovery.c