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 | |