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 /* we can't have padding in this struct: */ 34 u64 subvol; 35 u64 inum; 36 } subvol_inum; 37 38 #endif /* _BCACHEFS_SUBVOLUME_TYPES_H */ 39