From 41fa4bbba27006347f51ea47f109ae181c0ac609 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Mon, 19 Dec 2022 12:24:18 -0500 Subject: bcachefs: Fix alloc_v4_backpointers() BCH_ALLOC_V4_BACKPOINTERS_START() may be unset on older filesystems, and alloc_v4_backpointers() needs to take this into account - because it wasn't, __bch2_alloc_to_v4_mut() was zeroing out all fields, instead of only new ones. Signed-off-by: Kent Overstreet --- fs/bcachefs/alloc_background.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/bcachefs/alloc_background.h b/fs/bcachefs/alloc_background.h index 47336e9e1018..a0c3c47b49b5 100644 --- a/fs/bcachefs/alloc_background.h +++ b/fs/bcachefs/alloc_background.h @@ -200,7 +200,9 @@ void bch2_do_invalidates(struct bch_fs *); static inline struct bch_backpointer *alloc_v4_backpointers(struct bch_alloc_v4 *a) { - return (void *) ((u64 *) &a->v + BCH_ALLOC_V4_BACKPOINTERS_START(a)); + return (void *) ((u64 *) &a->v + + (BCH_ALLOC_V4_BACKPOINTERS_START(a) ?: + BCH_ALLOC_V4_U64s_V0)); } static inline const struct bch_backpointer *alloc_v4_backpointers_c(const struct bch_alloc_v4 *a) -- cgit v1.2.3