diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-03-15 22:34:00 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-01-05 23:54:54 -0500 |
commit | 9a7f950dde4604d2f50911602bfa71a45bf92aa6 (patch) | |
tree | 4c8de81dcbd76dd290a2a83cd4a6b1f179ab7d92 | |
parent | c4b0119f49c3b3cbb0edad3542f77289fd6f37b3 (diff) |
bcachefs: Require snapshot id to be set
Now that all the existing code has been converted for snapshots, this
patch changes the code for initializing a btree iterator to require a
snapshot to be specified, and also change bkey_invalid() to allow for
non U32_MAX snapshot IDs.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/bkey_methods.c | 2 | ||||
-rw-r--r-- | fs/bcachefs/btree_iter.c | 20 |
2 files changed, 9 insertions, 13 deletions
diff --git a/fs/bcachefs/bkey_methods.c b/fs/bcachefs/bkey_methods.c index 3133db236b7b..f7f4139072b5 100644 --- a/fs/bcachefs/bkey_methods.c +++ b/fs/bcachefs/bkey_methods.c @@ -182,7 +182,7 @@ const char *__bch2_bkey_invalid(struct bch_fs *c, struct bkey_s_c k, if (type != BKEY_TYPE_btree && btree_type_has_snapshots(type) && - k.k->p.snapshot != U32_MAX) + !k.k->p.snapshot) return "invalid snapshot field"; if (type != BKEY_TYPE_btree && diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index a20d3cc063c8..115a8b92dcc3 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -680,6 +680,9 @@ static void bch2_btree_iter_verify(struct btree_iter *iter) static void bch2_btree_iter_verify_entry_exit(struct btree_iter *iter) { + BUG_ON((iter->flags & BTREE_ITER_FILTER_SNAPSHOTS) && + !iter->pos.snapshot); + BUG_ON(!(iter->flags & BTREE_ITER_ALL_SNAPSHOTS) && iter->pos.snapshot != iter->snapshot); @@ -2519,20 +2522,13 @@ static void __bch2_trans_iter_init(struct btree_trans *trans, btree_node_type_is_extents(btree_id)) flags |= BTREE_ITER_IS_EXTENTS; - if (!btree_type_has_snapshots(btree_id) && - !(flags & __BTREE_ITER_ALL_SNAPSHOTS)) + if (!(flags & __BTREE_ITER_ALL_SNAPSHOTS) && + !btree_type_has_snapshots(btree_id)) flags &= ~BTREE_ITER_ALL_SNAPSHOTS; -#if 0 - /* let's have this be explicitly set: */ - if ((flags & BTREE_ITER_TYPE) != BTREE_ITER_NODES && - btree_type_has_snapshots(btree_id) && - !(flags & BTREE_ITER_ALL_SNAPSHOTS)) - flags |= BTREE_ITER_FILTER_SNAPSHOTS; -#endif - if (!(flags & BTREE_ITER_ALL_SNAPSHOTS)) - pos.snapshot = btree_type_has_snapshots(btree_id) - ? U32_MAX : 0; + if (!(flags & BTREE_ITER_ALL_SNAPSHOTS) && + btree_type_has_snapshots(btree_id)) + flags |= BTREE_ITER_FILTER_SNAPSHOTS; iter->trans = trans; iter->path = NULL; |