From 597dee1cd67d591cd5aeba184fdb69d0da0ceb78 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 14 Jul 2022 02:34:48 -0400 Subject: bcachefs: Switch data_update path to snapshot_id_list snapshots_seen is becoming private to fsck, and snapshot_id_list is actually what the data update path needs. Signed-off-by: Kent Overstreet --- fs/bcachefs/subvolume.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'fs/bcachefs/subvolume.h') diff --git a/fs/bcachefs/subvolume.h b/fs/bcachefs/subvolume.h index b1739d29c7d4..28dbd0968f3d 100644 --- a/fs/bcachefs/subvolume.h +++ b/fs/bcachefs/subvolume.h @@ -93,6 +93,27 @@ static inline bool snapshot_list_has_id(snapshot_id_list *s, u32 id) return false; } +static inline bool snapshot_list_has_ancestor(struct bch_fs *c, snapshot_id_list *s, u32 id) +{ + u32 *i; + + darray_for_each(*s, i) + if (bch2_snapshot_is_ancestor(c, id, *i)) + return true; + return false; +} + +static inline int snapshot_list_add(struct bch_fs *c, snapshot_id_list *s, u32 id) +{ + int ret; + + BUG_ON(snapshot_list_has_id(s, id)); + ret = darray_push(s, id); + if (ret) + bch_err(c, "error reallocating snapshot_id_list (size %zu)", s->size); + return ret; +} + int bch2_fs_snapshots_check(struct bch_fs *); void bch2_fs_snapshots_exit(struct bch_fs *); int bch2_fs_snapshots_start(struct bch_fs *); -- cgit v1.2.3