1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _BCACHEFS_SUBVOLUME_TYPES_H |
3 | #define _BCACHEFS_SUBVOLUME_TYPES_H |
4 | |
5 | #include "darray.h" |
6 | |
7 | typedef DARRAY(u32) snapshot_id_list; |
8 | |
9 | #define IS_ANCESTOR_BITMAP 128 |
10 | |
11 | struct snapshot_t { |
12 | u32 parent; |
13 | u32 skip[3]; |
14 | u32 depth; |
15 | u32 children[2]; |
16 | u32 subvol; /* Nonzero only if a subvolume points to this node: */ |
17 | u32 tree; |
18 | u32 equiv; |
19 | unsigned long is_ancestor[BITS_TO_LONGS(IS_ANCESTOR_BITMAP)]; |
20 | }; |
21 | |
22 | struct snapshot_table { |
23 | struct rcu_head rcu; |
24 | size_t nr; |
25 | #ifndef RUST_BINDGEN |
26 | DECLARE_FLEX_ARRAY(struct snapshot_t, s); |
27 | #else |
28 | struct snapshot_t s[0]; |
29 | #endif |
30 | }; |
31 | |
32 | typedef struct { |
33 | u32 subvol; |
34 | u64 inum; |
35 | } subvol_inum; |
36 | |
37 | #endif /* _BCACHEFS_SUBVOLUME_TYPES_H */ |
38 | |