Changes to BtrFS between r3 and r4

''Butter Filesystem.  Hold the toast.''

I've started experimenting with ''BtrFS'' which aims to provide an "advanced and modern filesystem" (heavily compared to ZFS) on Linux.  With my new workstation I've started using BtrFS for my home directories (`/home`) and my build directories (`/mnt/slackbuilds`) to gain exposure to the filesystem and compare it to ZFS and EXT4 on LVM (all of my other data, including my root disk is on EXT4 on LVM).

I have used ZFS heavily in the past, and using BtrFS is significantly different as many of the fundamental concepts are different.  BtrFS has no concept of "pools" or "volume groups" -- instead there are "volumes."  BtrFS has no concept of "datasets" or "logical volumes" -- instead there are "subvolumes".

Here's a comparison between ZFS, BtrFS, and EXT4 on LVM:
%|                                  | ZFS                           | BtrFS                            | EXT4 and LVM                                    |% --> %|                                    | ZFS                               | BtrFS                            | EXT4 and LVM                                    |%
&| '''Commands Involved'''          | `zpool`, `zfs`                | `mkfs.btrfs`, `btrfs`            | `pvcreate`, `vgcreate`, `lvcreate`, `mkfs.ext4` |& --> &| '''Commands Involved'''            | `zpool`, `zfs`                    | `mkfs.btrfs`, `btrfs`            | `pvcreate`, `vgcreate`, `lvcreate`, `mkfs.ext4` |&
&| '''Grow Online'''                | Yes                           | Yes                              | Yes                                             |& --> &| '''Grow Online'''                  | Yes                               | Yes                              | Yes                                             |&
&| '''Shrink'''                     | No                            | Online                           | Offline                                         |& --> &| '''Shrink'''                       | No                                | Online                           | Offline                                         |&
&| '''Re-balance'''                 | No                            | Yes                              | Can be done manually (`pvmove`)                 |& --> &| '''Re-balance'''                   | No                                | Yes                              | Can be done manually (`pvmove`)                 |&
&| '''Stability'''                  | Stable                        | Unstable (On-disk format Stable) | Stable                                          |& --> &| '''Stability'''                    | Stable                            | Unstable (On-disk format Stable) | Stable                                          |&
&| '''Can be Root filesystem'''     | Yes                           | Yes                              | Yes                                             |& --> &| '''Can be Root filesystem'''       | Yes                               | Yes                              | Yes                                             |&
&| '''Can provide swapspace'''      | Yes (zvols)                   | No                               | Yes (lvm)                                       |& --> &| '''Can provide swapspace'''        | Yes (zvols)                       | No                               | Yes (lvm)                                       |&
&| '''Pool of disks'''              | "zpool"                       | "volume"                         | "volume group"                                  |& --> &| '''Pool of disks'''                | "zpool"                           | "volume"                         | "volume group"                                  |&
&| '''Mountable unit'''             | "dataset"                     | "volume" and "subvolume"         | "logical volume"                                |& --> &| '''Mountable unit'''               | "dataset"                         | "volume" and "subvolume"         | "logical volume"                                |&
&| '''Checksumming'''               | Yes                           | Yes                              | No                                              |& --> &| '''Checksumming'''                 | Yes                               | Yes                              | No                                              |&
&| '''Correctable Checksum Errors'''| Yes                           | ???                              | No                                              |& --> &| '''Correctable Checksum Errors'''  | Yes                               | ???                              | No                                              |&
&| '''Compression'''                | Yes                           | Yes                              | No                                              |& --> &| '''Compression'''                  | Yes                               | Yes                              | No                                              |&
&| '''De-duplication'''             | Yes                           | No                               | No                                              |& --> &| '''De-duplication'''               | Yes                               | No                               | No                                              |&
&| '''Ditto Blocks'''               | Yes                           | ???                              | No                                              |& --> &| '''Ditto Blocks'''                 | Yes                               | ???                              | No                                              |&
&| '''Tiered Caching'''             | Yes                           | No                               | No                                              |& --> &| '''Tiered Caching'''               | Yes                               | No                               | No                                              |&
&| '''Writable Snapshots'''         | Yes (clone)                   | Yes                              | Yes                                             |& --> &| '''Writable Snapshots'''           | Yes (clone)                       | Yes                              | Yes                                             |&
&| '''Copy-on-Write'''              | Fast, space-efficient         | Fast, space-efficient            | Slow, requires pre-allocation an LV             |& --> &| '''Copy-on-Write'''                | Fast, space-efficient             | Fast, space-efficient            | Slow, requires pre-allocation an LV             |&
&| '''Redundancy'''                 | Mirroring and Parity (x1, x2) | Mirroring                        | Mirroring, though you can software raid the PVs |&
&| '''Redundancy'''                   | Mirroring and Parity (x1, x2, x3) | Mirroring                        | Mirroring, though you can software raid the PVs |&
&| '''CLI-System Integration [[1]]''' | Strong                            | Weak                             | Mild                                            |&
(blank line)
(blank line)
[[1]] For lack of a better term -- how well the command line interface integrates with the system as a whole, this might be subjective.

Legend

     Only in r3
     Only in r4
     -->      Modified slightly between r3 and r4