summaryrefslogtreecommitdiff
path: root/libbcachefs/subvolume.h
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/subvolume.h')
-rw-r--r--libbcachefs/subvolume.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/libbcachefs/subvolume.h b/libbcachefs/subvolume.h
index 6d134dab..6905e91a 100644
--- a/libbcachefs/subvolume.h
+++ b/libbcachefs/subvolume.h
@@ -42,6 +42,15 @@ static inline const struct snapshot_t *snapshot_t(struct bch_fs *c, u32 id)
return __snapshot_t(rcu_dereference(c->snapshots), id);
}
+static inline u32 bch2_snapshot_tree(struct bch_fs *c, u32 id)
+{
+ rcu_read_lock();
+ id = snapshot_t(c, id)->tree;
+ rcu_read_unlock();
+
+ return id;
+}
+
static inline u32 __bch2_snapshot_parent_early(struct bch_fs *c, u32 id)
{
return snapshot_t(c, id)->parent;
@@ -157,7 +166,14 @@ static inline u32 bch2_snapshot_sibling(struct bch_fs *c, u32 id)
return 0;
}
-bool bch2_snapshot_is_ancestor(struct bch_fs *, u32, u32);
+bool __bch2_snapshot_is_ancestor(struct bch_fs *, u32, u32);
+
+static inline bool bch2_snapshot_is_ancestor(struct bch_fs *c, u32 id, u32 ancestor)
+{
+ return id == ancestor
+ ? true
+ : __bch2_snapshot_is_ancestor(c, id, ancestor);
+}
static inline bool bch2_snapshot_has_children(struct bch_fs *c, u32 id)
{