summaryrefslogtreecommitdiff
path: root/c_src/libbcachefs/subvolume_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'c_src/libbcachefs/subvolume_types.h')
-rw-r--r--c_src/libbcachefs/subvolume_types.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/c_src/libbcachefs/subvolume_types.h b/c_src/libbcachefs/subvolume_types.h
new file mode 100644
index 00000000..ae644adf
--- /dev/null
+++ b/c_src/libbcachefs/subvolume_types.h
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _BCACHEFS_SUBVOLUME_TYPES_H
+#define _BCACHEFS_SUBVOLUME_TYPES_H
+
+#include "darray.h"
+
+typedef DARRAY(u32) snapshot_id_list;
+
+#define IS_ANCESTOR_BITMAP 128
+
+struct snapshot_t {
+ u32 parent;
+ u32 skip[3];
+ u32 depth;
+ u32 children[2];
+ u32 subvol; /* Nonzero only if a subvolume points to this node: */
+ u32 tree;
+ u32 equiv;
+ unsigned long is_ancestor[BITS_TO_LONGS(IS_ANCESTOR_BITMAP)];
+};
+
+struct snapshot_table {
+#ifndef RUST_BINDGEN
+ DECLARE_FLEX_ARRAY(struct snapshot_t, s);
+#else
+ struct snapshot_t s[0];
+#endif
+};
+
+typedef struct {
+ u32 subvol;
+ u64 inum;
+} subvol_inum;
+
+#endif /* _BCACHEFS_SUBVOLUME_TYPES_H */