Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.10-rc6 110 lines 2.9 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _BCACHEFS_SB_MEMBERS_FORMAT_H 3#define _BCACHEFS_SB_MEMBERS_FORMAT_H 4 5/* 6 * We refer to members with bitmasks in various places - but we need to get rid 7 * of this limit: 8 */ 9#define BCH_SB_MEMBERS_MAX 64 10 11#define BCH_MIN_NR_NBUCKETS (1 << 6) 12 13#define BCH_IOPS_MEASUREMENTS() \ 14 x(seqread, 0) \ 15 x(seqwrite, 1) \ 16 x(randread, 2) \ 17 x(randwrite, 3) 18 19enum bch_iops_measurement { 20#define x(t, n) BCH_IOPS_##t = n, 21 BCH_IOPS_MEASUREMENTS() 22#undef x 23 BCH_IOPS_NR 24}; 25 26#define BCH_MEMBER_ERROR_TYPES() \ 27 x(read, 0) \ 28 x(write, 1) \ 29 x(checksum, 2) 30 31enum bch_member_error_type { 32#define x(t, n) BCH_MEMBER_ERROR_##t = n, 33 BCH_MEMBER_ERROR_TYPES() 34#undef x 35 BCH_MEMBER_ERROR_NR 36}; 37 38struct bch_member { 39 __uuid_t uuid; 40 __le64 nbuckets; /* device size */ 41 __le16 first_bucket; /* index of first bucket used */ 42 __le16 bucket_size; /* sectors */ 43 __u8 btree_bitmap_shift; 44 __u8 pad[3]; 45 __le64 last_mount; /* time_t */ 46 47 __le64 flags; 48 __le32 iops[4]; 49 __le64 errors[BCH_MEMBER_ERROR_NR]; 50 __le64 errors_at_reset[BCH_MEMBER_ERROR_NR]; 51 __le64 errors_reset_time; 52 __le64 seq; 53 __le64 btree_allocated_bitmap; 54 /* 55 * On recovery from a clean shutdown we don't normally read the journal, 56 * but we still want to resume writing from where we left off so we 57 * don't overwrite more than is necessary, for list journal debugging: 58 */ 59 __le32 last_journal_bucket; 60 __le32 last_journal_bucket_offset; 61}; 62 63/* 64 * This limit comes from the bucket_gens array - it's a single allocation, and 65 * kernel allocation are limited to INT_MAX 66 */ 67#define BCH_MEMBER_NBUCKETS_MAX (INT_MAX - 64) 68 69#define BCH_MEMBER_V1_BYTES 56 70 71LE64_BITMASK(BCH_MEMBER_STATE, struct bch_member, flags, 0, 4) 72/* 4-14 unused, was TIER, HAS_(META)DATA, REPLACEMENT */ 73LE64_BITMASK(BCH_MEMBER_DISCARD, struct bch_member, flags, 14, 15) 74LE64_BITMASK(BCH_MEMBER_DATA_ALLOWED, struct bch_member, flags, 15, 20) 75LE64_BITMASK(BCH_MEMBER_GROUP, struct bch_member, flags, 20, 28) 76LE64_BITMASK(BCH_MEMBER_DURABILITY, struct bch_member, flags, 28, 30) 77LE64_BITMASK(BCH_MEMBER_FREESPACE_INITIALIZED, 78 struct bch_member, flags, 30, 31) 79 80#if 0 81LE64_BITMASK(BCH_MEMBER_NR_READ_ERRORS, struct bch_member, flags[1], 0, 20); 82LE64_BITMASK(BCH_MEMBER_NR_WRITE_ERRORS,struct bch_member, flags[1], 20, 40); 83#endif 84 85#define BCH_MEMBER_STATES() \ 86 x(rw, 0) \ 87 x(ro, 1) \ 88 x(failed, 2) \ 89 x(spare, 3) 90 91enum bch_member_state { 92#define x(t, n) BCH_MEMBER_STATE_##t = n, 93 BCH_MEMBER_STATES() 94#undef x 95 BCH_MEMBER_STATE_NR 96}; 97 98struct bch_sb_field_members_v1 { 99 struct bch_sb_field field; 100 struct bch_member _members[]; //Members are now variable size 101}; 102 103struct bch_sb_field_members_v2 { 104 struct bch_sb_field field; 105 __le16 member_bytes; //size of single member entry 106 u8 pad[6]; 107 struct bch_member _members[]; 108}; 109 110#endif /* _BCACHEFS_SB_MEMBERS_FORMAT_H */