1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H
3 #define _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H
10 } __packed
__aligned(8);
12 #define BCH_ALLOC_FIELDS_V1() \
16 x(dirty_sectors, 16) \
17 x(cached_sectors, 16) \
20 x(stripe_redundancy, 8)
23 #define x(name, _bits) BCH_ALLOC_FIELD_V1_##name,
35 } __packed
__aligned(8);
37 #define BCH_ALLOC_FIELDS_V2() \
40 x(dirty_sectors, 32) \
41 x(cached_sectors, 32) \
43 x(stripe_redundancy, 8)
54 } __packed
__aligned(8);
56 LE32_BITMASK(BCH_ALLOC_V3_NEED_DISCARD
,struct bch_alloc_v3
, flags
, 0, 1)
57 LE32_BITMASK(BCH_ALLOC_V3_NEED_INC_GEN
,struct bch_alloc_v3
, flags
, 1, 2)
66 __u8 stripe_redundancy
;
71 __u32 nr_external_backpointers
;
72 /* end of fields in original version of alloc_v4 */
73 __u64 _fragmentation_lru
; /* obsolete */
76 } __packed
__aligned(8);
78 #define BCH_ALLOC_V4_U64s_V0 6
79 #define BCH_ALLOC_V4_U64s (sizeof(struct bch_alloc_v4) / sizeof(__u64))
81 BITMASK(BCH_ALLOC_V4_NEED_DISCARD
, struct bch_alloc_v4
, flags
, 0, 1)
82 BITMASK(BCH_ALLOC_V4_NEED_INC_GEN
, struct bch_alloc_v4
, flags
, 1, 2)
83 BITMASK(BCH_ALLOC_V4_BACKPOINTERS_START
,struct bch_alloc_v4
, flags
, 2, 8)
84 BITMASK(BCH_ALLOC_V4_NR_BACKPOINTERS
, struct bch_alloc_v4
, flags
, 8, 14)
86 #define KEY_TYPE_BUCKET_GENS_BITS 8
87 #define KEY_TYPE_BUCKET_GENS_NR (1U << KEY_TYPE_BUCKET_GENS_BITS)
88 #define KEY_TYPE_BUCKET_GENS_MASK (KEY_TYPE_BUCKET_GENS_NR - 1)
90 struct bch_bucket_gens
{
92 u8 gens
[KEY_TYPE_BUCKET_GENS_NR
];
93 } __packed
__aligned(8);
95 #endif /* _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H */