brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · befdaa9 Raw
96 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H3#define _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H4 5struct bch_alloc {6	struct bch_val		v;7	__u8			fields;8	__u8			gen;9	__u8			data[];10} __packed __aligned(8);11 12#define BCH_ALLOC_FIELDS_V1()			\13	x(read_time,		16)		\14	x(write_time,		16)		\15	x(data_type,		8)		\16	x(dirty_sectors,	16)		\17	x(cached_sectors,	16)		\18	x(oldest_gen,		8)		\19	x(stripe,		32)		\20	x(stripe_redundancy,	8)21 22enum {23#define x(name, _bits) BCH_ALLOC_FIELD_V1_##name,24	BCH_ALLOC_FIELDS_V1()25#undef x26};27 28struct bch_alloc_v2 {29	struct bch_val		v;30	__u8			nr_fields;31	__u8			gen;32	__u8			oldest_gen;33	__u8			data_type;34	__u8			data[];35} __packed __aligned(8);36 37#define BCH_ALLOC_FIELDS_V2()			\38	x(read_time,		64)		\39	x(write_time,		64)		\40	x(dirty_sectors,	32)		\41	x(cached_sectors,	32)		\42	x(stripe,		32)		\43	x(stripe_redundancy,	8)44 45struct bch_alloc_v3 {46	struct bch_val		v;47	__le64			journal_seq;48	__le32			flags;49	__u8			nr_fields;50	__u8			gen;51	__u8			oldest_gen;52	__u8			data_type;53	__u8			data[];54} __packed __aligned(8);55 56LE32_BITMASK(BCH_ALLOC_V3_NEED_DISCARD,struct bch_alloc_v3, flags,  0,  1)57LE32_BITMASK(BCH_ALLOC_V3_NEED_INC_GEN,struct bch_alloc_v3, flags,  1,  2)58 59struct bch_alloc_v4 {60	struct bch_val		v;61	__u64			journal_seq;62	__u32			flags;63	__u8			gen;64	__u8			oldest_gen;65	__u8			data_type;66	__u8			stripe_redundancy;67	__u32			dirty_sectors;68	__u32			cached_sectors;69	__u64			io_time[2];70	__u32			stripe;71	__u32			nr_external_backpointers;72	/* end of fields in original version of alloc_v4 */73	__u64			_fragmentation_lru; /* obsolete */74	__u32			stripe_sectors;75	__u32			pad;76} __packed __aligned(8);77 78#define BCH_ALLOC_V4_U64s_V0	679#define BCH_ALLOC_V4_U64s	(sizeof(struct bch_alloc_v4) / sizeof(__u64))80 81BITMASK(BCH_ALLOC_V4_NEED_DISCARD,	struct bch_alloc_v4, flags,  0,  1)82BITMASK(BCH_ALLOC_V4_NEED_INC_GEN,	struct bch_alloc_v4, flags,  1,  2)83BITMASK(BCH_ALLOC_V4_BACKPOINTERS_START,struct bch_alloc_v4, flags,  2,  8)84BITMASK(BCH_ALLOC_V4_NR_BACKPOINTERS,	struct bch_alloc_v4, flags,  8,  14)85 86#define KEY_TYPE_BUCKET_GENS_BITS	887#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)89 90struct bch_bucket_gens {91	struct bch_val		v;92	u8			gens[KEY_TYPE_BUCKET_GENS_NR];93} __packed __aligned(8);94 95#endif /* _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H */96