Btrfs Timeline

The early development push in Btrfs is to finalize the disk format to ensure it will perform well, allow future extensions and support all of the desired features. This document will be updated as things are completed and as plans change.

Current Status: Copy on write FS with checksumming, transactions, snapshotting and subvolumes. This is the core of the FS and it includes most of the functionality required for daily use. Currently IO errors and disk full conditions are not handled properly, and locking is implemented via a single FS-wide mutex.

With v0.10 (Jan 14, 2008), back references are implemented, along with an online growing and shrinking, a conversion program from Ext3, data=ordered support, and support for COW-free data writes.

Feb 15, 2008: Storage Pools allowing the FS to span multiple devices. Extent pointers will be expanded to include an extra 32 bit device id, and there will be at least one extent tree per device id. Each device in the FS will contain a copy of the table mapping device ids to extent trees and underlying storage.

March 31, 2008: Metadata striping and mirroring across devices. Each Btree will have an associated group of extent trees that it allocates blocks from. Policies will be defined to allow duplicated metadata both within an extent tree (for safety even in single spindle filesystems) and across trees.

April 30, 2008: Data extent striping and mirroring. Define allocation policies allowing file extents to be spread out across multiple devices.

May 31, 2008: Snapshot and subvolume directory trees, and per-directory snapshots. A flat directory is currently used to reference all snapshots, but a directory tree is required for easy administration. Per-directory snapshots will allow the creation of a snapshot of an arbitrary subtree inside the FS.

June 30, 2008: Offline fsck. Fsck will be continually updated and improved as the disk format changes, but by this time the offline fsck should be sufficient to find and fix most corruptions.

July 31, 2008: Data=ordered mode support, preventing null bytes in a file after a crash.

August 31 2008: Improved inode allocation algorithms, including the reservation of portions of the key space for inodes inside a given directory.

October 15 2008: Fine grained btree locking for concurrency.

October 31 2008: Ioctl interface for fast incremental backups and remote synchronization.

Jan 16 2009: Online fsck.