linux-stable/fs/bcachefs
Kent Overstreet e242b92af5 bcachefs: Fix for long running btree transactions & key cache
While a btree transaction is running, we hold a SRCU read lock on the
btree key cache that prevents btree key cache keys from being freed -
this is so that relock() operations won't access freed memory.

The downside of this is that long running btree transactions prevent
memory from being freed from the key cache. This adds a check in
bch2_trans_begin() - if the transaction has been running longer than 1
second, drop and retake the SRCU read lock and zero out pointers to
unlock key cache paths.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-10-22 17:09:48 -04:00
..
acl.c bcachefs: Assorted checkpatch fixes 2023-10-22 17:09:44 -04:00
acl.h bcachefs: Plumb through subvolume id 2023-10-22 17:09:12 -04:00
alloc_background.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
alloc_background.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
alloc_foreground.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
alloc_foreground.h bcachefs: Kill bch2_alloc_sectors_start() 2023-10-22 17:09:45 -04:00
alloc_types.h bcachefs: bucket_alloc_state 2023-10-22 17:09:42 -04:00
bcachefs.h bcachefs: Fix a race with b->write_type 2023-10-22 17:09:46 -04:00
bcachefs_format.h bcachefs: New magic number 2023-10-22 17:09:47 -04:00
bcachefs_ioctl.h bcachefs: Convert to __packed and __aligned 2023-10-22 17:09:45 -04:00
bkey.c bcachefs: Add some unlikely() annotations 2023-10-22 17:09:48 -04:00
bkey.h bcachefs: bkey_min(), bkey_max() 2023-10-22 17:09:48 -04:00
bkey_buf.h bcachefs: Move bkey bkey_unpack_key() to bkey.h 2023-10-22 17:09:45 -04:00
bkey_cmp.h bcachefs: bch2_bkey_cmp_packed_inlined() 2023-10-22 17:09:45 -04:00
bkey_methods.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
bkey_methods.h bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
bkey_sort.c bcachefs: Btree split improvement 2023-10-22 17:09:46 -04:00
bkey_sort.h bcachefs: Kill bch2_sort_repack_merge() 2023-10-22 17:09:19 -04:00
bset.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
bset.h bcachefs: Btree split improvement 2023-10-22 17:09:46 -04:00
btree_cache.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
btree_cache.h bcachefs: Move bkey bkey_unpack_key() to bkey.h 2023-10-22 17:09:45 -04:00
btree_gc.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
btree_gc.h bcachefs: Fix a null ptr deref 2023-10-22 17:09:31 -04:00
btree_io.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
btree_io.h bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
btree_iter.c bcachefs: Fix for long running btree transactions & key cache 2023-10-22 17:09:48 -04:00
btree_iter.h bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
btree_key_cache.c bcachefs: Fix a livelock in key cache fill path 2023-10-22 17:09:47 -04:00
btree_key_cache.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
btree_locking.c bcachefs: Fixes for building in userspace 2023-10-22 17:09:46 -04:00
btree_locking.h bcachefs: Switch to local_clock() for fastpath time source 2023-10-22 17:09:44 -04:00
btree_types.h bcachefs: Fix for long running btree transactions & key cache 2023-10-22 17:09:48 -04:00
btree_update.h bcachefs: bch2_btree_insert_node() no longer uses lock_write_nofail 2023-10-22 17:09:43 -04:00
btree_update_interior.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
btree_update_interior.h bcachefs: Improved btree write statistics 2023-10-22 17:09:45 -04:00
btree_update_leaf.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
buckets.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
buckets.h bcachefs: Fixes for building in userspace 2023-10-22 17:09:46 -04:00
buckets_types.h bcachefs: Fold bucket_state in to BCH_DATA_TYPES() 2023-10-22 17:09:30 -04:00
buckets_waiting_for_journal.c bcachefs: New data structure for buckets waiting on journal commit 2023-10-22 17:09:22 -04:00
buckets_waiting_for_journal.h bcachefs: New data structure for buckets waiting on journal commit 2023-10-22 17:09:22 -04:00
buckets_waiting_for_journal_types.h bcachefs: New data structure for buckets waiting on journal commit 2023-10-22 17:09:22 -04:00
chardev.c bcachefs: Fix BCH_IOCTL_DISK_SET_STATE 2023-10-22 17:09:47 -04:00
chardev.h
checksum.c bcachefs: Inlining improvements 2023-10-22 17:09:45 -04:00
checksum.h bcachefs: Inlining improvements 2023-10-22 17:09:45 -04:00
clock.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
clock.h bcachefs: Convert various code to printbuf 2023-10-22 17:08:43 -04:00
clock_types.h bcachefs: Persist 64 bit io clocks 2023-10-22 17:08:52 -04:00
compress.c bcachefs: __bio_compress() fix up. 2023-10-22 17:09:44 -04:00
compress.h
counters.c bcachefs: Fix sb_field_counters formatting 2023-10-22 17:09:40 -04:00
counters.h bcachefs: Add persistent counters 2023-10-22 17:09:32 -04:00
darray.h bcachefs: darrays 2023-10-22 17:09:28 -04:00
data_update.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
data_update.h bcachefs: Handle dropping pointers in data_update path 2023-10-22 17:09:42 -04:00
debug.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
debug.h bcachefs: Update bch2_btree_verify() 2023-10-22 17:09:01 -04:00
dirent.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
dirent.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
disk_groups.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
disk_groups.h bcachefs: Fix adding a device with a label 2023-10-22 17:09:39 -04:00
ec.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
ec.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
ec_types.h bcachefs: Fix an include 2023-10-22 17:09:47 -04:00
errcode.c bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
errcode.h bcachefs: Fix for long running btree transactions & key cache 2023-10-22 17:09:48 -04:00
error.c bcachefs: Fixes for building in userspace 2023-10-22 17:09:46 -04:00
error.h bcachefs: Error message improvement 2023-10-22 17:09:46 -04:00
extent_update.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
extent_update.h bcachefs: Reduce iter->trans usage 2023-10-22 17:09:10 -04:00
extents.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
extents.h bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
extents_types.h bcachefs: Limit pointers to being in only one stripe 2023-10-22 17:08:29 -04:00
eytzinger.h bcachefs: Make eytzinger size parameter more conventional 2023-10-22 17:09:21 -04:00
fifo.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
fs-common.c bcachefs: Assorted checkpatch fixes 2023-10-22 17:09:44 -04:00
fs-common.h bcachefs: Add BCH_SUBVOLUME_UNLINKED 2023-10-22 17:09:15 -04:00
fs-io.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
fs-io.h bcachefs: Delete bch_writepage 2023-10-22 17:09:32 -04:00
fs-ioctl.c bcachefs: Support FS_XFLAG_PROJINHERIT 2023-10-22 17:09:43 -04:00
fs-ioctl.h
fs.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
fs.h bcachefs: Factor out two_state_shared_lock 2023-10-22 17:09:45 -04:00
fsck.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
fsck.h bcachefs: Drop bch2_fsck_inode_nlink() 2023-10-22 17:08:59 -04:00
inode.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
inode.h bcachefs: Improve bch2_inode_opts_to_opts() 2023-10-22 17:09:46 -04:00
io.c bcachefs: Suppress -EROFS messages when shutting down 2023-10-22 17:09:47 -04:00
io.h bcachefs: Kill BCH_WRITE_FLUSH 2023-10-22 17:09:45 -04:00
io_types.h bcachefs: Error message improvement 2023-10-22 17:09:46 -04:00
journal.c bcachefs: Assorted checkpatch fixes 2023-10-22 17:09:44 -04:00
journal.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
journal_io.c bcachefs: Recover from blacklisted journal entries 2023-10-22 17:09:48 -04:00
journal_io.h bcachefs: Improve journal_entry_add() 2023-10-22 17:09:43 -04:00
journal_reclaim.c bcachefs: Assorted checkpatch fixes 2023-10-22 17:09:44 -04:00
journal_reclaim.h bcachefs: Make sure to initialize j->last_flushed 2023-10-22 17:09:02 -04:00
journal_sb.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
journal_sb.h bcachefs: bch_sb_field_journal_v2 2023-10-22 17:09:29 -04:00
journal_seq_blacklist.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
journal_seq_blacklist.h Revert "bcachefs: Delete some obsolete journal_seq_blacklist code" 2023-10-22 17:09:21 -04:00
journal_types.h bcachefs: Fix a "no journal entries found" bug 2023-10-22 17:09:47 -04:00
Kconfig bcachefs: time stats now uses the mean_and_variance module. 2023-10-22 17:09:43 -04:00
keylist.c bcachefs: New bpos_cmp(), bkey_cmp() replacements 2023-10-22 17:09:47 -04:00
keylist.h bcachefs: DIO write path optimization 2023-10-22 17:09:45 -04:00
keylist_types.h
lru.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
lru.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
Makefile bcachefs: Factor out two_state_shared_lock 2023-10-22 17:09:45 -04:00
mean_and_variance.c bcachefs: Mean and variance 2023-10-22 17:09:43 -04:00
mean_and_variance.h bcachefs: Mean and variance 2023-10-22 17:09:43 -04:00
mean_and_variance_test.c bcachefs: Mean and variance 2023-10-22 17:09:43 -04:00
migrate.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
migrate.h
move.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
move.h bcachefs: Fixes for building in userspace 2023-10-22 17:09:46 -04:00
move_types.h bcachefs: add progress stats to sysfs 2023-10-22 17:09:10 -04:00
movinggc.c bcachefs: Suppress -EROFS messages when shutting down 2023-10-22 17:09:47 -04:00
movinggc.h bcachefs: Improve bucket_alloc_fail tracepoint 2023-10-22 17:09:36 -04:00
opts.c bcachefs: Improve bch2_inode_opts_to_opts() 2023-10-22 17:09:46 -04:00
opts.h bcachefs: Improve bch2_inode_opts_to_opts() 2023-10-22 17:09:46 -04:00
printbuf.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
printbuf.h bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
quota.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
quota.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
quota_types.h
rebalance.c bcachefs: Fixes for building in userspace 2023-10-22 17:09:46 -04:00
rebalance.h bcachefs: Convert various code to printbuf 2023-10-22 17:08:43 -04:00
rebalance_types.h bcachefs: add progress stats to sysfs 2023-10-22 17:09:10 -04:00
recovery.c bcachefs: Add a missing bch2_err_str() call 2023-10-22 17:09:48 -04:00
recovery.h bcachefs: Fix btree_and_journal_iter 2023-10-22 17:09:33 -04:00
reflink.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
reflink.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
replicas.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
replicas.h bcachefs: Move bkey bkey_unpack_key() to bkey.h 2023-10-22 17:09:45 -04:00
replicas_types.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
siphash.c bcachefs: Assorted checkpatch fixes 2023-10-22 17:09:44 -04:00
siphash.h
six.c six locks: Wakeup now takes lock on behalf of waiter 2023-10-22 17:09:41 -04:00
six.h six locks: Wakeup now takes lock on behalf of waiter 2023-10-22 17:09:41 -04:00
str_hash.h bcachefs: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
subvolume.c bcachefs: New btree helpers 2023-10-22 17:09:48 -04:00
subvolume.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
subvolume_types.h bcachefs: darrays 2023-10-22 17:09:28 -04:00
super-io.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
super-io.h bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
super.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
super.h bcachefs: Fix assertion in bch2_dev_list_add_dev() 2023-10-22 17:09:34 -04:00
super_types.h bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
sysfs.c bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
sysfs.h bcachefs: Add persistent counters 2023-10-22 17:09:32 -04:00
tests.c bcachefs: Make error messages more uniform 2023-10-22 17:09:45 -04:00
tests.h bcachefs: Add error handling to unit & perf tests 2023-10-22 17:08:48 -04:00
trace.c bcachefs: Tracepoint improvements 2023-10-22 17:09:38 -04:00
trace.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00
two_state_shared_lock.c bcachefs: Factor out two_state_shared_lock 2023-10-22 17:09:45 -04:00
two_state_shared_lock.h bcachefs: Factor out two_state_shared_lock 2023-10-22 17:09:45 -04:00
util.c bcachefs: Better inlining in bch2_time_stats_update() 2023-10-22 17:09:47 -04:00
util.h bcachefs: Delete atomic_inc_bug() 2023-10-22 17:09:46 -04:00
varint.c bcachefs: Add a valgrind memcheck hint 2023-10-22 17:09:13 -04:00
varint.h bcachefs: Add safe versions of varint encode/decode 2023-10-22 17:09:08 -04:00
vstructs.h bcachefs: Fix 32 bit build 2023-10-22 17:09:25 -04:00
xattr.c bcachefs: More errcode cleanup 2023-10-22 17:09:48 -04:00
xattr.h bcachefs: More style fixes 2023-10-22 17:09:45 -04:00