1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _BCACHEFS_SNAPSHOT_FORMAT_H
3#define _BCACHEFS_SNAPSHOT_FORMAT_H
4
5struct 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
18LE32_BITMASK(BCH_SNAPSHOT_DELETED,	struct bch_snapshot, flags,  0,  1)
19
20/* True if a subvolume points to this snapshot node: */
21LE32_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 */
30struct 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