linux/fs/bcachefs
Kent Overstreet adfe9357c3 bcachefs: Tweak btree key cache shrinker so it actually frees
Freeing key cache items is a multi stage process; we need to wait for an
SRCU grace period to elapse, and we handle this ourselves - partially to
avoid callback overhead, but primarily so that when allocating we can
first allocate from the freed items waiting for an SRCU grace period.

Previously, the shrinker was counting the items on the 'waiting for SRCU
grace period' lists as items being scanned, but this meant that too many
items waiting for an SRCU grace period could prevent it from doing any
work at all.

After this, we're seeing that items skipped due to the accessed bit are
the main cause of the shrinker not making any progress, and we actually
want the key cache shrinker to run quite aggressively because reclaimed
items will still generally be found (more compactly) in the btree node
cache - so we also tweak the shrinker to not count those against
nr_to_scan.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2024-04-20 17:06:20 -04:00
..
acl.c bcachefs: fix bch2_get_acl() transaction restart handling 2024-04-07 17:15:53 -04:00
acl.h
alloc_background_format.h bcachefs: alloc_background_format.h 2024-01-21 13:27:10 -05:00
alloc_background.c bcachefs: Check for bad needs_discard before doing discard 2024-04-02 20:24:00 -04:00
alloc_background.h bcachefs: Split out discard fastpath 2024-03-13 21:22:25 -04:00
alloc_foreground.c bcachefs: BCH_WATERMARK_interior_updates 2024-04-01 21:14:02 -04:00
alloc_foreground.h
alloc_types.h bcachefs: BCH_WATERMARK_interior_updates 2024-04-01 21:14:02 -04:00
backpointers.c bcachefs: Fix bio alloc in check_extent_checksum() 2024-04-17 17:29:58 -04:00
backpointers.h bcachefs: Check for backpointer bucket_offset >= bucket size 2024-04-14 20:02:11 -04:00
bbpos_types.h bcachefs: Pin btree cache in ram for random access in fsck 2024-03-13 21:22:24 -04:00
bbpos.h
bcachefs_format.h bcachefs: KEY_TYPE_error is allowed for reflink 2024-04-17 17:29:58 -04:00
bcachefs_ioctl.h bcachefs: Replace zero-length array with flex-array member and use __counted_by 2024-01-01 11:47:41 -05:00
bcachefs.h bcachefs: Fix missing write refs in fs fio paths 2024-04-13 22:48:17 -04:00
bkey_buf.h
bkey_cmp.h
bkey_methods.c bcachefs: Interior known are required to have known key types 2024-04-14 18:01:12 -04:00
bkey_methods.h bcachefs: BTREE_TRIGGER_ATOMIC 2024-01-21 06:01:45 -05:00
bkey_sort.c bcachefs: bkey_copy() is no longer a macro 2023-11-05 13:12:18 -05:00
bkey_sort.h
bkey_types.h bcachefs: Split out bkey_types.h 2024-03-13 21:22:26 -04:00
bkey.c bcachefs: Improve move_extent tracepoint 2024-01-21 13:27:09 -05:00
bkey.h bcachefs: Check for packed bkeys that are too big 2024-04-13 22:48:16 -04:00
bset.c bcachefs: Fix btree node keys accounting in topology repair path 2024-03-31 20:36:11 -04:00
bset.h bcachefs: Fix btree node keys accounting in topology repair path 2024-03-31 20:36:11 -04:00
btree_cache.c bcachefs: Fix bch2_btree_node_fill() for !path 2024-04-14 20:02:11 -04:00
btree_cache.h bcachefs: Prep work for variable size btree node buffers 2024-01-21 13:27:10 -05:00
btree_gc.c bcachefs: fix leak in bch2_gc_write_reflink_key 2024-04-17 17:29:58 -04:00
btree_gc.h
btree_io.c bcachefs: Fix format specifier in validate_bset_keys() 2024-04-16 19:11:49 -04:00
btree_io.h bcachefs: Include btree_trans in more tracepoints 2024-01-01 11:47:40 -05:00
btree_iter.c bcachefs: Improved topology repair checks 2024-03-31 20:36:11 -04:00
btree_iter.h bcachefs: set_btree_iter_dontneed also clears should_be_locked 2024-04-15 13:31:15 -04:00
btree_journal_iter.c bcachefs: Fix __bch2_btree_and_journal_iter_init_node_iter() 2024-04-10 22:28:36 -04:00
btree_journal_iter.h bcachefs: bch2_shoot_down_journal_keys() 2024-04-03 14:44:18 -04:00
btree_key_cache_types.h bcachefs: Run btree key cache shrinker less aggressively 2023-11-13 21:45:01 -05:00
btree_key_cache.c bcachefs: Tweak btree key cache shrinker so it actually frees 2024-04-20 17:06:20 -04:00
btree_key_cache.h bcachefs; kill bch2_btree_key_cache_flush() 2024-01-01 11:47:41 -05:00
btree_locking.c bcachefs: Kill read lock dropping in bch2_btree_node_lock_write_nofail() 2024-04-10 22:28:36 -04:00
btree_locking.h bcachefs: Improve trace_trans_restart_relock 2024-01-21 13:27:10 -05:00
btree_node_scan_types.h bcachefs: Repair pass for scanning for btree nodes 2024-04-03 14:44:18 -04:00
btree_node_scan.c bcachefs: node scan: ignore multiple nodes with same seq if interior 2024-04-16 19:14:00 -04:00
btree_node_scan.h bcachefs: Repair pass for scanning for btree nodes 2024-04-03 14:44:18 -04:00
btree_trans_commit.c bcachefs: Fix deadlock in journal replay 2024-04-13 22:48:17 -04:00
btree_types.h bcachefs: bkey_cached.btree_trans_barrier_seq needs to be a ulong 2024-04-20 15:15:51 -04:00
btree_update_interior.c bcachefs: bch_member.btree_allocated_bitmap 2024-04-14 20:02:11 -04:00
btree_update_interior.h bcachefs: Further improve btree_update_to_text() 2024-04-04 16:56:44 -04:00
btree_update.c bcachefs: Don't do extent merging before journal replay is finished 2024-03-31 20:36:11 -04:00
btree_update.h bcachefs: bch2_btree_bit_mod() 2024-03-13 21:22:24 -04:00
btree_write_buffer_types.h bcachefs: Inline btree write buffer sort 2024-01-01 11:47:41 -05:00
btree_write_buffer.c bcachefs: Fix btree node merging on write buffer btrees 2024-04-13 22:49:25 -04:00
btree_write_buffer.h bcachefs: __bch2_journal_key_to_wb -> bch2_journal_key_to_wb_slowpath 2024-01-05 23:24:19 -05:00
buckets_types.h bcachefs: bch_fs_usage_base 2024-01-21 06:01:45 -05:00
buckets_waiting_for_journal_types.h
buckets_waiting_for_journal.c
buckets_waiting_for_journal.h
buckets.c bcachefs: Kill bch2_bkey_ptr_data_type() 2024-03-31 20:36:11 -04:00
buckets.h bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
chardev.c bcachefs: Fix null ptr deref in twf from BCH_IOCTL_FSCK_OFFLINE 2024-04-16 19:11:49 -04:00
chardev.h
checksum.c bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
checksum.h bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
clock_types.h
clock.c bcachefs: bch2_kthread_io_clock_wait() no longer sleeps until full amount 2024-01-21 13:27:09 -05:00
clock.h
compress.c bcachefs: kill kvpmalloc() 2024-03-13 18:39:12 -04:00
compress.h bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
darray.c bcachefs: DARRAY_PREALLOCATED() 2024-01-01 11:46:52 -05:00
darray.h bcachefs: Convert split_devs() to darray 2024-01-01 11:47:43 -05:00
data_update.c bcachefs: Fix rebalance from durability=0 device 2024-04-05 03:05:30 -04:00
data_update.h bcachefs: Data update path won't accidentaly grow replicas 2023-11-25 21:48:42 -05:00
debug.c bcachefs: Move btree_updates to debugfs 2024-04-04 16:56:44 -04:00
debug.h
dirent_format.h bcachefs: dirent_format.h 2024-01-21 13:27:10 -05:00
dirent.c bcachefs: Check for subvolume children when deleting subvolumes 2024-03-13 21:22:24 -04:00
dirent.h bcachefs: Correctly reattach subvolumes 2024-03-13 21:22:24 -04:00
disk_groups_types.h
disk_groups.c bcachefs: %pg is banished 2024-01-05 23:24:21 -05:00
disk_groups.h
ec_format.h bcachefs: ec_format.h 2024-01-21 13:27:11 -05:00
ec_types.h bcachefs: Rename bch_replicas_entry -> bch_replicas_entry_v1 2024-01-01 11:47:38 -05:00
ec.c bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
ec.h bcachefs: fix unsafety in bch2_stripe_to_text() 2024-04-13 22:48:16 -04:00
errcode.c bcachefs: Errcode tracepoint, documentation 2024-03-13 21:22:25 -04:00
errcode.h bcachefs: Add checks for invalid snapshot IDs 2024-03-31 20:36:11 -04:00
error.c bcachefs: On emergency shutdown, print out current journal sequence number 2024-04-01 01:07:24 -04:00
error.h bcachefs: Improved topology repair checks 2024-03-31 20:36:11 -04:00
extent_update.c bcachefs: growable btree_paths 2024-01-01 11:47:44 -05:00
extent_update.h
extents_format.h bcachefs: reflink_format.h 2024-01-21 13:27:11 -05:00
extents_types.h
extents.c bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
extents.h bcachefs: Repair pass for scanning for btree nodes 2024-04-03 14:44:18 -04:00
eytzinger.c bcachefs: Rename struct field swap to prevent macro naming collision 2024-04-06 17:39:12 -04:00
eytzinger.h bcachefs: fix eytzinger0_find_gt() 2024-04-08 22:56:37 -04:00
fifo.h bcachefs: kill kvpmalloc() 2024-03-13 18:39:12 -04:00
fs-common.c bcachefs: Check for subvolume children when deleting subvolumes 2024-03-13 21:22:24 -04:00
fs-common.h
fs-io-buffered.c bcachefs: Buffered write path now can avoid the inode lock 2024-03-13 21:22:26 -04:00
fs-io-buffered.h
fs-io-direct.c bcachefs: Fix missing write refs in fs fio paths 2024-04-13 22:48:17 -04:00
fs-io-direct.h
fs-io-pagecache.c bcachefs: Fix excess transaction restarts in __bchfs_fallocate() 2024-01-21 13:27:10 -05:00
fs-io-pagecache.h bcachefs: fix bch_folio_sector padding 2024-03-13 21:22:26 -04:00
fs-io.c bcachefs: Fix missing write refs in fs fio paths 2024-04-13 22:48:17 -04:00
fs-io.h
fs-ioctl.c bcachefs: unlock parent dir if entry is not found in subvolume deletion 2024-01-28 21:41:09 -05:00
fs-ioctl.h bcachefs: x-macro-ify inode flags enum 2023-11-05 13:12:18 -05:00
fs.c bcachefs: fix mount error path 2024-03-31 20:36:10 -04:00
fs.h bcachefs: kill INODE_LOCK, use lock_two_nondirectories() 2024-01-01 11:47:36 -05:00
fsck.c bcachefs: reconstruct_inode() 2024-04-03 14:46:51 -04:00
fsck.h bcachefs: bch2_check_subvolume_structure() 2024-03-13 21:22:25 -04:00
inode_format.h bcachefs: inode_format.h 2024-01-21 13:27:10 -05:00
inode.c bcachefs: fix misplaced newline in __bch2_inode_unpacked_to_text() 2024-03-31 20:36:10 -04:00
inode.h bcachefs: Pass inode bkey to check_path() 2024-03-13 21:22:24 -04:00
io_misc.c bcachefs: Add error messages to logged ops fns 2024-03-31 20:36:11 -04:00
io_misc.h
io_read.c bcachefs: Prefer struct_size over open coded arithmetic 2024-03-13 21:22:26 -04:00
io_read.h
io_write_types.h
io_write.c bcachefs: time_stats: split stats-with-quantiles into a separate structure 2024-03-13 21:38:01 -04:00
io_write.h closures: CLOSURE_CALLBACK() to fix type punning 2023-11-24 00:29:58 -05:00
journal_io.c bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
journal_io.h bcachefs: split out ignore_blacklisted, ignore_not_dirty 2024-03-13 21:22:25 -04:00
journal_reclaim.c bcachefs: JOURNAL_SPACE_LOW 2024-04-06 13:50:26 -04:00
journal_reclaim.h bcachefs: btree write buffer now slurps keys from journal 2024-01-01 11:47:41 -05:00
journal_sb.c
journal_sb.h
journal_seq_blacklist.c bcachefs: Etyzinger cleanups 2024-04-03 14:44:18 -04:00
journal_seq_blacklist.h
journal_types.h bcachefs: JOURNAL_SPACE_LOW 2024-04-06 13:50:26 -04:00
journal.c bcachefs: Fix lost wakeup on journal shutdown 2024-03-18 23:35:42 -04:00
journal.h bcachefs: better journal pipelining 2024-03-10 15:34:08 -04:00
Kconfig bcachefs: optimize __bch2_trans_get(), kill DEBUG_TRANSACTIONS 2024-01-01 11:47:44 -05:00
keylist_types.h
keylist.c bcachefs: for_each_keylist_key() declares loop iter 2024-01-01 11:47:43 -05:00
keylist.h bcachefs: for_each_keylist_key() declares loop iter 2024-01-01 11:47:43 -05:00
logged_ops_format.h bcachefs: logged_ops_format.h 2024-01-21 13:27:11 -05:00
logged_ops.c bcachefs: Logged op errors should be ignored 2024-04-01 00:04:10 -04:00
logged_ops.h
lru.c bcachefs: reconstruct_alloc cleanup 2024-03-13 21:22:26 -04:00
lru.h
Makefile bcachefs: Repair pass for scanning for btree nodes 2024-04-03 14:44:18 -04:00
mean_and_variance_test.c mean_and_variance: Drop always failing tests 2024-04-02 14:45:08 -04:00
mean_and_variance.c bcachefs: mean_and_variance: put struct mean_and_variance_weighted on a diet 2024-03-13 21:37:58 -04:00
mean_and_variance.h bcachefs: mean_and_variance: put struct mean_and_variance_weighted on a diet 2024-03-13 21:37:58 -04:00
migrate.c bcachefs: Kill some -EINVALs 2024-03-10 15:34:09 -04:00
migrate.h
move_types.h
move.c bcachefs: opts->compression can now also be applied in the background 2024-01-21 13:27:10 -05:00
move.h bcachefs: rebalance should wakeup on shutdown if disabled 2024-01-01 11:47:39 -05:00
movinggc.c bcachefs: Improve bch2_fatal_error() 2024-03-18 00:24:24 -04:00
movinggc.h
nocow_locking_types.h
nocow_locking.c
nocow_locking.h
opts.c bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
opts.h bcachefs: Standardize helpers for printing enum strs with bounds checks 2024-04-13 22:48:17 -04:00
printbuf.c bcachefs: Fix missing va_end() 2024-02-13 21:59:27 -05:00
printbuf.h bcachefs: prt_bitflags_vector() 2024-01-01 11:47:07 -05:00
quota_format.h bcachefs; quota_format.h 2024-01-21 13:27:10 -05:00
quota_types.h
quota.c bcachefs: for_each_btree_key() now declares loop iter 2024-01-01 11:47:42 -05:00
quota.h
rebalance_types.h
rebalance.c bcachefs: rebalance_status now shows correct units 2024-03-13 21:22:25 -04:00
rebalance.h
recovery_passes_types.h bcachefs: Reconstruct missing snapshot nodes 2024-04-03 14:46:51 -04:00
recovery_passes.c bcachefs: Go rw if running any explicit recovery passes 2024-04-13 22:48:17 -04:00
recovery_passes.h bcachefs: bch2_run_explicit_recovery_pass_persistent() 2024-03-31 20:36:12 -04:00
recovery.c bcachefs: make sure to release last journal pin in replay 2024-04-16 19:14:01 -04:00
recovery.h bcachefs: Flag btrees with missing data 2024-04-03 14:46:51 -04:00
reflink_format.h bcachefs: reflink_format.h 2024-01-21 13:27:11 -05:00
reflink.c bcachefs: Fix repair path for missing indirect extents 2024-03-31 20:36:11 -04:00
reflink.h bcachefs: BTREE_TRIGGER_ATOMIC 2024-01-21 06:01:45 -05:00
replicas_types.h bcachefs: Replace zero-length arrays with flexible-array members 2024-01-01 11:47:39 -05:00
replicas.c bcachefs: Etyzinger cleanups 2024-04-03 14:44:18 -04:00
replicas.h bcachefs: Rename bch_replicas_entry -> bch_replicas_entry_v1 2024-01-01 11:47:38 -05:00
sb-clean.c bcachefs: Check for journal entries overruning end of sb clean section 2024-04-20 00:16:53 -04:00
sb-clean.h
sb-counters_format.h bcachefs: sb-counters_format.h 2024-01-21 13:27:10 -05:00
sb-counters.c bcachefs: counters.c -> sb-counters.c 2024-01-21 13:27:10 -05:00
sb-counters.h bcachefs: counters.c -> sb-counters.c 2024-01-21 13:27:10 -05:00
sb-downgrade.c bcachefs: bch_member.btree_allocated_bitmap 2024-04-14 20:02:11 -04:00
sb-downgrade.h bcachefs: Upgrades now specify errors to fix, like downgrades 2024-01-05 23:24:20 -05:00
sb-errors_types.h bcachefs: Check for journal entries overruning end of sb clean section 2024-04-20 00:16:53 -04:00
sb-errors.c bcachefs: bch_sb_field_downgrade 2024-01-01 11:47:07 -05:00
sb-errors.h bcachefs: bch_sb.recovery_passes_required 2024-01-01 11:47:07 -05:00
sb-members.c bcachefs: Fix bch2_dev_btree_bitmap_marked_sectors() shift 2024-04-17 17:29:53 -04:00
sb-members.h bcachefs: Fix bch2_dev_btree_bitmap_marked_sectors() shift 2024-04-17 17:29:53 -04:00
seqmutex.h
siphash.c
siphash.h
six.c bcachefs: six locks: Simplify optimistic spinning 2024-01-01 11:47:38 -05:00
six.h bcachefs: six lock: fix typos 2024-01-01 11:47:40 -05:00
snapshot_format.h bcachefs: snapshot_format.h 2024-01-21 13:27:10 -05:00
snapshot.c bcachefs: Make snapshot_is_ancestor() safe 2024-04-04 16:52:42 -04:00
snapshot.h bcachefs: Reconstruct missing snapshot nodes 2024-04-03 14:46:51 -04:00
str_hash.h bcachefs: bch2_hash_set_snapshot() -> bch2_hash_set_in_snapshot() 2024-03-10 15:34:08 -04:00
subvolume_format.h bcachefs: bch_subvolume::fs_path_parent 2024-03-13 21:22:24 -04:00
subvolume_types.h bcachefs: Move snapshot table size to struct snapshot_table 2024-03-31 20:36:11 -04:00
subvolume.c bcachefs: Split out recovery_passes.c 2024-03-31 20:36:11 -04:00
subvolume.h bcachefs: Split out recovery_passes.c 2024-03-31 20:36:11 -04:00
super_types.h bcachefs: bch_member.btree_allocated_bitmap 2024-04-14 20:02:11 -04:00
super-io.c bcachefs: fix error path of __bch2_read_super() 2024-04-15 13:31:15 -04:00
super-io.h bcachefs: __bch2_sb_field_to_text() 2024-01-05 23:24:21 -05:00
super.c bcachefs: Fix missing call to bch2_fs_allocator_background_exit() 2024-04-20 00:31:59 -04:00
super.h bcachefs: convert bch_fs_flags to x-macro 2024-01-01 11:47:38 -05:00
sysfs.c bcachefs: sysfs internal/trigger_journal_flush 2024-04-14 20:02:11 -04:00
sysfs.h
tests.c bcachefs: fix rand_delete unit test 2024-04-05 16:21:18 -04:00
tests.h
thread_with_file_types.h bcachefs: thread_with_stdio: convert to darray 2024-03-13 18:39:13 -04:00
thread_with_file.c bcachefs: Fix null ptr deref in twf from BCH_IOCTL_FSCK_OFFLINE 2024-04-16 19:11:49 -04:00
thread_with_file.h bcachefs: Fix null ptr deref in twf from BCH_IOCTL_FSCK_OFFLINE 2024-04-16 19:11:49 -04:00
time_stats.c bcachefs: time_stats: split stats-with-quantiles into a separate structure 2024-03-13 21:38:01 -04:00
time_stats.h bcachefs: time_stats: shrink time_stat_buffer for better alignment 2024-03-13 21:38:03 -04:00
trace.c
trace.h bcachefs: Errcode tracepoint, documentation 2024-03-13 21:22:25 -04:00
two_state_shared_lock.c
two_state_shared_lock.h
util.c bcachefs: Etyzinger cleanups 2024-04-03 14:44:18 -04:00
util.h bcachefs: JOURNAL_SPACE_LOW 2024-04-06 13:50:26 -04:00
varint.c
varint.h
vstructs.h bcachefs: vstruct_for_each() now declares loop iter 2024-01-01 11:47:42 -05:00
xattr_format.h bcachefs: xattr_format.h 2024-01-21 13:27:10 -05:00
xattr.c bcachefs: avoid returning private error code in bch2_xattr_bcachefs_set 2024-03-13 21:22:26 -04:00
xattr.h