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 #ifndef RUST_BINDGEN
24 	DECLARE_FLEX_ARRAY(struct snapshot_t, s);
25 #else
26 	struct snapshot_t	s[0];
27 #endif
28 };
29 
30 typedef struct {
31 	u32		subvol;
32 	u64		inum;
33 } subvol_inum;
34 
35 #endif /* _BCACHEFS_SUBVOLUME_TYPES_H */
36