diff options
Diffstat (limited to 'libbcachefs/bcachefs_format.h')
-rw-r--r-- | libbcachefs/bcachefs_format.h | 62 |
1 files changed, 48 insertions, 14 deletions
diff --git a/libbcachefs/bcachefs_format.h b/libbcachefs/bcachefs_format.h index ab8b9446..b6e7b983 100644 --- a/libbcachefs/bcachefs_format.h +++ b/libbcachefs/bcachefs_format.h @@ -426,6 +426,16 @@ enum bch_csum_type { BCH_CSUM_NR = 7, }; +static const unsigned bch_crc_bytes[] = { + [BCH_CSUM_NONE] = 0, + [BCH_CSUM_CRC32C_NONZERO] = 4, + [BCH_CSUM_CRC32C] = 4, + [BCH_CSUM_CRC64_NONZERO] = 8, + [BCH_CSUM_CRC64] = 8, + [BCH_CSUM_CHACHA20_POLY1305_80] = 10, + [BCH_CSUM_CHACHA20_POLY1305_128] = 16, +}; + static inline _Bool bch2_csum_type_is_encryption(enum bch_csum_type type) { switch (type) { @@ -783,6 +793,11 @@ struct bch_dirent { } __attribute__((packed, aligned(8))); BKEY_VAL_TYPE(dirent, BCH_DIRENT); +#define BCH_NAME_MAX (U8_MAX * sizeof(u64) - \ + sizeof(struct bkey) - \ + offsetof(struct bch_dirent, d_name)) + + /* Xattrs */ enum { @@ -868,7 +883,8 @@ struct bch_sb_field { x(crypt, 2) \ x(replicas, 3) \ x(quota, 4) \ - x(disk_groups, 5) + x(disk_groups, 5) \ + x(clean, 6) enum bch_sb_field_type { #define x(f, nr) BCH_SB_FIELD_##f = nr, @@ -1038,6 +1054,37 @@ struct bch_sb_field_disk_groups { struct bch_disk_group entries[0]; }; +/* + * On clean shutdown, store btree roots and current journal sequence number in + * the superblock: + */ +struct jset_entry { + __le16 u64s; + __u8 btree_id; + __u8 level; + __u8 type; /* designates what this jset holds */ + __u8 pad[3]; + + union { + struct bkey_i start[0]; + __u64 _data[0]; + }; +}; + +struct bch_sb_field_clean { + struct bch_sb_field field; + + __le32 flags; + __le16 read_clock; + __le16 write_clock; + __le64 journal_seq; + + union { + struct jset_entry start[0]; + __u64 _data[0]; + }; +}; + /* Superblock: */ /* @@ -1255,19 +1302,6 @@ static inline __u64 __bset_magic(struct bch_sb *sb) #define BCACHE_JSET_VERSION_JKEYS 2 #define BCACHE_JSET_VERSION 2 -struct jset_entry { - __le16 u64s; - __u8 btree_id; - __u8 level; - __u8 type; /* designates what this jset holds */ - __u8 pad[3]; - - union { - struct bkey_i start[0]; - __u64 _data[0]; - }; -}; - #define JSET_KEYS_U64s (sizeof(struct jset_entry) / sizeof(__u64)) #define BCH_JSET_ENTRY_TYPES() \ |