Re: [GIT PULL] bcachefs changes for 6.17

Carl E. Thompson
2025-08-05T22:50:05Z

If we're giving our personal opinions I lean the other way.

I make no statement about the quality of Mr. Overstreet's code or whether it is (or isn't) stabilizing. But for me as someone who's made a career out of Linux it's not just about code it's about *trust*. For me personally I've made the decision to remove bcachefs entirely from my personal workstations and lab where I'd been testing and using it extensively for years. It's harsh to say it but I simply do not trust Kent's decision making process nor do I trust him as a *person* enough for me to be comfortable running bcachefs. I base this not on what other's may have said or written about him but on my own interactions with him and reading his own words.

This can (and hopefully will) change. People can grow... particularly through adversity. I'm hopeful that if it's decided that bcachefs will be removed or its in-kernel development paused Kent may reevaluate what's important and how he deals with people. I look forward to being able to trust bcachefs again but that's not right now.

Just my 2¢.

> On 2025-08-05 2:19 PM PDT Malte Schröder <malte.schroeder@tnxip.de> wrote:
>
>
> On 28.07.25 17:14, Kent Overstreet wrote:
> > Schedule notes for users:
> >
> > I've been digging through the bug tracker and polling users to see what
> > bugs are still outstanding, and - it's not much.
> >
> > So, the experimental label is coming off in 6.18.
> >
> > As always, if you do hit a bug, please report it.
> >
> > -------------------------------
> >
> > The following changes since commit c37495fe3531647db4ae5787a80699ae1438d7cf:
> >
> > bcachefs: Add missing snapshots_seen_add_inorder() (2025-07-24 22:56:37 -0400)
> >
> > are available in the Git repository at:
> >
> > git://evilpiepirate.org/bcachefs.git tags/bcachefs-2025-07-28
> >
> > for you to fetch changes up to c0d938c16b674bfe9e710579344653b703b92a49:
> >
> > bcachefs: Add missing error_throw to bch2_set_version_incompat() (2025-07-25 12:03:48 -0400)
> >
> > ----------------------------------------------------------------
> > bcachefs changes for 6.17-rc1
> >
> > No noteworthy feature work: we're in hard freeze.
> >
> > Lots of bugfixes. Assorted user visible changes and fixes:
> >
> > - Fix a major performance bug when deleting many files: this was caused
> > by the key cache caching keys that had been deleted, causing certain
> > lookups in the inode triggers to scan excessively.
> >
> > - The "io_read_nopromote" counter has been broken out into sub-counters;
> > these can be seen with 'bcachefs fs top' on a recent bcachefs-tools.
> > This helps when diagnosing why reads aren't coming from the cache.
> >
> > - Congestion tracking is now a bit less aggressive (this controls when
> > we decide to do a promote); this area still needs more work.
> >
> > - Metadata writes are no longer throttled by writeback throttling
> >
> > - Nocow writes can now be rebalanced (e.g. background_target,
> > background_compression options)
> >
> > - (Almost) all recovery passes now have progress indicators.
> >
> > - Repair improvements: we'll now reconstruct missing inodes if we find
> > contents for that inode (more than one or two keys), not just if the
> > inodes btree was damaged: similarly for 'dirent to missing inode'.
> >
> > - Btree node tracepoint improvements: they've been converted to more
> > modern printbuf tracepoints, and include significantly more info.
> >
> > - Fix in-memory accounting going out of sync with the accounting btree
> > when doing accounting updates before going RW.
> >
> > - BCH_MIN_NR_BUCKETS (minimum number of buckets per device) has been
> > increased from 64 to 512. In the unlikely event that anyone anyone
> > actually was using bcachefs on sub 128M filesystems and doesn't want
> > to lose access (modern tools will format these small filesystems with
> > a more appropriate bucket size), please file a report or contact me.
> >
> > (This was just a syzbot issue, so far as I know).
> >
> > - CLASS()/guard() conversion: a great deal of code has been converted to
> > the new __cleanup based resource handling, and away from 'goto err'
> > cleanup.
>
> So, no merge yet? That really is a bummer. I was really hoping to
> finally be able to run mainline Linux again on my boxes (yes, I
> converted all of them to bcachefs early this year), now that pretty much
> all issues I was hitting are fixed by this merge request.
>
> I mean, at the rate Kent's tree is stabilizing right now I am actually
> considering moving some productive systems over there. But those will
> need to run distro kernels. So, please merge, I don't want to jump
> through the hoops to run OpenZFS ...
>
>
> Kind regards
>
> Malte
>
>
> > ----------------------------------------------------------------
> > Alan Huang (5):
> > bcachefs: Don't memcpy more than needed
> > bcachefs: Refactor trans->mem allocation
> > bcachefs: Shut up clang warning
> > bcachefs: Don't lock exec_update_lock
> > bcachefs: Use user_backed_iter instead of iter_is_iovec
> >
> > Anindya Sundar Gayen (1):
> > bcachefs: remove extraneous ; after statements
> >
> > George Hu (1):
> > bcachefs: use union for bch_compression_opt to make encode & decode easier
> >
> > Kent Overstreet (193):
> > bcachefs: Fix UAF by journal write path
> > bcachefs: async_objs: update iter pos after obj printed
> > bcachefs: fsck: dir_loop, subvol_loop now autofix
> > bcachefs: kill darray_u32_has()
> > bcachefs: Reduce __bch2_btree_node_alloc() stack usage
> > bcachefs: Allow CONFIG_UNICODE=m
> > bcachefs: use scoped_guard() in fast_list.c
> > bcachefs: DEFINE_CLASS()es for dev refcounts
> > bcachefs: More errcode conversions
> > bcachefs: add an unlikely() to trans_begin()
> > bcachefs: Plumb trans_kmalloc ip to trans_log_msg
> > bcachefs: Don't log error twice in allocator async repair
> > bcachefs: bch2_trans_has_updates()
> > bcachefs: Improve inode deletion
> > bcachefs: Don't peek key cache unless we have a real key
> > bcachefs: Evict/bypass key cache when deleting
> > bcachefs: -o fix_errors may now be used without -o fsck
> > bcachefs: Improved btree node tracepoints
> > bcachefs: Finish error_throw tracepoints
> > bcachefs: Improve inode_create behaviour on old filesystems
> > bcachefs: Before removing dangling dirents, check for contents
> > bcachefs: check_key_has_inode() reconstructs more aggressively
> > bcachefs: bch_fs.devs_removed
> > bcachefs: ptr_to_removed_device
> > bcachefs: bch2_journal_entry_missing_range()
> > bcachefs: Faster checking for missing journal entries
> > bcachefs: Add missing bch2_log_msg_start()
> > bcachefs: Print errcode when bch2_read_extent() sees error
> > bcachefs: Fix error message in buffered read path
> > bcachefs: Debug param for injecting btree node corruption on read
> > bcachefs: device add now properly sets c->online_devs
> > bcachefs: silence userspace build warning
> > bcachefs: Update path flags cleanups
> > bcachefs: add missing log message newline
> > bcachefs: add missing includes
> > bcachefs: silence userspace build warning
> > bcachefs: trace_data_update_done_no_rw_devs
> > bcachefs: use kvzalloc() for journal bios
> > bcachefs: Improve nopromote visibility
> > bcachefs: unsigned -> enum bch_trans_commit_flags
> > bcachefs: __bch2_btree_node_alloc() now respects target
> > bcachefs: bch2_btree_write_buffer_insert_checks()
> > bcachefs: don't call get_update_rebalance_opts() on btree ptrs
> > bcachefs: kill bch2_err_str() BUG_ON()
> > bcachefs: bch2_read_bio_to_text(): tabstops
> > bcachefs: kill __bch2_print_str()
> > bcachefs: bch_log()
> > bcachefs: c->loglevel
> > bcachefs: Zero list_idx when deleting from async obj lists
> > bcachefs: fix device add before fs started
> > bcachefs: fast_list: warn if non-empty on exit
> > bcachefs: bch2_journal_key_insert_take() accumulates accounting updates
> > bcachefs: bch2_fs_initialize() now runs journal replay
> > bcachefs: do_bch2_trans_commit_to_journal_replay handles accounting
> > bcachefs: bch2_set_nr_journal_buckets_iter() always marks
> > bcachefs: bch2_fs_initialize() initializes before going RW
> > bcachefs: Improve bch2_read_bio_to_text()
> > bcachefs: Fix replicas max options
> > bcachefs: Better congestion visibilty in sysfs
> > bcachefs: nopromote sub counters
> > bcachefs: make congestion tracking less aggressive
> > bcachefs: __bset_aux_tree_verify_ro()
> > bcachefs: Add missing bch2_bkey_set_needs_rebalance to nocow write path
> > bcachefs: delete useless null ptr check
> > bcachefs: Also create snapshots with CAP_FOWNER
> > bcachefs: Fix missing compat code in check_subvol()
> > bcachefs: Fix UAF in check_dirent()
> > bcachefs: Fix journal assertion
> > bcachefs: Fix __bch2_fs_read_write() error path
> > bcachefs: Give debugfs cached btree nodes better indentation
> > bcachefs: Silence clang warning about enum types
> > bcachefs: kill bkey_journal_seq()
> > bcachefs: don't pass bch_ioctl_data by value
> > bcachefs: better device too small error message
> > bcachefs: check_i_sectors now prints paths
> > bcachefs: simplify bch2_trans_do()
> > bcachefs: DEFINE_GUARD(printbuf_atomic)
> > bcachefs: convert super-io.c to CLASS/guards
> > bcachefs: convert super.c to CLASS/guards
> > bcachefs: convert acl.c to CLASS/guards
> > bcachefs: convert xattr.c to CLASS/guards
> > bcachefs: convert thread_with_file.c to CLASS/guards
> > bcachefs: convert unit tests to CLASS/guards
> > bcachefs: convert util.[ch] to CLASS/guards
> > bcachefs: convert six.c to guards
> > bcachefs: convert progress.c to guards
> > bcachefs: convert enumerated_ref.c to guards
> > bcachefs: convert opts.c to CLASS/guards
> > bcachefs: convert sysfs.c to CLASS/guards
> > bcachefs: convert buckets_waiting_for_journal.c to CLASS/guards
> > bcachefs: convert quota.c to CLASS/guards
> > bcachefs: convert sb-clean.c to CLASS/guards
> > bcachefs: convert sb-downgrade.c to CLASS/guards
> > bcachefs: convert sb-errors.c to CLASS/guards
> > bcachefs: convert sb-members.c to CLASS/guards
> > bcachefs: convert clock.c to CLASS/guards
> > bcachefs: convert debug.c to CLASS/guards
> > bcachefs: convert nocow_locking.c to CLASS/guards
> > bcachefs: convert replicas.c to CLASS/guards
> > bcachefs: convert bset.c to CLASS
> > bcachefs: convert bkey.c to CLASS
> > bcachefs: convert chardev.c to CLASS
> > bcachefs: convert fs-ioctl.c to CLASS/guards
> > bcachefs: convert disk_groups.c to guards
> > bcachefs: convert checksum.c to CLASS/guards
> > bcachefs: convert compress.c to guards
> > bcachefs: convert rebalance.c to CLASS/guards
> > bcachefs: convert migrate.c to CLASS/guards
> > bcachefs: convert move.c to CLASS/guards
> > bcachefs: convert movinggc.c to CLASS
> > bcachefs: convert data_update.c to CLASS/guards
> > bcachefs: convert reflink.c to CLASS/guards
> > bcachefs: convert snapshot.c to CLASS/guards
> > bcachefs: convert subvolume.c to CLASS/guards
> > bcachefs: convert str_hash.c to CLASS
> > bcachefs: convert recovery_passes.c to CLASS/guards
> > bcachefs: convert recovery.c to CLASS/guards
> > bcachefs: convert lru.c to CLASS
> > bcachefs: convert extents.c to guards
> > bcachefs: convert logged_ops.c to CLASS
> > bcachefs: convert inode.c to CLASS
> > bcachefs: convert dirent.c to CLASS
> > bcachefs: convert namei.c to CLASS
> > bcachefs: convert io_read.c to CLASS/guards
> > bcachefs: convert io_write.c to CLASS/guards
> > bcachefs: convert io_misc.c to CLASS/guards
> > bcachefs: convert fsck.c to CLASS/guards
> > bcachefs: convert disk_accounting.c to CLASS/guards
> > bcachefs: convert buckets.c to CLASS/guards
> > bcachefs: convert ec.c to CLASS/guards
> > bcachefs: convert backpointers.c to CLASS/guards
> > bcachefs: convert alloc_background.c to CLASS/guards
> > bcachefs: convert alloc_foreground.c to CLASS/guards
> > bcachefs: convert fs.c to CLASS/guards
> > bcachefs: convert fs-io.c to CLASS/guards
> > bcachefs: convert fs-io-pagecache.c to CLASS/guards
> > bcachefs: convert fs-io-buffered.c to CLASS/guards
> > bcachefs: convert fs-io-direct.c to CLASS/guards
> > bcachefs: convert btree_node_scan.c to CLASS/guards
> > bcachefs: convert journal.c to CLASS/guards
> > bcachefs: convert journal_io.c to CLASS/guards
> > bcachefs: convert journal_reclaim.c to CLASS/guards
> > bcachefs: convert journal_seq_blacklist.c to CLASS/guards
> > bcachefs: convert btree_cache.c to CLASS/guards
> > bcachefs: convert btree_gc.c to CLASS/guards
> > bcachefs: convert btree_write_buffer.c to CLASS/guards
> > bcachefs: convert btree_update.c to CLASS/guards
> > bcachefs: convert btree_update_interior.c to CLASS/guards
> > bcachefs: convert btree_trans_commit.c to CLASS/guards
> > bcachefs: convert btree_key_cache.c to CLASS/guards
> > bcachefs: convert btree_io.c to CLASS/guards
> > bcachefs: convert btree_iter.c to CLASS/guards
> > bcachefs: convert btree_locking.c to CLASS/guards
> > bcachefs: convert btree_journal_iter.c to CLASS/guards
> > bcachefs: bch2_run_recovery_pass() now prints errors
> > bcachefs: convert error.c to CLASS/guards
> > bcachefs: Fix padding zeroout when creating casefolded dirents
> > bcachefs: Don't call bch2_recovery_pass_want_ratelimit without sb_lock
> > bcachefs: Tell wbt throttling not to throttle metadata writes
> > bcachefs: Kill redundant write_super() when running recovery passes
> > bcachefs: Add comment to journal_flush_done()
> > bcachefs: Don't emit empty journal entry for accounting
> > bcachefs: sysfs trigger_btree_write_buffer_flush
> > closures: Improve warnings on bad put
> > bcachefs: Fix unhandled key type in fiemap_fill_extent
> > bcachefs: Ensure we don't return with closure on waitlist
> > bcachefs: bch2_move_data() now walks btree nodes
> > bcachefs: rereplicate flushes interior updates
> > bcachefs: can_use_btree_node()
> > bcachefs: Fix error handling in btree_iter_peek_slot
> > bcachefs: fix assert in bch2_btree_path_traverse_cached()
> > bcachefs: Fix allocate_dropping_locks() usage
> > bcachefs: log devices we're scanning in btree node scan
> > bcachefs: Fix refs to undefined fields in __bch2_alloc_v4_to_text()
> > bcachefs: fix check_extent_overbig() call
> > bcachefs: Convert topology repair errs to standard error codes
> > bcachefs: Fix __bch2_alloc_to_v4 copy
> > bcachefs: Flush btree_interior_update_work before freeing fs
> > bcachefs: Only track read latency for congestion tracking
> > bcachefs: Clean up btree_node_read_work() error handling
> > bcachefs: Ensure pick_read_device() returns error for btree pointers
> > bcachefs: btree_lost_data: mark a few more errors for silent fixing
> > bcachefs: Don't allow mounting with crazy numbers of dirty journal entries
> > bcachefs: Add pass_done to recovery_pass_status_to_text()
> > bcachefs: Increase BCH_MIN_NR_NBUCKETS
> > bcachefs: Hook up progress indicators for most recovery passes
> > bcachefs: recovery_pass_will_run()
> > bcachefs: journal_entry_btree_keys_to_text() is more careful
> > bcachefs: dirent_to_text() now uses prt_bytes()
> > bcachefs: Add missing ei_last_dirtied update
> > bcachefs: snapshots: pass snapshot_table where appropriate
> > bcachefs: live_child() no longer uses recursion
> > bcachefs: Add missing error_throw to bch2_set_version_incompat()
> >
> > Nikita Ofitserov (1):
> > bcachefs: Suppress unnecessary inode_i_sectors_wrong fsck error
> >
> > Youling Tang (2):
> > bcachefs: Simplify bch2_bio_map()
> > bcachefs: Use bio_add_folio_nofail() for unfailable operations
> >
> > fs/bcachefs/acl.c | 19 +-
> > fs/bcachefs/alloc_background.c | 300 +++++++---------
> > fs/bcachefs/alloc_background.h | 9 +-
> > fs/bcachefs/alloc_foreground.c | 209 +++++------
> > fs/bcachefs/alloc_foreground.h | 9 +-
> > fs/bcachefs/async_objs.c | 29 +-
> > fs/bcachefs/async_objs.h | 7 +-
> > fs/bcachefs/async_objs_types.h | 2 +-
> > fs/bcachefs/backpointers.c | 63 ++--
> > fs/bcachefs/bcachefs.h | 72 ++--
> > fs/bcachefs/bkey.c | 4 +-
> > fs/bcachefs/bset.c | 74 ++--
> > fs/bcachefs/btree_cache.c | 38 +-
> > fs/bcachefs/btree_cache.h | 11 +
> > fs/bcachefs/btree_gc.c | 122 +++----
> > fs/bcachefs/btree_io.c | 119 ++++---
> > fs/bcachefs/btree_iter.c | 129 ++++---
> > fs/bcachefs/btree_iter.h | 22 +-
> > fs/bcachefs/btree_journal_iter.c | 20 +-
> > fs/bcachefs/btree_key_cache.c | 16 +-
> > fs/bcachefs/btree_locking.c | 17 +-
> > fs/bcachefs/btree_node_scan.c | 32 +-
> > fs/bcachefs/btree_trans_commit.c | 121 ++++---
> > fs/bcachefs/btree_types.h | 22 +-
> > fs/bcachefs/btree_update.c | 171 +++++----
> > fs/bcachefs/btree_update.h | 79 +++--
> > fs/bcachefs/btree_update_interior.c | 335 +++++++++---------
> > fs/bcachefs/btree_update_interior.h | 12 +-
> > fs/bcachefs/btree_write_buffer.c | 45 ++-
> > fs/bcachefs/btree_write_buffer.h | 6 +-
> > fs/bcachefs/buckets.c | 212 +++++------
> > fs/bcachefs/buckets_waiting_for_journal.c | 30 +-
> > fs/bcachefs/chardev.c | 120 ++-----
> > fs/bcachefs/checksum.c | 54 ++-
> > fs/bcachefs/clock.c | 17 +-
> > fs/bcachefs/compress.c | 29 +-
> > fs/bcachefs/compress.h | 36 +-
> > fs/bcachefs/data_update.c | 33 +-
> > fs/bcachefs/debug.c | 92 +++--
> > fs/bcachefs/dirent.c | 42 +--
> > fs/bcachefs/dirent.h | 4 +-
> > fs/bcachefs/disk_accounting.c | 266 +++++++-------
> > fs/bcachefs/disk_accounting.h | 9 +-
> > fs/bcachefs/disk_groups.c | 27 +-
> > fs/bcachefs/ec.c | 239 +++++--------
> > fs/bcachefs/ec.h | 2 +-
> > fs/bcachefs/enumerated_ref.c | 4 +-
> > fs/bcachefs/errcode.c | 3 +-
> > fs/bcachefs/errcode.h | 13 +
> > fs/bcachefs/error.c | 65 ++--
> > fs/bcachefs/extents.c | 38 +-
> > fs/bcachefs/extents.h | 3 +
> > fs/bcachefs/fast_list.c | 32 +-
> > fs/bcachefs/fast_list.h | 2 +-
> > fs/bcachefs/fs-io-buffered.c | 79 ++---
> > fs/bcachefs/fs-io-direct.c | 11 +-
> > fs/bcachefs/fs-io-pagecache.c | 55 ++-
> > fs/bcachefs/fs-io.c | 127 ++++---
> > fs/bcachefs/fs-io.h | 19 +-
> > fs/bcachefs/fs-ioctl.c | 33 +-
> > fs/bcachefs/fs.c | 192 +++++-----
> > fs/bcachefs/fsck.c | 427 ++++++++++++----------
> > fs/bcachefs/inode.c | 101 +++---
> > fs/bcachefs/io_misc.c | 36 +-
> > fs/bcachefs/io_read.c | 157 +++++---
> > fs/bcachefs/io_read.h | 20 +-
> > fs/bcachefs/io_write.c | 46 +--
> > fs/bcachefs/journal.c | 253 ++++++-------
> > fs/bcachefs/journal.h | 3 +-
> > fs/bcachefs/journal_io.c | 248 ++++++-------
> > fs/bcachefs/journal_io.h | 7 +
> > fs/bcachefs/journal_reclaim.c | 220 ++++++------
> > fs/bcachefs/journal_seq_blacklist.c | 56 ++-
> > fs/bcachefs/journal_seq_blacklist.h | 3 +
> > fs/bcachefs/logged_ops.c | 14 +-
> > fs/bcachefs/lru.c | 24 +-
> > fs/bcachefs/migrate.c | 21 +-
> > fs/bcachefs/move.c | 218 +++++-------
> > fs/bcachefs/move.h | 14 +-
> > fs/bcachefs/movinggc.c | 6 +-
> > fs/bcachefs/namei.c | 26 +-
> > fs/bcachefs/nocow_locking.c | 10 +-
> > fs/bcachefs/opts.c | 33 +-
> > fs/bcachefs/opts.h | 8 +-
> > fs/bcachefs/printbuf.h | 4 +
> > fs/bcachefs/progress.c | 6 +-
> > fs/bcachefs/progress.h | 3 +
> > fs/bcachefs/quota.c | 96 ++---
> > fs/bcachefs/rebalance.c | 57 ++-
> > fs/bcachefs/recovery.c | 213 +++++------
> > fs/bcachefs/recovery_passes.c | 68 ++--
> > fs/bcachefs/recovery_passes.h | 9 +-
> > fs/bcachefs/reflink.c | 63 ++--
> > fs/bcachefs/replicas.c | 147 ++++----
> > fs/bcachefs/sb-clean.c | 36 +-
> > fs/bcachefs/sb-counters_format.h | 6 +
> > fs/bcachefs/sb-downgrade.c | 19 +-
> > fs/bcachefs/sb-errors.c | 45 +--
> > fs/bcachefs/sb-errors_format.h | 9 +-
> > fs/bcachefs/sb-members.c | 48 ++-
> > fs/bcachefs/sb-members.h | 19 +-
> > fs/bcachefs/sb-members_format.h | 2 +-
> > fs/bcachefs/six.c | 21 +-
> > fs/bcachefs/snapshot.c | 179 ++++------
> > fs/bcachefs/snapshot.h | 32 +-
> > fs/bcachefs/snapshot_types.h | 2 +-
> > fs/bcachefs/str_hash.c | 23 +-
> > fs/bcachefs/str_hash.h | 4 +-
> > fs/bcachefs/subvolume.c | 106 +++---
> > fs/bcachefs/super-io.c | 81 ++---
> > fs/bcachefs/super.c | 570 ++++++++++++++----------------
> > fs/bcachefs/sysfs.c | 28 +-
> > fs/bcachefs/tests.c | 198 +++++------
> > fs/bcachefs/thread_with_file.c | 52 +--
> > fs/bcachefs/time_stats.c | 7 +-
> > fs/bcachefs/trace.h | 152 ++------
> > fs/bcachefs/util.c | 28 +-
> > fs/bcachefs/util.h | 10 +-
> > fs/bcachefs/xattr.c | 52 ++-
> > lib/closure.c | 12 +-
> > 120 files changed, 3972 insertions(+), 4388 deletions(-)
> >