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