Path: blob/master/fs/bcachefs/alloc_background_format.h
26288 views
/* SPDX-License-Identifier: GPL-2.0 */1#ifndef _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H2#define _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H34struct bch_alloc {5struct bch_val v;6__u8 fields;7__u8 gen;8__u8 data[];9} __packed __aligned(8);1011#define BCH_ALLOC_FIELDS_V1() \12x(read_time, 16) \13x(write_time, 16) \14x(data_type, 8) \15x(dirty_sectors, 16) \16x(cached_sectors, 16) \17x(oldest_gen, 8) \18x(stripe, 32) \19x(stripe_redundancy, 8)2021enum {22#define x(name, _bits) BCH_ALLOC_FIELD_V1_##name,23BCH_ALLOC_FIELDS_V1()24#undef x25};2627struct bch_alloc_v2 {28struct bch_val v;29__u8 nr_fields;30__u8 gen;31__u8 oldest_gen;32__u8 data_type;33__u8 data[];34} __packed __aligned(8);3536#define BCH_ALLOC_FIELDS_V2() \37x(read_time, 64) \38x(write_time, 64) \39x(dirty_sectors, 32) \40x(cached_sectors, 32) \41x(stripe, 32) \42x(stripe_redundancy, 8)4344struct bch_alloc_v3 {45struct bch_val v;46__le64 journal_seq;47__le32 flags;48__u8 nr_fields;49__u8 gen;50__u8 oldest_gen;51__u8 data_type;52__u8 data[];53} __packed __aligned(8);5455LE32_BITMASK(BCH_ALLOC_V3_NEED_DISCARD,struct bch_alloc_v3, flags, 0, 1)56LE32_BITMASK(BCH_ALLOC_V3_NEED_INC_GEN,struct bch_alloc_v3, flags, 1, 2)5758struct bch_alloc_v4 {59struct bch_val v;60__u64 journal_seq_nonempty;61__u32 flags;62__u8 gen;63__u8 oldest_gen;64__u8 data_type;65__u8 stripe_redundancy;66__u32 dirty_sectors;67__u32 cached_sectors;68__u64 io_time[2];69__u32 stripe;70__u32 nr_external_backpointers;71/* end of fields in original version of alloc_v4 */72__u64 journal_seq_empty;73__u32 stripe_sectors;74__u32 pad;75} __packed __aligned(8);7677#define BCH_ALLOC_V4_U64s_V0 678#define BCH_ALLOC_V4_U64s (sizeof(struct bch_alloc_v4) / sizeof(__u64))7980BITMASK(BCH_ALLOC_V4_NEED_DISCARD, struct bch_alloc_v4, flags, 0, 1)81BITMASK(BCH_ALLOC_V4_NEED_INC_GEN, struct bch_alloc_v4, flags, 1, 2)82BITMASK(BCH_ALLOC_V4_BACKPOINTERS_START,struct bch_alloc_v4, flags, 2, 8)83BITMASK(BCH_ALLOC_V4_NR_BACKPOINTERS, struct bch_alloc_v4, flags, 8, 14)8485#define KEY_TYPE_BUCKET_GENS_BITS 886#define KEY_TYPE_BUCKET_GENS_NR (1U << KEY_TYPE_BUCKET_GENS_BITS)87#define KEY_TYPE_BUCKET_GENS_MASK (KEY_TYPE_BUCKET_GENS_NR - 1)8889struct bch_bucket_gens {90struct bch_val v;91u8 gens[KEY_TYPE_BUCKET_GENS_NR];92} __packed __aligned(8);9394#endif /* _BCACHEFS_ALLOC_BACKGROUND_FORMAT_H */959697