Bcachefs

Last updated
Bcachefs
Developer(s) Kent Overstreet
Introduced21 August 2015;10 years ago (2015-08-21)
Structures
Directory contentsHybrid B+ tree
File allocationExtents
Bad blocksNone recorded
Features
Dates recordedmodification (mtime), attribute modification (ctime), access (atime), create (crtime)
AttributesExtended attributes
File system
permissions
POSIX (+ ACL in xattrs)
Transparent
compression
Yes
Transparent
encryption
Yes
Copy-on-write Yes
Other
Supported
operating systems
Linux
Website bcachefs.org

Bcachefs is a copy-on-write (COW) file system for Linux-based operating systems. Its primary developer, Kent Overstreet, first announced it in 2015, and it was added to the Linux kernel beginning with 6.7. [1] [2] It is intended to compete with the modern features of ZFS or Btrfs. In June 2025, Linus Torvalds announced bcachefs would be ejected from the kernel as a result of repeated violations of kernel development guidelines. [3] [4] In August 2025, bcachefs status was changed from 'Supported' to 'Externally maintained'. [5]

Contents

Features

Bcachefs is a copy-on-write (COW) file system for Linux-based operating systems. [6] Features include caching, [7] full file-system encryption using the ChaCha20 and Poly1305 algorithms, [8] native compression [7] via LZ4, gzip [9] and Zstandard, [10] snapshots, [7] CRC-32C and 64-bit checksumming. [6] It can span block devices, including in RAID configurations. [8]

Earlier versions of Bcachefs provided all the functionality of Bcache, a block-layer cache system for Linux, with which Bcachefs shares about 80% of its code. [11] As of December 2021, the block-layer cache functionality has been removed. [10]

On a data structure level, bcachefs uses B-trees like many other modern file systems, but with an unusually large node size defaulting to 256 KiB. These nodes are internally log-structured, forming a hybrid data structure, reducing the need for rewriting nodes on update. [12] Snapshots are not implemented by cloning a COW tree, but by adding a version number to filesystem objects. [13] The COW feature and the bucket allocator enables a RAID implementation which is claimed to not suffer from the write hole nor IO fragmentation. [10]

Stability

Bcachefs describes itself as "working and stable, with a small community of users". [14] When discussing Linux 6.9-rc3 on April 7, 2024, Linus Torvalds touched on the stability of bcachefs, saying "if you thought bcachefs was stable already, I have a bridge to sell you", [15] and in August 2024 that "nobody sane uses bcachefs and expects it to be stable". [16]

In August 2024, the Debian maintainer of bcachefs-tools, a package providing "userspace tools and docs", orphaned the package, questioning its long term supportability. [17] The maintainer further commented in a blog post that: "I'd advise that if you consider using bcachefs for any kind of production use in the near future, you first consider how supportable it is long-term, and whether there's really anyone at all that is succeeding in providing stable support for it." [18]

History

Primary development has been by Kent Overstreet, the developer of Bcache, which he describes as a "prototype" for the ideas that became Bcachefs. Overstreet intends Bcachefs to replace Bcache. [11] Overstreet has stated that development of Bcachefs began as Bcache's developers realized that its codebase had "been evolving ... into a full blown, general-purpose POSIX filesystem", and that "there was a really clean and elegant design" within it if they took it in that direction. Some time after Bcache was merged in 2013 into the mainline Linux kernel, Overstreet left his job at Google to work full-time on Bcachefs. [6]

After a few years' unfunded development, Overstreet announced Bcachefs in 2015, at which point he called the code "more or less feature complete", and called for testers and contributors. He intended it to be an advanced file system with modern features [19] like those of ZFS or Btrfs, with the speed and performance of file systems such as ext4 and XFS. [6] As of 2017 Overstreet was receiving financial support for the development of Bcachefs via Patreon. [8]

As of mid-2018, the on-disk format had settled. [11] Patches had been submitted for review to have Bcachefs included in the mainline Linux kernel. [7]

By mid-2019, the desired features of Bcachefs were completed and the associated patches to LKML were submitted for peer review. [20] [21] In October 2023 Bcachefs was merged into the Linux 6.7 kernel, [22] which was released in January 2024. [2]

In November 2024, Kent Overstreet was restricted by Linux's Code of Conduct Committee from sending in contributions during the Linux 6.13 kernel development cycle due to "written abuse of another community member" and taking "insufficient action to restore the community's faith in having otherwise productive technical discussions without the fear of personal attacks". [23] [24] Patches were later accepted without issue during the Linux 6.14 kernel development. [25]

