||<>|| ##(see the SpecSpec for an explanation) * '''Launchpad Entry''': UbuntuSpec:foundations-lucid-btrfs-support * '''Created''': 2009-11-26 * '''Contributors''': ColinWatson, ScottJamesRemnant, ... * '''Packages affected''': `btrfs-tools`, `grub2`, `parted`, `casper`, `partman-btrfs` (new, lucid+1) == Summary == BTRFS is the latest new and sexy Linux filesystem. Lots of bits of userspace need updates to handle it. We will be adding support for this in two phases. == Release Note == This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the release notes of the first release in which it is implemented. (Not all of these will actually be included in the release notes, at the release manager's discretion; but writing them is a useful exercise.) It is mandatory. == Rationale == We'd like to make it possible for people to at least try BTRFS and still be able to boot their system, although given that Lucid will be an LTS release we are not overly keen on presenting it to users. A future release will support it properly for installation. == Scope == Anything that might break default operation with ext4, or other stable filesystems, is out of the question. If we manage to work fast enough to add installer support for Lucid, it will not be presented by default, as it is not clear that the filesystem is stable enough yet (the [[http://btrfs.wiki.kernel.org/|btrfs wiki]] still says "'''Btrfs is under heavy development, and is not suitable for any uses other than benchmarking and review.''' The Btrfs disk format is not yet finalized, but it will only be changed if a critical bug is found and no workarounds are possible."). btrfs supports smooth upgrades from ext3 and ext4 (and also reverting back!), so that will be the installation path for adventurous users. == Design == The kernel and `blkid` already support btrfs. === Lucid === Move `fsck.btrfs` from `/usr/bin` to `/sbin`; all filesystem utilities that might be needed to mount `/usr` belong here. Update Fedora patch for GRUB Legacy to GRUB 2, and merge. (There is a nascent test suite for GRUB 2 which may be useful, although it has not yet been merged.) Add basic btrfs support to `parted`. This largely just needs probing support. Add btrfs to supported filesystem lists in `casper`. === Lucid+1 (items may be done earlier if safe) === Add a udeb for `btrfs-tools`, containing at least `mkfs.btrfs`, `fsck.btrfs`, and `btrfsctl`. Add a `partman-btrfs` package following the usual patterns for such things. Note that there is an SSD mode for non-rotational disks. Consider multi-disk support in some depth; this needs to be quite a distinct mode in the partitioner, akin to LVM/RAID modes. This will likely need further design work, although it isn't strictly necessary for initial deployment. === Quantal === * Increase automated testing & power user testing: * setup a precise->quantal btrfs based upgrade test in the QA lab * setup quantal btrfs install tests * engage kernel/qa testing on btrfs ongoing testing * publicize btrfs usage * Improve Documentation: * document caveats, benchmarks, missing features, errors * look at grub2 write to boot area * merge latest btrfs tools == Test/Demo Plan == Installing, dist-upgrading, and rebooting exercises rather a lot of the filesystem, and this alone should be a good test that things are working. http://git.kernel.org/?p=fs/xfs/xfstests-dev.git;a=summary may prove to be useful. == Thoughts on future work == Defragmentation: open/rewrite all files (ioctl to do it for you) Potential interesting uses for live CDs * seed devices and -o compress * mirror the live filesystem onto the target disk, resize, done! ---- CategorySpec