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
7typedef DARRAY(u32) snapshot_id_list;
8
9#define IS_ANCESTOR_BITMAP 128
10
11struct 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
22struct 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
32typedef struct {
33 u32 subvol;
34 u64 inum;
35} subvol_inum;
36
37#endif /* _BCACHEFS_SUBVOLUME_TYPES_H */
38

source code of linux/fs/bcachefs/subvolume_types.h