linux/fs/bcachefs
Kent Overstreet 1148a97f1f bcachefs: Print cycle on unrecoverable deadlock
Some lock operations can't fail; a cycle of nofail locks is impossible
to recover from. So we want to get rid of these nofail locking
operations, but as this is tricky it'll be done incrementally.

If such a cycle happens, this patch prints out which codepaths are
involved so we know what to work on next.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-10-22 17:09:42 -04:00
..
acl.c bcachefs: EINTR -> BCH_ERR_transaction_restart 2023-10-22 17:09:37 -04:00
acl.h bcachefs: Plumb through subvolume id 2023-10-22 17:09:12 -04:00
alloc_background.c bcachefs: Add persistent counters for all tracepoints 2023-10-22 17:09:39 -04:00
alloc_background.h bcachefs: Fix should_invalidate_buckets() 2023-10-22 17:09:36 -04:00
alloc_foreground.c bcachefs: Don't quash error in bch2_bucket_alloc_set_trans() 2023-10-22 17:09:42 -04:00
alloc_foreground.h bcachefs: Kill allocator threads & freelists 2023-10-22 17:09:29 -04:00
alloc_types.h bcachefs: bucket_alloc_state 2023-10-22 17:09:42 -04:00
bcachefs_format.h bcachefs: Deadlock cycle detector 2023-10-22 17:09:41 -04:00
bcachefs_ioctl.h bcachefs: Fold bucket_state in to BCH_DATA_TYPES() 2023-10-22 17:09:30 -04:00
bcachefs.h bcachefs: Improve bch2_fsck_err() 2023-10-22 17:09:41 -04:00
bkey_buf.h bcachefs: Reduce/kill BKEY_PADDED use 2023-10-22 17:08:50 -04:00
bkey_methods.c bcachefs: Improve an error message 2023-10-22 17:09:34 -04:00
bkey_methods.h bcachefs: Plumb btree_id & level to trans_mark 2023-10-22 17:09:32 -04:00
bkey_sort.c bcachefs: Don't call bch2_bkey_transform() unnecessarily 2023-10-22 17:09:19 -04:00
bkey_sort.h bcachefs: Kill bch2_sort_repack_merge() 2023-10-22 17:09:19 -04:00
bkey.c bcachefs: bch2_bkey_packed_to_binary_text() 2023-10-22 17:09:38 -04:00
bkey.h bcachefs: bch2_bkey_packed_to_binary_text() 2023-10-22 17:09:38 -04:00
bset.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
bset.h bcachefs: Kill bch2_bset_fix_invalidated_key() 2023-10-22 17:09:21 -04:00
btree_cache.c bcachefs: bch2_btree_cache_scan() improvement 2023-10-22 17:09:41 -04:00
btree_cache.h bcachefs: New locking functions 2023-10-22 17:09:40 -04:00
btree_gc.c bcachefs: Use btree_type_has_ptrs() more consistently 2023-10-22 17:09:42 -04:00
btree_gc.h bcachefs: Fix a null ptr deref 2023-10-22 17:09:31 -04:00
btree_io.c bcachefs: btree_err() now uses bch2_print_string_as_lines() 2023-10-22 17:09:41 -04:00
btree_io.h bcachefs: Shutdown path improvements 2023-10-22 17:09:32 -04:00
btree_iter.c bcachefs: Fix bch2_btree_path_up_until_good_node() 2023-10-22 17:09:42 -04:00
btree_iter.h bcachefs: bch2_trans_locked() 2023-10-22 17:09:42 -04:00
btree_key_cache.c bcachefs: Break out bch2_btree_path_traverse_cached_slowpath() 2023-10-22 17:09:42 -04:00
btree_key_cache.h bcachefs: Btree key cache coherency 2023-10-22 17:09:23 -04:00
btree_locking.c bcachefs: Print cycle on unrecoverable deadlock 2023-10-22 17:09:42 -04:00
btree_locking.h bcachefs: bch2_btree_node_relock_notrace() 2023-10-22 17:09:41 -04:00
btree_types.h bcachefs: Delete old deadlock avoidance code 2023-10-22 17:09:41 -04:00
btree_update_interior.c bcachefs: Fix a deadlock in btree_update_nodes_written() 2023-10-22 17:09:42 -04:00
btree_update_interior.h bcachefs: New locking functions 2023-10-22 17:09:40 -04:00
btree_update_leaf.c bcachefs: Fix a trans path overflow in bch2_btree_delete_range_trans() 2023-10-22 17:09:42 -04:00
btree_update.h bcachefs: EINTR -> BCH_ERR_transaction_restart 2023-10-22 17:09:37 -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_types.h bcachefs: New data structure for buckets waiting on journal commit 2023-10-22 17:09:22 -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.c bcachefs: Fix "multiple types of data in same bucket" with ec 2023-10-22 17:09:42 -04:00
buckets.h bcachefs: fix __dev_available(). 2023-10-22 17:09:34 -04:00
chardev.c bcachefs: Fold bucket_state in to BCH_DATA_TYPES() 2023-10-22 17:09:30 -04:00
chardev.h bcachefs: Initial commit 2023-10-22 17:08:07 -04:00
checksum.c bcachefs: Use bch2_err_str() in error messages 2023-10-22 17:09:36 -04:00
checksum.h bcachefs: Check for errors from crypto_skcipher_encrypt() 2023-10-22 17:09:24 -04:00
clock_types.h bcachefs: Persist 64 bit io clocks 2023-10-22 17:08:52 -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
compress.c bcachefs: Turn encoded_extent_max into a regular option 2023-10-22 17:09:19 -04:00
compress.h bcachefs: Initial commit 2023-10-22 17:08:07 -04:00
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: Handle dropping pointers in data_update path 2023-10-22 17:09:42 -04:00
data_update.h bcachefs: Handle dropping pointers in data_update path 2023-10-22 17:09:42 -04:00
debug.c bcachefs: Print cycle on unrecoverable deadlock 2023-10-22 17:09:42 -04:00
debug.h bcachefs: Update bch2_btree_verify() 2023-10-22 17:09:01 -04:00
dirent.c bcachefs: EINTR -> BCH_ERR_transaction_restart 2023-10-22 17:09:37 -04:00
dirent.h bcachefs: Add rw to .key_invalid() 2023-10-22 17:09:30 -04:00
disk_groups.c bcachefs: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
disk_groups.h bcachefs: Fix adding a device with a label 2023-10-22 17:09:39 -04:00
ec_types.h bcachefs: Split out struct gc_stripe from struct stripe 2023-10-22 17:09:18 -04:00
ec.c bcachefs: Ratelimit ec error message 2023-10-22 17:09:42 -04:00
ec.h bcachefs: Pull out data_update.c 2023-10-22 17:09:34 -04:00
errcode.c bcachefs: Errcodes can now subtype standard error codes 2023-10-22 17:09:40 -04:00
errcode.h bcachefs: Delete old deadlock avoidance code 2023-10-22 17:09:41 -04:00
error.c bcachefs: Ensure fsck error is printed before panic 2023-10-22 17:09:42 -04:00
error.h bcachefs: Improve bch2_fsck_err() 2023-10-22 17:09:41 -04:00
extent_update.c bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
extent_update.h bcachefs: Reduce iter->trans usage 2023-10-22 17:09:10 -04:00
extents_types.h bcachefs: Limit pointers to being in only one stripe 2023-10-22 17:08:29 -04:00
extents.c bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
extents.h bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
eytzinger.h bcachefs: Make eytzinger size parameter more conventional 2023-10-22 17:09:21 -04:00
fifo.h bcachefs: Convert bucket invalidation to key marking path 2023-10-22 17:08:16 -04:00
fs-common.c bcachefs: Don't BUG_ON() inode link count underflow 2023-10-22 17:09:34 -04:00
fs-common.h bcachefs: Add BCH_SUBVOLUME_UNLINKED 2023-10-22 17:09:15 -04:00
fs-io.c bcachefs: Kill io_in_flight semaphore 2023-10-22 17:09:42 -04:00
fs-io.h bcachefs: Delete bch_writepage 2023-10-22 17:09:32 -04:00
fs-ioctl.c bcachefs: Errcodes can now subtype standard error codes 2023-10-22 17:09:40 -04:00
fs-ioctl.h bcachefs: Fix mtime/ctime updates 2023-10-22 17:08:07 -04:00
fs.c bcachefs: Errcodes can now subtype standard error codes 2023-10-22 17:09:40 -04:00
fs.h bcachefs: darrays 2023-10-22 17:09:28 -04:00
fsck.c bcachefs: Re-enable hash_redo_key() 2023-10-22 17:09:40 -04:00
fsck.h bcachefs: Drop bch2_fsck_inode_nlink() 2023-10-22 17:08:59 -04:00
inode.c bcachefs: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
inode.h bcachefs: Don't BUG_ON() inode link count underflow 2023-10-22 17:09:34 -04:00
io_types.h bcachefs: Run btree updates after write out of write_point 2023-10-22 17:09:29 -04:00
io.c bcachefs: Factor out bch2_write_drop_io_error_ptrs() 2023-10-22 17:09:42 -04:00
io.h bcachefs: Factor out bch2_write_drop_io_error_ptrs() 2023-10-22 17:09:42 -04:00
journal_io.c bcachefs: Improve jset_validate() 2023-10-22 17:09:42 -04:00
journal_io.h bcachefs: Improve jset_validate() 2023-10-22 17:09:42 -04:00
journal_reclaim.c bcachefs: Add persistent counters for all tracepoints 2023-10-22 17:09:39 -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: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
journal_sb.h bcachefs: bch_sb_field_journal_v2 2023-10-22 17:09:29 -04:00
journal_seq_blacklist.c bcachefs: EINTR -> BCH_ERR_transaction_restart 2023-10-22 17:09:37 -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: Introduce a separate journal watermark for copygc 2023-10-22 17:09:29 -04:00
journal.c bcachefs: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
journal.h bcachefs: Refactor journal entry adding 2023-10-22 17:09:33 -04:00
Kconfig bcachefs: Improved errcodes 2023-10-22 17:09:36 -04:00
keylist_types.h bcachefs: Initial commit 2023-10-22 17:08:07 -04:00
keylist.c bcachefs: Fix bch2_verify_keylist_sorted 2023-10-22 17:09:02 -04:00
keylist.h bcachefs: Interior btree updates are now fully transactional 2023-10-22 17:08:40 -04:00
lru.c bcachefs: Convert bch2_check_lrus() to for_each_btree_key_commit() 2023-10-22 17:09:36 -04:00
lru.h bcachefs: LRU repair tweaks 2023-10-22 17:09:32 -04:00
Makefile bcachefs: btree_locking.c 2023-10-22 17:09:39 -04:00
migrate.c bcachefs: EINTR -> BCH_ERR_transaction_restart 2023-10-22 17:09:37 -04:00
migrate.h bcachefs: Initial commit 2023-10-22 17:08:07 -04:00
move_types.h bcachefs: add progress stats to sysfs 2023-10-22 17:09:10 -04:00
move.c bcachefs: Handle dropping pointers in data_update path 2023-10-22 17:09:42 -04:00
move.h bcachefs: move.c refactoring 2023-10-22 17:09:35 -04:00
movinggc.c bcachefs: Add persistent counters for all tracepoints 2023-10-22 17:09:39 -04:00
movinggc.h bcachefs: Improve bucket_alloc_fail tracepoint 2023-10-22 17:09:36 -04:00
opts.c bcachefs: Improve an error message 2023-10-22 17:09:34 -04:00
opts.h bcachefs: Add an O_DIRECT option (for userspace) 2023-10-22 17:09:37 -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_types.h bcachefs: bch2_fs_quota_transfer 2023-10-22 17:08:13 -04:00
quota.c bcachefs: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
quota.h bcachefs: Add rw to .key_invalid() 2023-10-22 17:09:30 -04:00
rebalance_types.h bcachefs: add progress stats to sysfs 2023-10-22 17:09:10 -04:00
rebalance.c bcachefs: Use bch2_err_str() in error messages 2023-10-22 17:09:36 -04:00
rebalance.h bcachefs: Convert various code to printbuf 2023-10-22 17:08:43 -04:00
recovery.c bcachefs: Kill journal_keys->journal_seq_base 2023-10-22 17:09:40 -04:00
recovery.h bcachefs: Fix btree_and_journal_iter 2023-10-22 17:09:33 -04:00
reflink.c bcachefs: EINTR -> BCH_ERR_transaction_restart 2023-10-22 17:09:37 -04:00
reflink.h bcachefs: Plumb btree_id & level to trans_mark 2023-10-22 17:09:32 -04:00
replicas_types.h bcachefs: Switch replicas to mark_lock 2023-10-22 17:08:13 -04:00
replicas.c bcachefs: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
replicas.h bcachefs: Add .to_text() methods for all superblock sections 2023-10-22 17:09:24 -04:00
siphash.c bcachefs: Initial commit 2023-10-22 17:08:07 -04:00
siphash.h bcachefs: Initial commit 2023-10-22 17:08:07 -04:00
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_types.h bcachefs: darrays 2023-10-22 17:09:28 -04:00
subvolume.c bcachefs: Add private error codes for ENOSPC 2023-10-22 17:09:40 -04:00
subvolume.h bcachefs: Improve snapshots_seen 2023-10-22 17:09:35 -04:00
super_types.h bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
super-io.c bcachefs: Improve jset_validate() 2023-10-22 17:09:42 -04:00
super-io.h bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
super.c bcachefs: Run bch2_fs_counters_init() earlier 2023-10-22 17:09:41 -04:00
super.h bcachefs: Fix assertion in bch2_dev_list_add_dev() 2023-10-22 17:09:34 -04:00
sysfs.c bcachefs: Use btree_type_has_ptrs() more consistently 2023-10-22 17:09:42 -04:00
sysfs.h bcachefs: Add persistent counters 2023-10-22 17:09:32 -04:00
tests.c bcachefs: Unit test updates 2023-10-22 17:09:37 -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: bucket_alloc_state 2023-10-22 17:09:42 -04:00
util.c bcachefs: Print cycle on unrecoverable deadlock 2023-10-22 17:09:42 -04:00
util.h bcachefs: Print cycle on unrecoverable deadlock 2023-10-22 17:09:42 -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: Errcodes can now subtype standard error codes 2023-10-22 17:09:40 -04:00
xattr.h bcachefs: Add rw to .key_invalid() 2023-10-22 17:09:30 -04:00