]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bcachefs: Make btree_iter_peek_prev() assert more precise
authorKent Overstreet <kent.overstreet@linux.dev>
Tue, 22 Apr 2025 08:45:25 +0000 (04:45 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 24 Apr 2025 23:09:52 +0000 (19:09 -0400)
The issue this assert is guarding against is that in
BTREE_ITER_filter_snapshots mode we only want to be iterating within a
single inode number - if we iterate into another inode number with keys
for a different snapshot tree, we'll loop arbitrarily long before
finding a key we can return.

This comes up in the unit tests, where we're using inode 0 for our test
keys.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c

index e34e9598ef25abd3ac229416e090fdbe920e841b..400ff650553b4dff0f81496223dcb26cea26c3af 100644 (file)
@@ -2602,7 +2602,7 @@ struct bkey_s_c bch2_btree_iter_peek_prev_min(struct btree_trans *trans, struct
 
        bch2_trans_verify_not_unlocked_or_in_restart(trans);
        bch2_btree_iter_verify_entry_exit(iter);
-       EBUG_ON((iter->flags & BTREE_ITER_filter_snapshots) && bpos_eq(end, POS_MIN));
+       EBUG_ON((iter->flags & BTREE_ITER_filter_snapshots) && iter->pos.inode != end.inode);
 
        int ret = trans_maybe_inject_restart(trans, _RET_IP_);
        if (unlikely(ret)) {