GNU Linux-libre 6.9-gnu
[releases.git] / fs / bcachefs / subvolume_types.h
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 */