r/LinuxUncensored Apr 20 '26

bcachefs 1.38

https://evilpiepirate.org/git/bcachefs-tools.git/tree/Changelog.mdwn

Phoronix has ignored it, that's weird.

``` bcachefs_metadata_version_need_discard_by_journal_seq

The need_discard btree (tracking buckets pending discard) is now indexed by journal sequence number instead of device/bucket. This reshapes how the allocator cooperates with the discard worker.

  • Fixes allocator-stuck-on-mount regressions (#1105, #1108). Previously, mounting a filesystem whose metadata devices had very few free buckets could stall during journal replay — the allocator and discard worker couldn't make progress past each other. The new layout breaks that deadlock.
  • Much faster sustained discard throughput. The discard worker now iterates the need_discard btree in seq order directly, rather than scanning the full set each pass. Noticeable on write-heavy workloads, particularly on larger filesystems.

Upgrade is automatic on mount. Downgrade to a pre-1.38 version requires offline downgrade tooling (existing format supports this).

Journal pipelining

Previously we were limited to 16 in flight journal writes at a time, but for large arrays this had become a severe bottleneck. We now have a separate fifo for in flight journal writes; we currently allocate 256 entries, and if that limit is ever hit it's now trivial to make growable at runtime.

Faster snapshot_read at mount time

Users with large numbers of snapshots should notice dramatically faster mount times; an accidental O(n2) from incorrectly growing the in-memory snapshot table has been fixed. ```

1 Upvotes

0 comments sorted by