Hi Linus, another batch of fixes for you... And on the subject of the rc3 announcement - yes, let's please dial back the excitement _just_ a bit, it's seemed a bit unhinged at times; bcachefs is still marked as experimental for a reason. You shouldn't be running bcachefs just yet if you'll be sad if things are offline for a bit (where a bit has been for a few people a week or two); IOW, this is still very much for early adopters and people who are willing and able to help test and debug. Worst case scenario you're not going to lose data, as long as you can be patient, but I'm still debugging issues where we get stuck in recovery (= filesystem offline). That said - things are coming together quite nicely. Will have more to say at LSF... ---------------------------------------------------------------- The following changes since commit 09d4c2acbf4c864fef0f520bbcba256c9a19102e: bcachefs: reconstruct_inode() (2024-04-03 14:46:51 -0400) are available in the Git repository at: https://evilpiepirate.org/git/bcachefs.git tags/bcachefs-2024-04-10 for you to fetch changes up to 1189bdda6c991cbf9342d84410042dd5f3a792e0: bcachefs: Fix __bch2_btree_and_journal_iter_init_node_iter() (2024-04-10 22:28:36 -0400) ---------------------------------------------------------------- bcachefs fixes for v6.9-rc4 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. ---------------------------------------------------------------- Bagas Sanjaya (2): Documentation: filesystems: Add bcachefs toctree MAINTAINERS: Add entry for bcachefs documentation Dan Carpenter (1): bcachefs: fix ! vs ~ typo in __clear_bit_le64() Hongbo Li (1): bcachefs: fix the count of nr_freed_pcpu after changing bc->freed_nonpcpu list Kent Overstreet (19): bcachefs: Make snapshot_is_ancestor() safe bcachefs: Bump limit in btree_trans_too_many_iters() bcachefs: Move btree_updates to debugfs bcachefs: Further improve btree_update_to_text() bcachefs: Print shutdown journal sequence number bcachefs: Fix rebalance from durability=0 device bcachefs: fix rand_delete unit test bcachefs: Fix BCH_IOCTL_FSCK_OFFLINE for encrypted filesystems bcachefs: Disable errors=panic for BCH_IOCTL_FSCK_OFFLINE bcachefs: JOURNAL_SPACE_LOW bcachefs: Fix gap buffer bug in bch2_journal_key_insert_take() bcachefs: fix bch2_get_acl() transaction restart handling bcachefs: fix eytzinger0_find_gt() bcachefs: Fix check_topology() when using node scan bcachefs: Don't scan for btree nodes when we can reconstruct bcachefs: btree_node_scan: Respect member.data_allowed bcachefs: Fix a race in btree_update_nodes_written() bcachefs: Kill read lock dropping in bch2_btree_node_lock_write_nofail() bcachefs: Fix __bch2_btree_and_journal_iter_init_node_iter() Thomas Bertschinger (1): bcachefs: create debugfs dir for each btree Thorsten Blum (1): bcachefs: Rename struct field swap to prevent macro naming collision Documentation/filesystems/bcachefs/index.rst | 11 +++ Documentation/filesystems/index.rst | 1 + MAINTAINERS | 1 + fs/bcachefs/acl.c | 30 +++---- fs/bcachefs/bcachefs_format.h | 14 +++ fs/bcachefs/btree_gc.c | 13 ++- fs/bcachefs/btree_iter.h | 2 +- fs/bcachefs/btree_journal_iter.c | 67 ++++++++++---- fs/bcachefs/btree_key_cache.c | 4 +- fs/bcachefs/btree_locking.c | 28 +----- fs/bcachefs/btree_node_scan.c | 11 ++- fs/bcachefs/btree_types.h | 14 +++ fs/bcachefs/btree_update_interior.c | 128 +++++++++++++-------------- fs/bcachefs/btree_update_interior.h | 3 +- fs/bcachefs/chardev.c | 98 +++++++++++--------- fs/bcachefs/data_update.c | 17 +++- fs/bcachefs/debug.c | 75 ++++++++++++---- fs/bcachefs/eytzinger.c | 8 +- fs/bcachefs/eytzinger.h | 26 ++++-- fs/bcachefs/journal_reclaim.c | 2 + fs/bcachefs/journal_types.h | 1 + fs/bcachefs/recovery.c | 14 --- fs/bcachefs/snapshot.c | 19 ++-- fs/bcachefs/super.c | 5 ++ fs/bcachefs/sysfs.c | 6 -- fs/bcachefs/tests.c | 2 +- fs/bcachefs/util.h | 10 ++- 27 files changed, 372 insertions(+), 238 deletions(-) create mode 100644 Documentation/filesystems/bcachefs/index.rst