summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/btree_cache.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-04-25 16:24:03 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:09:02 -0400
commitceda1b9a179ffd8ece3f7d15d5b1379eb2552215 (patch)
tree4592179ca6ebdb0c98516965d0183c0bfa02600b /fs/bcachefs/btree_cache.h
parentfc51b041b72a7cbffc60811ff14d25207a4f7624 (diff)
downloadlinux-ceda1b9a179ffd8ece3f7d15d5b1379eb2552215.tar.gz
linux-ceda1b9a179ffd8ece3f7d15d5b1379eb2552215.tar.bz2
linux-ceda1b9a179ffd8ece3f7d15d5b1379eb2552215.zip
bcachefs: Evict btree nodes we're deleting
There was a bug that led to duplicate btree node pointers being inserted at the wrong level. The new topology repair code can fix that, except that the btree cache code gets confused when we read in a btree node from the pointer that was at the wrong level. This patch evicts nodes that we're deleting to, which nicely solves the problem. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_cache.h')
-rw-r--r--fs/bcachefs/btree_cache.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/bcachefs/btree_cache.h b/fs/bcachefs/btree_cache.h
index c517cc029454..40dd263a7caa 100644
--- a/fs/bcachefs/btree_cache.h
+++ b/fs/bcachefs/btree_cache.h
@@ -30,6 +30,8 @@ struct btree *bch2_btree_node_get_noiter(struct bch_fs *, const struct bkey_i *,
void bch2_btree_node_prefetch(struct bch_fs *, struct btree_iter *,
const struct bkey_i *, enum btree_id, unsigned);
+void bch2_btree_node_evict(struct bch_fs *, const struct bkey_i *);
+
void bch2_fs_btree_cache_exit(struct bch_fs *);
int bch2_fs_btree_cache_init(struct bch_fs *);
void bch2_fs_btree_cache_init_early(struct btree_cache *);