mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 14:12:06 +00:00
e1dc191dbf
Notable user impacting bugs - On multi device filesystems, recovery was looping in btree_trans_too_many_iters(). This checks if a transaction has touched too many btree paths (because of iteration over many keys), and isuses a restart to drop unneeded paths. But it's now possible for some paths to exceed the previous limit without iteration in the interior btree update path, since the transaction commit will do alloc updates for every old and new btree node, and during journal replay we don't use the btree write buffer for locking reasons and thus those updates use btree paths when they wouldn't normally. - Fix a corner case in rebalance when moving extents on a durability=0 device. This wouldn't be hit when a device was formatted with durability=0 since in that case we'll only use it as a write through cache (only cached extents will live on it), but durability can now be changed on an existing device. - bch2_get_acl() could rarely forget to handle a transaction restart; this manifested as the occasional missing acl that came back after dropping caches. - Fix a major performance regression on high iops multithreaded write workloads (only since 6.9-rc1); a previous fix for a deadlock in the interior btree update path to check the journal watermark introduced a dependency on the state of btree write buffer flushing that we didn't want. - Assorted other repair paths and recovery fixes. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEKnAFLkS8Qha+jvQrE6szbY3KbnYFAmYXTd8ACgkQE6szbY3K bna4MA//Y/CSB2JupxJPFUAb69+WmNDMnJJV3FlD/Hwo19kOR7aRbKQMUxsH51nb dfv5o/58n39QIBqMcMtTipnoND6jrwv7l5NimFKQmj/YehxosdsOf2BgbD/M4Ozz 84IUmHXSs5+zezjF8IAw/bjR/p13XNJGSYTfl1RWbGUMERLpfZcLn70FvoCR/qpQ Bcp+z70K6bBhrPZqFYd2mEC+Cfo42aCD1lqWUQ/e0FHiNEZnCNH2lNca4phBzGt4 f9sBxBcwmDfizQxqpyZ4izRzbS9ZwZ3ega336L2DrPpwgjMgTRLKLjdXqJDjGvDW ngvnaUw7SgICs+q48g3f67cGhw/4lSPdVu/9a/ldqDEP9PynQiUS1G8aDofLdboW xCZM6toX86p0DMNY2kP9vc5kxr377cSXAL7VeKbE+ZV5vGyEz1qFDLRAYVixHDfr Q7KgYvoJq8CgjfK7rIZbO2tqKhz2TP4+2rJa6tDLwKXs5ice++w/aF5d/nBZ7iCe +dyJ+aJiosjHEVG+QscACFrjBJdNNspJqBWDP396XeOsdl+iCeIRP0VHOGytLLRf gisE0Lhj4pz6bv7OhAAkdxvegVQ8HfqN1E+f/WM7Kogqos0NS2skEhy9cTuDCHUm qtPTUq5XNibiE6J+NOK86pu6o+6sqpWIpfTPuTbMid5sevLsomE= =BQC0 -----END PGP SIGNATURE----- Merge tag 'bcachefs-2024-04-10' of https://evilpiepirate.org/git/bcachefs Pull more bcachefs fixes from Kent Overstreet: "Notable user impacting bugs - On multi device filesystems, recovery was looping in btree_trans_too_many_iters(). This checks if a transaction has touched too many btree paths (because of iteration over many keys), and isuses a restart to drop unneeded paths. But it's now possible for some paths to exceed the previous limit without iteration in the interior btree update path, since the transaction commit will do alloc updates for every old and new btree node, and during journal replay we don't use the btree write buffer for locking reasons and thus those updates use btree paths when they wouldn't normally. - Fix a corner case in rebalance when moving extents on a durability=0 device. This wouldn't be hit when a device was formatted with durability=0 since in that case we'll only use it as a write through cache (only cached extents will live on it), but durability can now be changed on an existing device. - bch2_get_acl() could rarely forget to handle a transaction restart; this manifested as the occasional missing acl that came back after dropping caches. - Fix a major performance regression on high iops multithreaded write workloads (only since 6.9-rc1); a previous fix for a deadlock in the interior btree update path to check the journal watermark introduced a dependency on the state of btree write buffer flushing that we didn't want. - Assorted other repair paths and recovery fixes" * tag 'bcachefs-2024-04-10' of https://evilpiepirate.org/git/bcachefs: (25 commits) bcachefs: Fix __bch2_btree_and_journal_iter_init_node_iter() bcachefs: Kill read lock dropping in bch2_btree_node_lock_write_nofail() bcachefs: Fix a race in btree_update_nodes_written() bcachefs: btree_node_scan: Respect member.data_allowed bcachefs: Don't scan for btree nodes when we can reconstruct bcachefs: Fix check_topology() when using node scan bcachefs: fix eytzinger0_find_gt() bcachefs: fix bch2_get_acl() transaction restart handling bcachefs: fix the count of nr_freed_pcpu after changing bc->freed_nonpcpu list bcachefs: Fix gap buffer bug in bch2_journal_key_insert_take() bcachefs: Rename struct field swap to prevent macro naming collision MAINTAINERS: Add entry for bcachefs documentation Documentation: filesystems: Add bcachefs toctree bcachefs: JOURNAL_SPACE_LOW bcachefs: Disable errors=panic for BCH_IOCTL_FSCK_OFFLINE bcachefs: Fix BCH_IOCTL_FSCK_OFFLINE for encrypted filesystems bcachefs: fix rand_delete unit test bcachefs: fix ! vs ~ typo in __clear_bit_le64() bcachefs: Fix rebalance from durability=0 device bcachefs: Print shutdown journal sequence number ... |
||
---|---|---|
.. | ||
acl.c | ||
acl.h | ||
alloc_background_format.h | ||
alloc_background.c | ||
alloc_background.h | ||
alloc_foreground.c | ||
alloc_foreground.h | ||
alloc_types.h | ||
backpointers.c | ||
backpointers.h | ||
bbpos_types.h | ||
bbpos.h | ||
bcachefs_format.h | ||
bcachefs_ioctl.h | ||
bcachefs.h | ||
bkey_buf.h | ||
bkey_cmp.h | ||
bkey_methods.c | ||
bkey_methods.h | ||
bkey_sort.c | ||
bkey_sort.h | ||
bkey_types.h | ||
bkey.c | ||
bkey.h | ||
bset.c | ||
bset.h | ||
btree_cache.c | ||
btree_cache.h | ||
btree_gc.c | ||
btree_gc.h | ||
btree_io.c | ||
btree_io.h | ||
btree_iter.c | ||
btree_iter.h | ||
btree_journal_iter.c | ||
btree_journal_iter.h | ||
btree_key_cache_types.h | ||
btree_key_cache.c | ||
btree_key_cache.h | ||
btree_locking.c | ||
btree_locking.h | ||
btree_node_scan_types.h | ||
btree_node_scan.c | ||
btree_node_scan.h | ||
btree_trans_commit.c | ||
btree_types.h | ||
btree_update_interior.c | ||
btree_update_interior.h | ||
btree_update.c | ||
btree_update.h | ||
btree_write_buffer_types.h | ||
btree_write_buffer.c | ||
btree_write_buffer.h | ||
buckets_types.h | ||
buckets_waiting_for_journal_types.h | ||
buckets_waiting_for_journal.c | ||
buckets_waiting_for_journal.h | ||
buckets.c | ||
buckets.h | ||
chardev.c | ||
chardev.h | ||
checksum.c | ||
checksum.h | ||
clock_types.h | ||
clock.c | ||
clock.h | ||
compress.c | ||
compress.h | ||
darray.c | ||
darray.h | ||
data_update.c | ||
data_update.h | ||
debug.c | ||
debug.h | ||
dirent_format.h | ||
dirent.c | ||
dirent.h | ||
disk_groups_types.h | ||
disk_groups.c | ||
disk_groups.h | ||
ec_format.h | ||
ec_types.h | ||
ec.c | ||
ec.h | ||
errcode.c | ||
errcode.h | ||
error.c | ||
error.h | ||
extent_update.c | ||
extent_update.h | ||
extents_format.h | ||
extents_types.h | ||
extents.c | ||
extents.h | ||
eytzinger.c | ||
eytzinger.h | ||
fifo.h | ||
fs-common.c | ||
fs-common.h | ||
fs-io-buffered.c | ||
fs-io-buffered.h | ||
fs-io-direct.c | ||
fs-io-direct.h | ||
fs-io-pagecache.c | ||
fs-io-pagecache.h | ||
fs-io.c | ||
fs-io.h | ||
fs-ioctl.c | ||
fs-ioctl.h | ||
fs.c | ||
fs.h | ||
fsck.c | ||
fsck.h | ||
inode_format.h | ||
inode.c | ||
inode.h | ||
io_misc.c | ||
io_misc.h | ||
io_read.c | ||
io_read.h | ||
io_write_types.h | ||
io_write.c | ||
io_write.h | ||
journal_io.c | ||
journal_io.h | ||
journal_reclaim.c | ||
journal_reclaim.h | ||
journal_sb.c | ||
journal_sb.h | ||
journal_seq_blacklist.c | ||
journal_seq_blacklist.h | ||
journal_types.h | ||
journal.c | ||
journal.h | ||
Kconfig | ||
keylist_types.h | ||
keylist.c | ||
keylist.h | ||
logged_ops_format.h | ||
logged_ops.c | ||
logged_ops.h | ||
lru.c | ||
lru.h | ||
Makefile | ||
mean_and_variance_test.c | ||
mean_and_variance.c | ||
mean_and_variance.h | ||
migrate.c | ||
migrate.h | ||
move_types.h | ||
move.c | ||
move.h | ||
movinggc.c | ||
movinggc.h | ||
nocow_locking_types.h | ||
nocow_locking.c | ||
nocow_locking.h | ||
opts.c | ||
opts.h | ||
printbuf.c | ||
printbuf.h | ||
quota_format.h | ||
quota_types.h | ||
quota.c | ||
quota.h | ||
rebalance_types.h | ||
rebalance.c | ||
rebalance.h | ||
recovery_passes_types.h | ||
recovery_passes.c | ||
recovery_passes.h | ||
recovery.c | ||
recovery.h | ||
reflink_format.h | ||
reflink.c | ||
reflink.h | ||
replicas_types.h | ||
replicas.c | ||
replicas.h | ||
sb-clean.c | ||
sb-clean.h | ||
sb-counters_format.h | ||
sb-counters.c | ||
sb-counters.h | ||
sb-downgrade.c | ||
sb-downgrade.h | ||
sb-errors_types.h | ||
sb-errors.c | ||
sb-errors.h | ||
sb-members.c | ||
sb-members.h | ||
seqmutex.h | ||
siphash.c | ||
siphash.h | ||
six.c | ||
six.h | ||
snapshot_format.h | ||
snapshot.c | ||
snapshot.h | ||
str_hash.h | ||
subvolume_format.h | ||
subvolume_types.h | ||
subvolume.c | ||
subvolume.h | ||
super_types.h | ||
super-io.c | ||
super-io.h | ||
super.c | ||
super.h | ||
sysfs.c | ||
sysfs.h | ||
tests.c | ||
tests.h | ||
thread_with_file_types.h | ||
thread_with_file.c | ||
thread_with_file.h | ||
time_stats.c | ||
time_stats.h | ||
trace.c | ||
trace.h | ||
two_state_shared_lock.c | ||
two_state_shared_lock.h | ||
util.c | ||
util.h | ||
varint.c | ||
varint.h | ||
vstructs.h | ||
xattr_format.h | ||
xattr.c | ||
xattr.h |