Btrfs source repositories

From btrfs Wiki
(Difference between revisions)
Jump to: navigation, search
m (Fedora)
m (add gitweb access link for integration progs)
Line 23: Line 23:
== Integration repository ==
== Integration repository ==
David Sterba maintains an "integration" branch of patches for the userspace tools. This is at:
David Sterba maintains an "integration" branch of patches for the userspace tools ([ Gitweb access]). This is at:
  git:// integration-''YYYYMMDD''
  git:// integration-''YYYYMMDD''

Revision as of 15:54, 28 November 2013

Since 2.6.29-rc1, Btrfs has been included in the mainline kernel.

Warning, Btrfs evolves very quickly do not test it unless:

  1. You have good backups and you have tested the restore capability
  2. You have a backup installation that you can switch to when something breaks
  3. You are willing to report any issues you find
  4. You can apply patches and compile the latest btrfs code against your kernel (quite easy with git and dkms, see below)
  5. You acknowledge that btrfs may eat your data
  6. Backups! Backups! Backups!

Everyone tests with the latest btrfs code from git. Even the latest Linus kernel probably doesn't have the latest, so if you're really interested in using and testing btrfs, get btrfs from git. Distributions usually offer a way to install a kernel built from git.


btrfs-progs git repository

Official repository

The userspace utilities can be downloaded from this repository (Gitweb access):

$ git clone git://
$ cd btrfs-progs

Integration repository

David Sterba maintains an "integration" branch of patches for the userspace tools (Gitweb access). This is at:

git:// integration-YYYYMMDD

where YYYMMDD is the date of the branch.

To check out this repository, and select the latest branch, use:

git clone git://
cd devel
git checkout integration-YYYYMMDD

btrfs kernel module git repository

Until October 2012, the latest features and bug fixes hit this repo before going upstream to Linus' kernel tree. Currently it is not up to date. The Linux RCs are more up to date and btrfs-next (see below) is most up to date.

btrfs repository (the command downloads a complete Linux kernel tree, if you have a local instance already, add it as a git remote) (Gitweb access)

git clone git://

Integration repository (btrfs-next)

Josef Bacik maintains an "integration" branch of all the kernel patches seen on the mailing list.

git clone git:// 

gitweb access

This is the code you want to test if you think you've found a bug or want to test the latest features.


In an effort to be a little bit better about reviewing patches sent to the mailinglist I've created a btrfs-next git tree You can get it here


I'm going to be scraping the mailinglist every day for patches that are sent and applying them to this tree in order to get some better testing throughout the development cycle and possibly stop being such a lazy bum about reviewing. If you are looking to get patches into the next merge window and you notice I haven't included them in this tree please let me know so I can pull them in, I did a very casual look through the list to find stuff so I probably missed something. Thanks much,


Patches sent to mailinglist

A convenient interface to get an overview of patches and the related mail discussions can be found at .

It is possible to directly apply a patch by pasting the mbox link from the patch page to the command

$ wget -O - '' | git am -

you may want to add --reject, or decide otherwise what to do with the patch.



Before compiling the userspace tools you'll need to get some dependencies:


yum install libuuid-devel libattr-devel zlib-devel libacl-devel e2fsprogs-devel libblkid-devel lzo2-devel

Note that some Fedora/Red Hat derived distributions use lzo-devel instead of lzo2-devel.


sudo apt-get build-dep btrfs-tools
sudo apt-get install uuid-dev libattr1-dev zlib1g-dev libacl1-dev e2fslibs-dev libblkid-dev liblzo2-dev

If you tried the first and get "cannot find llzo2", try the second; your distro has an even older version of btrfs-progs packaged than expected.

Arch Linux

pacman -S e2fsprogs


zypper in libattr-devel zlib-devel libacl-devel libext2fs-devel libuuid-devel libblkid-devel lzo-devel


Once you have everything in place, you can run


to build the user-space tools. After that they can be used like this:

./btrfsck --repair /dev/<devicename>
Personal tools