bcachefs: Improve btree_key_cache_flush_pos()
btree_key_cache_flush_pos() uses BTREE_ITER_CACHED_NOFILL - but it wasn't checking for !ck->valid. It does check for the entry being dirty, so it shouldn't matter, but this refactor it a bit and adds and assertion. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
This commit is contained in:
parent
80bf2f3454
commit
a9c0b125d8
@ -390,16 +390,20 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans,
|
||||
goto out;
|
||||
|
||||
ck = (void *) c_iter.path->l[0].b;
|
||||
if (!ck ||
|
||||
(journal_seq && ck->journal.seq != journal_seq))
|
||||
if (!ck)
|
||||
goto out;
|
||||
|
||||
if (!test_bit(BKEY_CACHED_DIRTY, &ck->flags)) {
|
||||
if (!evict)
|
||||
goto out;
|
||||
goto evict;
|
||||
if (evict)
|
||||
goto evict;
|
||||
goto out;
|
||||
}
|
||||
|
||||
BUG_ON(!ck->valid);
|
||||
|
||||
if (journal_seq && ck->journal.seq != journal_seq)
|
||||
goto out;
|
||||
|
||||
/*
|
||||
* Since journal reclaim depends on us making progress here, and the
|
||||
* allocator/copygc depend on journal reclaim making progress, we need
|
||||
|
Loading…
x
Reference in New Issue
Block a user