From 3f7b9713dae09df31067c6d1d33c6eb1f617529f Mon Sep 17 00:00:00 2001 From: Hunter Shaffer Date: Mon, 25 Sep 2023 00:02:56 -0400 Subject: bcachefs: New superblock section members_v2 members_v2 has dynamically resizable entries so that we can extend bch_member. The members can no longer be accessed with simple array indexing Instead members_v2_get is used to find a member's exact location within the array and returns a copy of that member. Alternatively member_v2_get_mut retrieves a mutable point to a member. Signed-off-by: Hunter Shaffer Signed-off-by: Kent Overstreet --- fs/bcachefs/bcachefs_format.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'fs/bcachefs/bcachefs_format.h') diff --git a/fs/bcachefs/bcachefs_format.h b/fs/bcachefs/bcachefs_format.h index f0d130440baa..c1a9ba451f04 100644 --- a/fs/bcachefs/bcachefs_format.h +++ b/fs/bcachefs/bcachefs_format.h @@ -1231,7 +1231,8 @@ struct bch_sb_field { x(replicas, 7) \ x(journal_seq_blacklist, 8) \ x(journal_v2, 9) \ - x(counters, 10) + x(counters, 10) \ + x(members_v2, 11) enum bch_sb_field_type { #define x(f, nr) BCH_SB_FIELD_##f = nr, @@ -1279,6 +1280,8 @@ struct bch_member { __le64 flags[2]; }; +#define BCH_MEMBER_V1_BYTES 56 + LE64_BITMASK(BCH_MEMBER_STATE, struct bch_member, flags[0], 0, 4) /* 4-14 unused, was TIER, HAS_(META)DATA, REPLACEMENT */ LE64_BITMASK(BCH_MEMBER_DISCARD, struct bch_member, flags[0], 14, 15) @@ -1308,7 +1311,14 @@ enum bch_member_state { struct bch_sb_field_members { struct bch_sb_field field; - struct bch_member members[]; + struct bch_member _members[]; //Members are now variable size +}; + +struct bch_sb_field_members_v2 { + struct bch_sb_field field; + __le16 member_bytes; //size of single member entry + u8 pad[6]; + struct bch_member _members[]; }; /* BCH_SB_FIELD_crypt: */ -- cgit v1.2.3