v0.18 (January 2009)
v0.18 has the same disk format as 0.17, but a bug was found in the ioctl interface shared between 32 bit and 64 bit programs. This was fixed by changing the ioctl interface. Anyone using 2.6.29-rc2 will need to update to v0.18 of the btrfs progs.
There is no need to reformat though, the disk format is still compatible.
v0.17 (January 2009)
Btrfs is now in 2.6.29-rc1!
v0.17 has a new disk format since v0.16. Future releases will try to maintain backwards compatibility with this new format.
Transparent zlib compression of file data is enabled by mount -o compress.
Improved block allocation routines (Josef Bacik)
Many performance problems in the allocator are addressed in this release
Improved block sharing while moving extents (Yan Zheng)
The btrfs-vol commands to add, remove and balance space across devices triggers a COW of metadata and data blocks. This release is much better at maintaining shared blocks between snapshots when that COW happens.
Seed Device support
It is now possible to create a filesystem to seed other Btrfs filesystems. The original filesystem and devices are included as a readonly starting point to the new FS. All modifications go onto different devices and the COW machinery makes sure the original is unchanged.
Many bug fixes and performance improvements
v0.16 (August 2008)
v0.16 does change the disk format from v0.15, and it includes a long list of performance and stability updates.
Fine grained Btree locking
Locking is now done in a top down fashion while searching the btree, and higher level locks are freed when they are no longer required. Extent allocations still have a coarse grained lock, but that will be improved in the next release.
Ordered data mode loosely means any system that prevents garbage or stale data blocks after a crash. It was previously implemented the same way ext3 does it, which is to force pending data writes down before a transaction commits.
The data=ordered code was changed to only modify metadata in the btree after data extents are fully written on disk. This allows a transaction commit to proceed without waiting for all the data writes on the FS to finish.
A single fsync or synchronous write no longer forces all the dirty data on the FS to disk, as it does in ext3 and reiserfsv3.
Although it is not implemented yet, the new data=ordered code would allow atomic writes of almost any size to a single file to be exported to userland.
ACL support (Josef Bacik)
ACLs are implemented and enabled by default.
Lost file prevention (Josef Bacik)
The VFS and posix APIs force filesystems allow files to be unlinked from a directory before they are deleted from the FS. If the system crashes between the unlink and the deletion, the file is still consuming space on disk, but not listed in any directory.
Btrfs now tracks these files and makes sure they are reclaimed if the system crashes before they are fully deleted.
New directory index format (Josef Bacik)
Btrfs indexes directories in two ways. The first index allows fast name lookups, and the second is optimized to return inodes in something close to disk order for readdir. The second index is an important part of good performance for full filesystem backups.
A per-directory sequence number is now used for the second index, removing some worst case conditions around files that are hard linked into the same directory many times.
Faster unmount times (Yan Zheng)
Btrfs waits for old transactions to be completely removed from the FS before unmount finishes. A new reference count cache was added to make this much less IO intensive, improving FS performance in all workloads.
Improved streaming reads and writes
The new data=ordered code makes streaming writes much faster. Streaming reads are improved by tuning the thread pools used to process data checksums after the read is done. On machines with sufficient CPU power to keep up with the disks, data checksumming is able to run as fast as nodatasum mounts.
v0.15 (June, 2008)
- Metadata back references
- Online growing and shrinking
- Conversion program from Ext3
- data=ordered support
- COW-free data writes.
- focus on stability fixes for the multiple device code
- Support for multiple devices
- raid0, raid1 and raid10, single spindle metadata duplication
v0.13 and older
- Copy on write FS