diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-07-14 23:35:11 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:08 -0400 |
commit | 71f892a48239a7ec025fdd7f88d252823fe9bff4 (patch) | |
tree | ba650e60fb90f9d5ca1213a45e39afd0b775aebc /fs | |
parent | 914f2786b8923232eb925fe75cb7d0b0b3788d91 (diff) | |
download | lwn-71f892a48239a7ec025fdd7f88d252823fe9bff4.tar.gz lwn-71f892a48239a7ec025fdd7f88d252823fe9bff4.zip |
bcachefs: Fix bch2_btree_iter_rewind()
We'd hit a BUG() when rewinding at the start of the btree on btrees with
snapshots.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/bcachefs/btree_iter.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 22419929ac1b..745bf48241fd 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -1622,7 +1622,9 @@ inline bool bch2_btree_iter_advance(struct btree_iter *iter) inline bool bch2_btree_iter_rewind(struct btree_iter *iter) { struct bpos pos = bkey_start_pos(&iter->k); - bool ret = bpos_cmp(pos, POS_MIN) != 0; + bool ret = (iter->flags & BTREE_ITER_ALL_SNAPSHOTS + ? bpos_cmp(pos, POS_MIN) + : bkey_cmp(pos, POS_MIN)) != 0; if (ret && !(iter->flags & BTREE_ITER_IS_EXTENTS)) pos = bkey_predecessor(iter, pos); |