diff --git a/docs/btrfs-other.md b/docs/btrfs-other.md index cfe59d8..1334cea 100644 --- a/docs/btrfs-other.md +++ b/docs/btrfs-other.md @@ -3,40 +3,34 @@ Good Btrfs Feature Interactions bees has been tested in combination with the following: -* btrfs compression (zlib, lzo, zstd), mixtures of compressed and uncompressed extents +* btrfs compression (zlib, lzo, zstd) * PREALLOC extents (unconditionally replaced with holes) * HOLE extents and btrfs no-holes feature -* Other deduplicators, reflink copies (though bees may decide to redo their work) -* btrfs snapshots and non-snapshot subvols (RW and RO) +* Other deduplicators (`duperemove`, `jdupes`) +* Reflink copies (modern coreutils `cp` and `mv`) * Concurrent file modification (e.g. PostgreSQL and sqlite databases, VMs, build daemons) -* All btrfs RAID profiles -* IO errors during dedupe (read errors will throw exceptions, bees will catch them and skip over the affected extent) -* Filesystems mounted with or without the `flushoncommit` option +* All btrfs RAID profiles: single, dup, raid0, raid1, raid10, raid1c3, raid1c4, raid5, raid6 +* IO errors during dedupe (affected extents are skipped) * 4K filesystem data block size / clone alignment * 64-bit and 32-bit LE host CPUs (amd64, x86, arm) * Large files (kernel 5.4 or later strongly recommended) -* Filesystems up to 90T+ bytes, 1000M+ files +* Filesystem data sizes up to 100T+ bytes, 1000M+ files +* `open(O_DIRECT)` (seems to work as well--or as poorly--with bees as with any other btrfs feature) +* btrfs-convert from ext2/3/4 +* btrfs `autodefrag` mount option +* btrfs balance (data balances cause rescan of relocated data) +* btrfs block-group-tree +* btrfs `flushoncommit` and `noflushoncommit` mount options +* btrfs mixed block groups +* btrfs `nodatacow`/`nodatasum` inode attribute or mount option (bees skips all nodatasum files) +* btrfs qgroups and quota support (_not_ squotas) * btrfs receive -* btrfs nodatacow/nodatasum inode attribute or mount option (bees skips all nodatasum files) -* open(O_DIRECT) (seems to work as well--or as poorly--with bees as with any other btrfs feature) -* lvm dm-cache, writecache +* btrfs scrub +* btrfs send (dedupe pauses automatically, kernel 5.4 or later required) +* btrfs snapshot, non-snapshot subvols (RW and RO), snapshot delete -Bad Btrfs Feature Interactions ------------------------------- - -bees has been tested in combination with the following, and various problems are known: - -* btrfs send: there are bugs in `btrfs send` that can be triggered by - bees on old kernels. The [`--workaround-btrfs-send` option](options.md) - works around this issue by preventing bees from modifying read-only - snapshots. - -* btrfs qgroups: very slow, sometimes hangs...and it's even worse when - bees is running. - -* btrfs autodefrag mount option: bees cannot distinguish autodefrag - activity from normal filesystem activity, and may try to undo the - autodefrag if duplicate copies of the defragmented data exist. +**Note:** some btrfs features have minimum kernel versions which are +higher than the minimum kernel version for bees. Untested Btrfs Feature Interactions ----------------------------------- @@ -45,10 +39,6 @@ bees has not been tested with the following, and undesirable interactions may oc * Non-4K filesystem data block size (should work if recompiled) * Non-equal hash (SUM) and filesystem data block (CLONE) sizes (need to fix that eventually) -* btrfs seed filesystems (no particular reason it wouldn't work, but no one has reported trying) -* btrfs out-of-tree kernel patches (e.g. in-kernel dedupe, encryption, extent tree v2) -* btrfs-convert from ext2/3/4 (never tested, might run out of space or ignore significant portions of the filesystem due to sanity checks) -* btrfs mixed block groups (don't know a reason why it would *not* work, but never tested) +* btrfs seed filesystems, raid-stripe-tree, squotas (no particular reason these wouldn't work, but no one has reported trying) +* btrfs out-of-tree kernel patches (e.g. encryption, extent tree v2) * Host CPUs with exotic page sizes, alignment requirements, or endianness (ppc, alpha, sparc, strongarm, s390, mips, m68k...) -* bcache: used to be in the "bad" list, now in the "untested" list because nobody is rigorously testing, and bcache bugs come and go -* flashcache: an out-of-tree cache-HDD-on-SSD block layer helper