xref: /linux/fs/bcachefs/snapshot_format.h (revision 021bc4b9)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_SNAPSHOT_FORMAT_H
3 #define _BCACHEFS_SNAPSHOT_FORMAT_H
4 
5 struct bch_snapshot {
6 	struct bch_val		v;
7 	__le32			flags;
8 	__le32			parent;
9 	__le32			children[2];
10 	__le32			subvol;
11 	/* corresponds to a bch_snapshot_tree in BTREE_ID_snapshot_trees */
12 	__le32			tree;
13 	__le32			depth;
14 	__le32			skip[3];
15 	bch_le128		btime;
16 };
17 
18 LE32_BITMASK(BCH_SNAPSHOT_DELETED,	struct bch_snapshot, flags,  0,  1)
19 
20 /* True if a subvolume points to this snapshot node: */
21 LE32_BITMASK(BCH_SNAPSHOT_SUBVOL,	struct bch_snapshot, flags,  1,  2)
22 
23 /*
24  * Snapshot trees:
25  *
26  * The snapshot_trees btree gives us persistent indentifier for each tree of
27  * bch_snapshot nodes, and allow us to record and easily find the root/master
28  * subvolume that other snapshots were created from:
29  */
30 struct bch_snapshot_tree {
31 	struct bch_val		v;
32 	__le32			master_subvol;
33 	__le32			root_snapshot;
34 };
35 
36 #endif /* _BCACHEFS_SNAPSHOT_FORMAT_H */
37