In June 2025, Linus Torvalds announced bcachefs would be removed from the Linux kernel; Linus explained as follows: [3] [4]

[...] I think we'll be parting ways in the 6.17 merge window.

You made it very clear that I can't even question any bug-fixes and I should just pull anything and everything.

Honestly, at that point, I don't really feel comfortable being involved at all, and the only thing we both seemed to really fundamentally agree on in that discussion was "we're done".

In August 2025, after not merging any bcachefs updates for Linux 6.17, Torvalds marked bcachefs as "Externally maintained" in the Linux kernel. [26] In September 2025, Overstreet announced that bcachefs would move to being shipped as a Dynamic Kernel Module Support (DKMS) module. [27]

References

  1. "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org. Archived from the original on 2023-11-08. Retrieved 2023-10-31.
  2. 1 2 Larabel, Michael (2024-01-07). "Linux 6.7 Released With Bcachefs, Intel Meteor Lake In Good Shape & Nouveau GSP Support". phoronix.com. Retrieved 2024-01-07.
  3. 1 2 Torvalds, Linus (2025-06-26). "Re: [GIT PULL] bcachefs fixes for 6.16-rc4". Linux Kernel Archives. Retrieved 2025-06-28.
  4. 1 2 Rudra, Sourav (27 June 2025). "New Linux Kernel Drama: Torvalds Drops Bcachefs Support After Clash". It's FOSS News. Retrieved 28 June 2025.
  5. "MAINTAINERS: mark bcachefs externally maintained". git.kernel.org. Retrieved 2025-09-12.
  6. 1 2 3 4 Larabel 2015.
  7. 1 2 3 4 Larabel 2018.
  8. 1 2 3 Baader 2017.
  9. "Options — bcachefs documentation". Archived from the original on 2023-06-20. Retrieved 2023-06-20.
  10. 1 2 3 Overstreet, Kent (18 Dec 2021). "bcachefs: Principles of Operation" (PDF). Archived (PDF) from the original on 26 August 2023. Retrieved 10 May 2023.
  11. 1 2 3 Edge 2018.
  12. "Architecture". bcachefs.org. Archived from the original on 2023-10-31. Retrieved 2023-05-26.
  13. "Snapshots". bcachefs.org. Archived from the original on 2023-11-06. Retrieved 2023-05-26.
  14. "bcachefs.org". Archived from the original on 2024-04-03.
  15. Torvalds, Linus (2024-04-07). "Linux 6.9-rc3". Linux kernel mailing list (Mailing list). Archived from the original on 2024-04-22. Retrieved 2024-04-22.
  16. "Linux kernel mailing list". Archived from the original on 2024-08-24.
  17. "Debian Orphans Bcachefs-Tools: "Impossible to Maintain in Debian Stable"". Archived from the original on 2024-09-28. Retrieved 2024-08-30.
  18. "Orphaning bcachefs-tools in Debian". August 2024. Archived from the original on 2024-08-31.
  19. Jackson 2015.
  20. LKML 2021.
  21. LKML 2022.
  22. Larabel, Michael. "Bcachefs Merged Into The Linux 6.7 Kernel". Phoronix. Archived from the original on 2023-10-31. Retrieved 2023-10-31.
  23. Williams, Dan (2024-11-22). "Re: [PATCH 1/2 v2] bcachefs: do not use PF_MEMALLOC_NORECLAIM". linux-kernel@vger.kernel.org (Mailing list). Archived from the original on 2024-11-27. Retrieved 2024-12-17. - Scope: Decline all pull requests from Kent Overstreet during the Linux 6.13 kernel development cycle.
  24. Larabel, Michael (2024-11-20). "Bcachefs Changes Rejected Reportedly Due To CoC, Kernel Future 'Uncertain'". Phoronix. Archived from the original on 2025-03-18. Retrieved 2025-03-14.
  25. Larabel, Michael (2025-01-21). "Bcachefs Changes Merged Without Issue For The Linux 6.14 Kernel". Phoronix. Archived from the original on 2025-03-18. Retrieved 2025-03-14.
  26. Larabel, Michael (2025-08-29). "Linus Torvalds Marks Bcachefs As Now "Externally Maintained"". Phoronix. Archived from the original on 2025-08-29. Retrieved 2025-09-13.
  27. Larabel, Michael (2025-09-11). "Bcachefs Outlines Plans For Shipping As A DKMS Out-Of-Tree Kernel Module". Phoronix. Archived from the original on 2025-09-12. Retrieved 2025-09-13.

Works cited