Skip to content

Commit 2760bfe

Browse files
author
Kent Overstreet
committed
bcachefs: Fix reporting of freed objects from key cache shrinker
We count objects as freed when we move them to the srcu-pending lists because we're doing the equivalent of a kfree_srcu(); the only difference is managing the pending list ourself means we can allocate from the pending list. Signed-off-by: Kent Overstreet <[email protected]>
1 parent 9ac3e66 commit 2760bfe

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

fs/bcachefs/btree_key_cache.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,6 @@ static unsigned long bch2_btree_key_cache_scan(struct shrinker *shrink,
841841
six_lock_exit(&ck->c.lock);
842842
kmem_cache_free(bch2_key_cache, ck);
843843
atomic_long_dec(&bc->nr_freed);
844-
freed++;
845844
bc->nr_freed_nonpcpu--;
846845
bc->freed++;
847846
}
@@ -855,7 +854,6 @@ static unsigned long bch2_btree_key_cache_scan(struct shrinker *shrink,
855854
six_lock_exit(&ck->c.lock);
856855
kmem_cache_free(bch2_key_cache, ck);
857856
atomic_long_dec(&bc->nr_freed);
858-
freed++;
859857
bc->nr_freed_pcpu--;
860858
bc->freed++;
861859
}
@@ -877,23 +875,22 @@ static unsigned long bch2_btree_key_cache_scan(struct shrinker *shrink,
877875

878876
if (test_bit(BKEY_CACHED_DIRTY, &ck->flags)) {
879877
bc->skipped_dirty++;
880-
goto next;
881878
} else if (test_bit(BKEY_CACHED_ACCESSED, &ck->flags)) {
882879
clear_bit(BKEY_CACHED_ACCESSED, &ck->flags);
883880
bc->skipped_accessed++;
884-
goto next;
885-
} else if (bkey_cached_lock_for_evict(ck)) {
881+
} else if (!bkey_cached_lock_for_evict(ck)) {
882+
bc->skipped_lock_fail++;
883+
} else {
886884
bkey_cached_evict(bc, ck);
887885
bkey_cached_free(bc, ck);
888886
bc->moved_to_freelist++;
889-
} else {
890-
bc->skipped_lock_fail++;
887+
freed++;
891888
}
892889

893890
scanned++;
894891
if (scanned >= nr)
895892
break;
896-
next:
893+
897894
pos = next;
898895
}
899896

0 commit comments

Comments
 (0)