From: Kent Overstreet Date: Thu, 15 Jul 2021 03:35:11 +0000 (-0400) Subject: bcachefs: Fix bch2_btree_iter_rewind() X-Git-Tag: v6.7-rc1~201^2~1469 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=71f892a48239a7ec025fdd7f88d252823fe9bff4;p=thirdparty%2Fkernel%2Flinux.git 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 --- diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 22419929ac1b7..745bf48241fd5 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);