]> git.sesse.net Git - bcachefs-tools-debian/blob - libbcachefs/super_types.h
89419fc7930d004f5b68cc80a53630ac625003d3
[bcachefs-tools-debian] / libbcachefs / super_types.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_SUPER_TYPES_H
3 #define _BCACHEFS_SUPER_TYPES_H
4
5 struct bch_sb_handle {
6         struct bch_sb           *sb;
7         struct block_device     *bdev;
8         struct bio              *bio;
9         size_t                  buffer_size;
10         fmode_t                 mode;
11         unsigned                have_layout:1;
12         unsigned                have_bio:1;
13         unsigned                fs_sb:1;
14         u64                     seq;
15 };
16
17 struct bch_devs_mask {
18         unsigned long d[BITS_TO_LONGS(BCH_SB_MEMBERS_MAX)];
19 };
20
21 struct bch_devs_list {
22         u8                      nr;
23         u8                      devs[BCH_BKEY_PTRS_MAX];
24 };
25
26 struct bch_member_cpu {
27         u64                     nbuckets;       /* device size */
28         u16                     first_bucket;   /* index of first bucket used */
29         u16                     bucket_size;    /* sectors */
30         u16                     group;
31         u8                      state;
32         u8                      discard;
33         u8                      data_allowed;
34         u8                      durability;
35         u8                      freespace_initialized;
36         u8                      valid;
37 };
38
39 struct bch_disk_group_cpu {
40         bool                            deleted;
41         u16                             parent;
42         struct bch_devs_mask            devs;
43 };
44
45 struct bch_disk_groups_cpu {
46         struct rcu_head                 rcu;
47         unsigned                        nr;
48         struct bch_disk_group_cpu       entries[];
49 };
50
51 #endif /* _BCACHEFS_SUPER_TYPES_H */