diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-21 00:34:58 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:32 -0400 |
commit | 099989c1b230e0f36ee7146d1df948822c999f6a (patch) | |
tree | 192fe7301b9581c646597462358bf891bb4058aa /fs/bcachefs/recovery.c | |
parent | 1cab5a82cc67a09705fbe0607e6ab751f6663524 (diff) |
bcachefs: Fix journal_iters_fix()
journal_iters_fix() was incorrectly rewinding iterators past keys they
had already returned, leading to those keys being double counted in the
bch2_gc() path - oops.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/recovery.c')
-rw-r--r-- | fs/bcachefs/recovery.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index 5831ab53a982..f54859b49416 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -147,7 +147,7 @@ static void journal_iters_fix(struct bch_fs *c) /* * If an iterator points one after the key we just inserted, - * and the key we just inserted compares >= the iterator's position, + * and the key we just inserted compares > the iterator's position, * decrement the iterator so it points at the key we just inserted: */ list_for_each_entry(iter, &c->journal_iters, journal.list) @@ -155,7 +155,7 @@ static void journal_iters_fix(struct bch_fs *c) iter->last && iter->b->c.btree_id == n->btree_id && iter->b->c.level == n->level && - bpos_cmp(n->k->k.p, iter->unpacked.p) >= 0) + bpos_cmp(n->k->k.p, iter->unpacked.p) > 0) iter->journal.idx = keys->gap - 1; } |