Changes (btrfs-progs)

Signed release tarballs can be found at https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/

btrfs-progs-6.8 (2024-03-26)

  • fix --enqueue option timeout handling

  • subvolume: remove support for undocumented options -c and -x, functionality disabled in kernel

  • libbtrfsutil:
    • version 0.1.3, backward compabile

    • add aliases for all existing functions with unified naming scheme

    • updated header defintions for recently added kernel features

  • send: v3 supported in experimental mode

  • other:
    • docs: manual page references, graphs, enhancements, clarifications

    • error handling fixes

    • cleanups and refactoring

btrfs-progs-6.7 (2024-01-22)

  • mkfs: make 4k sectorsize default, recommended minimum kernel for that is 6.1 and requires subpage support on architectures with page size > 4k

  • subvolume create: return correct error code when a target already exists

  • tree-checker: dump tree block on error (btrfs-convert, …)

  • scrub limit: fix reporting of a limit set while there’s none

  • fi usage: fix reporting of unallocated data or raid56 profile without root privs due to lack of that information

  • convert:
    • align data block group lengths to 64K

    • fix conversion of a large filesystem when there are partial inode items present due to caching

  • other:
    • build fixes

    • updated documentation

    • new and updated tests

btrfs-progs-6.7.1 (2024-02-14)

  • convert: raid-stripe-tree can be now enabled for the target filesystem

  • mkfs:
    • handle lifetime of open file descriptors so it does not trigger udev that could miss to create the UUID symlinks in /dev

    • update warning when CPU page size does not match sector size

    • merge features in summary, no more distinction of incompat and runtime to match the semantics of option -O

  • fi show: fix recognizing raw device mapper paths

  • other:
    • CI updates, build images updates

    • minor cleanups

    • minor sync with kernel

    • documentation updates, fix links to labels in included directories

btrfs-progs-6.6 (2023-11-03)

  • new global option --dry-run, now implemented for ‘subvolume delete’

  • fi defrag: new option --step to defragment files in steps, report progress

  • balance: removed support for obsolete short syntax ‘btrfs balance /path’

  • mkfs: print zone count for each device in the overview

  • check:
    • verify inline ref ordering

    • deprecate --clear-space-cache, moved to the ‘rescue’ group

  • rescue clear-space-cache: new command moved from ‘btrfs check’ implementing the same as option --clear-space-cache (to be deprecated and removed in the future)

  • dump-tree: output sequence number for inline refs

  • fixes: * fi resize: fallback to lowest devid when 1 does not exist, previously the

    command would fail with “No such device”

    • fi usage: fix “devices 0 != 1” message and broken output on multi-device filesystem

    • open files in non-blocking mode when reading fsid, this could hang when trying to open fifo files or some special character devices, was observed with ‘prop set/get’

  • experimental:
    • mkfs: parametric zone size for emulated zoned mode

  • other:
    • cleanups refactoring

    • new and updated tests

    • CI updates

    • documentation updates

btrfs-progs-6.6.1 (2023-11-05)

  • fix device scanning ioctl definition, accidental change to the ‘forget’ ioctl that breaks mounting multi-device filesystems

btrfs-progs-6.6.2 (2023-11-15)

  • squota: change key number of EXTENT_OWNER_REF_KEY, sync with kernel 6.7-rc1

  • property set/get: completely skip char devices, trying to set properties and open /dev/watchdog* causes a reboot

  • other: build warnings, test updates, documentation updates

btrfs-progs-6.6.3 (2023-12-14)

  • subvol create: accept multiple arguments

  • subvol delete: print the subvolume id in the output

  • subvol sync: check if the filesystems is still writeable so it does not wait indefinitely

  • device delete: add a timeout and warning when deleting multiple devices

  • scrub status: report limit if set in sysfs/../scrub_speed_max

  • scrub limit: new command to show or set the per-device scrub limits

  • scrub start: report the limit if set

  • build:
    • fix CPU feature detection on aarch64

    • support Botan and OpenSSL (3.2+) as crypto backends

  • other:
    • documentation updates, RTD config update

    • new and updated tests

    • CI updates

btrfs-progs-6.5 (2023-09-01)

  • crc32c implementation speedup (3x)

  • btrfstune:
    • be more strict about option combinations and refuse changing features from incompatible groups

    • metadata_uuid changes fixes

  • libbtrfs: fix ABI breakage introduced in 6.3.1, revert struct subvol_info and subvol_uuid_search changes

  • CI updates
    • pull request build tests enabled

    • published static binaries built with backward compatibility (-march=x86-64)

  • other
    • documentation updates

    • new and updated tests

    • experimental feature updates (json, list-chunks, checksum switch)

    • code refactoring

    • remove btrfs-fragments

btrfs-progs-6.5.1 (2023-09-13)

  • build fixes:
    • crc32c if PIE or relro is enabled

    • detect if PCLMUL feature is recognized by compiler and also detect that at runtime

  • check: verify metadata item level when skinny-metadata is enabled

  • other: minor build and docs updates

btrfs-progs-6.5.2 (2023-10-03)

  • new feature support:
    • raid-stripe-tree, new tree to track extent mapping for raid profiles, allows raid1*, raid0 and raid10 on zoned devices (kernel 6.7)

    • simple quotas, simplified accounting that does not track exclusive and shared extents (kernel 6.7)

    • mkfs with duplicate UUID on a single device, temp-fsid (kernel 6.7)

  • metadata_uuid: enhanced capabilities to repair partially updated fsid on multiple devices

  • other:
    • updated tests and CI

    • sync sources with kernel

btrfs-progs-6.5.3 (2023-10-21)

  • mkfs:
    • add short aliases for -O specification, block-group-tree (bgt), free-space-tree (fst), raid-stripe-tree (rst)

    • don’t try to resize the image (namely when backed by file) when --rootdir contains sparse file larger than the image

    • also copy xattr/permissions/ugid/timestamps of the top --rootdir directory

    • add new option --device-uuid to let user specify exact uuid of the device item (only for single device filesystems)

  • check:
    • on zoned devices, use correct super block offsets when repairing

    • check inline extent refs order

  • subvolume create: add new option --parent to create missing path components of the given path (like mkdir -p)

  • rescue clear-ino-cache: new command moved from ‘btrfs check’ implementing the same as option --clear-ino-cache (to be deprecated and removed in the future)

  • dump-tree: allow ‘-’ in tree identifier names for option -t

  • btrfstune:
    • drop short option and add long option to enable squota

    • tune space reservation and batch size for block-group-tree conversion

  • scrub status: print correct value of “Bytes scrubbed” for unfinished runs

  • qgroup show: fix crash when attempting to print path of stale qgroups

  • experimental features:
    • move build of raid-stripe-tree out for testing but it’s still considered experimental

  • other:
    • shell completion updates

    • sync raid-stripe-tree code with kernel

    • build fixes

    • new and updated tests

btrfs-progs-6.4 (skipped)

btrfs-progs-6.3 (2023-04-27)

  • mkfs: option -R deprecated, options unified in -O (-R still works)

  • mkfs: fix potential race with udev leading to EBUSY due to repeatedly opened file descriptors

  • block-group-tree is out of experimental mode
    • available as ‘mkfs.btrfs -O block-group-tree’

    • btrfstune can do in-place conversion to/from (use with care)

  • balance: fix recognizing old and new syntax

  • subvol snapshot: specific error if a failure is caused by an active swapfile

  • tree-stats: rephrase warning when run on a mounted filesystem

  • completion: ‘filesystem du’ also completes files

  • check: fix docs, help text and warning that --force + --repair works on a mounted filesystem

  • build: fix static build when static libudev is available

  • documentation:
    • more updates from wiki, developer docs, changelogs

    • reformatting

    • updates and fixes

  • other:
    • test updates and fixes

    • CI cleanups and old files removed

    • integration with Github actions

btrfs-progs-6.3.1 (2023-05-29)

  • convert: fix checksum of a block relocated from 0-1M range

  • qgroup show: fix formatting of limit values in json output

  • receive: report paret subovl UUID on errors

  • btrfsune: new option --convert-to-free-space-tree to convert from block-group-tree back to extent tree for block group tracking

  • mkfs: make option --rootdir more verbose and report start when filling from the given directory starts

  • experimental:
    • btrfstune: checksum switch logic reimplemented, conversion of all metadata and data now works, resume from various states also supported

  • other:
    • more CI github actions test coverage

    • more kernel/userspace source code sync

    • warning fixes

    • code cleanups

    • documentation updates

btrfs-progs-6.3.2 (2023-06-15)

  • fix mkfs and others on big endian hosts

  • mkfs: don’t print changed defaults notice with --quiet

  • scrub: fix wrong stats of processed bytes in background and foreground mode

  • convert: actually create free-space-tree instead of v1 space cache

  • print-tree: recognize and print CHANGING_FSID_V2 flag (for the metadata_uuid change in progress)

  • other: documentation updates

btrfs-progs-6.3.3 (2023-07-27)

  • add btrfs-find-root to btrfs.box

  • replace: properly enqueue if there’s another replace running

  • other:
    • CI updates, more tests enabled, code coverage, badges

    • documentation updates

    • build warning fixes

btrfs-progs-6.2 (2023-02-28)

  • receive: fix a corruption when decompressing zstd extents

  • subvol sync: print total number and deletion progress

  • accelerated hash algorithm implementations in fallback mode on x86_64

  • fi mkswapfile: new option --uuid

  • new global option --log=level to set the verbosity level directly

  • other:
    • experimental: update checksum conversion (not usable yet)

    • build actually requires -std=gnu11

    • refactor help option formatting, auto wrap long lines

btrfs-progs-6.2.1 (2023-02-03)

  • fix build with crypto libraries

  • CI images updated, build tests extended

btrfs-progs-6.2.2 (2023-03-25)

  • fix build on old x86 architectures with builtin crypto

  • device stats: fix printing wrong values in tabular output

  • qgroup show: fix qgroup id formatting in json output

  • restore: fix restoring xattrs on directories

  • restore: don’t modify metadata in dry-run mode

  • balance: fix some cases wrongly parsed as old syntax

  • balance: warn when deprecated syntax is used

  • seeding: fall back to old way if sysfs device fsid is not available

  • convert: handle orphan file ext4 feature

  • other:
    • sync ioctl definitions

    • enable github CI

    • update documentation

btrfs-progs-6.1 (2022-12-22)

  • NOTE: this version breaks build of applications using ctree.h and qgroup items

  • filesystem df: add json output

  • qgroup show: add json output

  • new command: ‘inspect-internal map-swapfile’ to check swapfile and its swapfile_offset value used for hibernation

  • corrupt-block: fix parsing of option --root argument

  • experimental (interfaces not finalized):
    • new command ‘inspect-internal list-chunks’

    • new group reflink, command clone

  • other:
    • synchronize some files with kernel versions

    • docs updates

    • build: use gnu11

btrfs-progs-6.1.1 (2023-01-03)

  • subvol list: fix printing of UUID

  • revert changes to ctree.h regarding qgroup items, breaks build of several applications

  • hide __init definition in kerncompat.h, may break build

btrfs-progs-6.1.2 (2023-01-05)

  • revert libbtrfs changes to v6.0.2, fix remaining build problems

btrfs-progs-6.1.3 (2023-01-25)

  • fi mkswapfile: fix setting size

  • mkfs: check zoned support of libblkid

  • check: improve error messages for mismatched references

  • other:
    • pass CFLAGS to static build

    • documentation updates

btrfs-progs-6.0 (2022-10-11)

  • fi usage: in tabular output, print total size and slack size

  • mkfs:
    • option -O now accepts values from -R to unify the interface (-R will continue to work)

    • zone reset and discard is done in parallel on all devices

    • removed option --leafsize, deprecated long time ago

  • corrupt-block: recalculate checksum when changing generation

  • fixes:
    • convert: fix reserved range detection and overlaps

    • mkfs: fix creating files with reserved inode numbers with --rootdir

    • receive: escape filenames in command attributes

    • fix extent buffer leaks after transaction abort

  • experimental:
    • mkfs: support for block-group-tree (kernel 6.1)

    • fsverity in send (protocol v3, WIP)

    • btrfstune -b converts to block-group-tree

  • other:
    • cleanups, refactoring

    • new and updated tests

    • update documentation

btrfs-progs-6.0.1 (2022-11-04)

  • send: minor speed up for v2 due to increased buffer size

  • resize: invalid command line options fail with error code

  • quota rescan:
    • add long options --status and --wait

    • new option to wait but don’t start rescan

  • qgroup show: print path by default, updated format

  • qgroup: new subcommand clear-stale, remove qgroups without their subvolumes

  • experimental:
    • add warnings to commands that have it enabled (mkfs, image, btrfstune)

  • other:
    • documentation, help text, error message updates

btrfs-progs-6.0.2 (2022-11-24)

  • fixes:
    • resize cancel did not work in some cases

    • fix fileattr stream command format and add workaround when it cannot be applied

    • properly handle degraded raid56 reads

    • fi defrag: fix verbosity, don’t print file names by default

    • receive: fix silent data loss after fall back from encoded write

  • fi mkswapfile: new command to create a formatted swapfile in one go

btrfs-progs-5.19 (2022-08-16)

  • send: support protocol version 2

  • fi show: print all missing devices

  • device stats: add tabular output

  • replace: add alias to device group (device replace)

  • check: validate free space tree items

  • fixes:
    • convert: support large filesystems (block count > 32bit)

    • recognize filesystems with verity enabled

    • mkfs and DUP could write out of order, fix it for zoned mode

  • build:
    • optional support for LZO and ZSTD in receive

    • compatibility with glibc 2.36 (mount.h)

    • add fallbacks for new GCC builtins

  • other:
    • corrupt-block: target specific items, offsets

    • documentation updates, new pages from wiki

    • new tests

btrfs-progs-5.19.1 (2022-09-12)

  • fix memory leaks (extent buffer, path)

  • check: verify block device size vs item

  • rescue fix-device-size: allow to shrink device item

  • receive: fix crash on wrong pinter free()

  • other:
    • experimental: support for block-group-tree

    • documentation updates

    • new tests

btrfs-progs-5.18 (2022-05-25)

  • fixes:
    • dump-tree: don’t print traling zeros in checksums

    • recognize paused balance as exclusive operation state, allow to start device add

    • convert: properly initialize target filesystem label

    • mkfs: don’t create free space bitmaps for empty filesystem

  • restore: make lzo support build-time configurable, print supported compression in help text

  • update kernel-lib sources

  • other:
    • documentation updates, finish conversion to RST, CHANGES and INSTALL could be included into RST

    • fix build detection of experimental mode

    • new tests

btrfs-progs-5.18.1 (2022-06-06)

  • fixes:
    • convert: fix self reference of toplevel directory

    • build: make kernel lib headers compatible with C++

  • zoned mode: verify minimum zone size 4MiB

  • libbtrfs: cleanups, merge headers and remove declarations of unexported symbols

  • other: documentation updates

btrfs-progs-5.17 (2022-04-26)

  • check:
    • repair wrong num_devices in superblock

    • recognize overly long xattr names

    • fix wrong total bytes check for seed device

  • auto-repair on read on RAID56

  • property set: unify handling of empty value to mean default, changed meaning for property ‘compression’ to allow reset to default and to set NOCOMPRESS, since kernel 5.14

  • fixes:
    • dump-tree: print fs-verity items

    • fix location of system chunk on zoned filesystem

    • do not allow setting seeding flag on a filesystem with dirty log

    • mkfs and subpage support: use sectorsize as nodesize fallback for mixed profiles

  • preparatory work for extent tree v2, global roots

  • experimental feature (unstable interface, not built by default,

    do not use for production) * btrfstune: option --csum to switch checksum algorithm

  • other:
    • cleanups, refactoring

    • update documentation build, remove asciidocs leftovers

    • update fssum to consider xattrs

    • add fsstress

btrfs-progs-5.16 (2022-01-12)

  • rescue: new subcommand clear-uuid-tree to fix failed mount due to bad uuid subvolume keys, caught by tree-checker

  • fi du: skip inaccessible files

  • prop: properly resolve to symlink targets

  • send, receive: fix crash after parent subvolume lookup errors

  • build:
    • fix build on 5.12+ kernels due to changes in linux/kernel.h

    • fix build on musl with old kernel headers

  • other:
    • error handling fixes, cleanups, refactoring

    • extent tree v2 preparatory work

    • lots of RST documentation updates (last release with asciidoc sources), https://btrfs.readthedocs.io

btrfs-progs-5.16.1 (2022-02-04)

  • mkfs: support DUP on metadata on zoned devices

  • subvol delete: drop warning for root when search ioctl fails

  • check:
    • fix --init-csum-tree to not create checksums for extents that are not supposed to have them

    • add check for metadata item levels

  • add udev rule for zoned devices as they require mq-deadline

  • build: fix redefinition of ALIGN on mixed old/new kernel/userspace (5.11)

  • other:
    • typo fixes

    • new tests

    • CI targets updated

btrfs-progs-5.16.2 (2022-02-16)

  • mkfs: fix detection of profile type for zoned mode when creating DUP

  • build:
    • add missing stub for zoned mode helper when zoned mode not enabled

    • fix 64bit types on MIPS and PowerPC

    • improved zoned mode support autodetection, for systems with existing blkzone.h header but missing support for zone capacity

  • other:
    • doc updates

    • test updates

btrfs-progs-5.15 (2021-11-05)

  • mkfs: new defaults!
    • no-holes

    • free-space-tree

    • DUP for metadata unconditionally

  • libbtrfsutil
    • add missing profile defines

  • libbtrfs
    • minimize its impact on the other code, refactor and separate implementation where needed, cleanup afterwards, reduced header exports

  • documentation
    • introduce sphinx build and RST versions of manual pages, will become the new format and replace asciidoc

  • fixes:
    • fix warning regarding v1 space cache when only v2 (free space tree) is enabled

  • other
    • lots of cleanups and refactoring

    • zoned mode uses direct io for file backed images

    • new and updated tests

btrfs-progs-5.15.1 (2021-11-22)

  • fixes:
    • fi usage: fix wrongly reported space of used or unallocated space

    • fix detection of block device discard capability

  • check: add more sanity checks for checksum items

  • build: make sphinx optional backend for documentation

btrfs-progs-5.14 (2021-09-10)

  • convert:
    • new option --uuid to copy, generate or set a given uuid

    • improve output

  • mkfs:
    • allow to create degenerate raid0 (on 1 device) and raid10 (on 2 devices)

  • image:
    • improved error messages

    • fix some alignment of restored image

  • subvol delete: allow to delete by id when path is not resolvable

  • check:
    • require alignment of nodesize for 64k page systems

    • detect and fix invalid block groups

  • libbtrfs (deprecated):
    • remove most exported symbols, leave only a few that are used by snapper

    • no version change (still 0.1)

    • remove btrfs-list.h, btrfsck.h

  • fixes:
    • reset generation of space v1 if v2 is used

    • fi us: don’t wrongly report missing device size when partition is not readable

  • other:
    • build: experimental features

    • build: better detection of 64bit timestamp support for ext4

    • corrupt-block: block group items

    • new and updated tests

    • refactoring

  • experimental features:
    • new image dump format, with data

btrfs-progs-5.14.1 (2021-09-20)

  • fixes:
    • defrag: fix parsing of compression (option -c)

    • add workaround for old kernels when reading zone sizes

    • let only check and restore open the fs with transid failures, namely preventing btrfstune to do so

    • convert: --uuid copy does not fail on duplicate uuids

btrfs-progs-5.14.2 (2021-10-08)

  • fixes
    • zoned mode
      • properly detect non-zoned devices in emulation mode

      • properly create quota tree

      • raid1c3/4 also excluded from unsupported profiles

    • use sysfs-based detection of device discard capability, fix mkfs-time trim for non-standard devices

    • mkfs: fix creation of populated filesystem with free space tree

    • detect multipath devices (needs libudev)

  • replace start: add option -K/--nodiscard, similar to what mkfs or device add has

  • dump-tree: print complete root_item

  • mkfs: add option --verbose

  • sb-mod: better help, no checksum calculation on read-only actions

  • subvol show:
    • print more information (regarding send and receive)

    • print warning if read-write subvolume has received_uuid set

  • property set:
    • add parameter -f to force changes

    • changing ro->rw switch now needs -f if subvolume has received_uuid set, (see documentation)

  • build
    • optional libudev (on by default)

  • other
    • remove deprecated support for CREATE_ASYNC bit for subvolume ioctl

    • CI updates

    • new and updated tests

btrfs-progs-5.13 (2021-07-13)

  • restore: remove loop checks for extent count and directory scan

  • inspect dump-tree: new options to print node (--csum-headers) and data checksums (--csum-items)

  • fi usage:
    • print stripe count for striped profiles

    • print zoned information: size, total unusable

  • mkfs: print note about sha256 accelerated module loading issue

  • check: ability to reset dev_item::bytes_used

  • fixes
    • detect zoned kernel support at run time too

    • exclusive op running check return value

  • fi resize: support cancel (kernel 5.14)

  • device remove: support cancel (kernel 5.14)

  • documentation about general topics
    • compression

    • zoned mode

    • storage model

    • hardware considerations

  • other
    • libbtrfsutil API overview

    • help text fixes and updates

    • hash speedtest measure time, cycles using perf and print throughput

btrfs-progs-5.13.1 (2021-07-30)

  • build: fix build on musl libc due to missing definition of NAME_MAX

  • check:
    • batch more work into one transaction when clearing v1 free space inodes

    • detect directories with wrong number of links

  • libbtrfsutil: fix race between subvolume iterator and deletion

  • mkfs: be more specific about supported profiles for zoned device

  • other:
    • documentation updates

btrfs-progs-5.12 (2021-05-10)

  • libbtrfsutil: relicensed to LGPL v2.1+

  • mkfs: zoned mode support (kernel 5.12+)

  • fi df: show zone_unusable per profile type in zoned mode

  • fi usage: show total amount of zone_unusable

  • fi resize: fix message for exact size

  • image: fix warning and enlarge output file if necessary

  • core
    • refactor chunk allocator for more modes

    • implement zoned mode support: allocation and writes, sb log

    • crypto/hash refactoring and cleanups

    • refactoring and cleanups

  • other
    • test updates

    • CI updates

    • travis-ci integration disabled

    • docker images updated, more coverage

    • incomplete build support for Android removed

  • doc updates
    • chattr mode m for ‘NOCOMPRESS”

    • swapfile used from fstab

    • how to add a new export to libbtrfsutil

    • update status of mount options since 5.9

btrfs-progs-5.12.1 (2021-05-13)

  • build: fix missing symbols in libbtrfs

  • mkfs: check for minimal number of zones

  • check: fix warning about cache generation when free space tree is enabled

  • fix superblock write in zoned mode on 16K pages

btrfs-progs-5.11 (2021-03-05)

  • fix device path canonicalization for device mapper devices

  • receive: remove workaround for setting capabilities, all stable kernels have been patched

  • receive: fix duplicate mount path detection

  • rescue: new subcommand create-control-device

  • device stats: minor fix for plain text format output

  • build: detect if e2fsprogs support 64bit timestamps

  • build: drop libmount, required functionality has been reimplemented

  • mkfs: warn when raid56 is used

  • balance convert: warn when raid56 is used

  • other
    • new and updated tests

    • documentation updates
      • seeding device

      • raid56 status

    • CI updates
      • docker images for various distros

btrfs-progs-5.11.1 (2021-03-24)

  • properly format checksums when a mismatch is reported

  • check: fix false alert on tree block crossing 64K page boundary

  • convert:
    • refuse to convert filesystem with ‘needs_recovery’

    • update documentation to require fsck before conversion

  • balance convert: fix raid56 warning when converting other profiles

  • fi resize: improved summary

  • other
    • build: fix checks and autoconf defines

    • fix symlink paths for CI support scripts

    • updated tests

btrfs-progs-5.10 (2021-01-18)

  • scrub status:
    • print percentage of progress

    • add size unit options

  • fi usage: also print free space from statfs

  • convert: copy full 64 bit timestamp from ext4 if available

  • check:
    • add ability to repair extent item generation

    • new option to remove leftovers from inode number cache (-o inode_cache)

  • check for already running exclusive operation (balance, device add/…) when starting one

  • preliminary json output support for ‘device stats’

  • fixes:
    • subvolume set-default: id 0 correctly falls back to toplevel

    • receive: align internal buffer to allow fast CRC calculation

    • logical-resolve: distinguish -o subvol and bind mounts

  • build: new dependency libmount

  • other
    • doc fixes and updates

    • new tests

    • ci on gitlab temporarily disabled

    • debugging output enhancements

btrfs-progs-5.10.1 (2021-02-05)

  • static build works again

  • other:
    • add a way to test static binaries with the testsuite

    • clarify scrub docs

    • update dependencies, minimum version for libmount is 2.24, this may change in the future

btrfs-progs-5.9 (2020-10-23)

  • mkfs:
    • switch default to single profile for multi-device filesystem, up to now it was raid0 that may not be simple to convert to some other profile as raid0 needs a workspace on all device for that

    • new option -R for run-time options (eg. mount time enabled), now understands free-space-tree

  • subvolume delete:
    • refuse to delete the default subvolume (kernel will not allow that but the error reason is not obvious)

    • warn on EPERM, eg. if send is on progress on the subvolume

  • convert:
    • fix 32bit overflows on large filesystems

    • improved error handling and error messages

    • check free space taking fragmentation into account

  • check:
    • detect and repair wrong inode generation

    • minor improvement in error reporting on roots

  • libbtrfsutils: follow main package versioning (5.9)
    • add pkg-config file definitions

  • python-btrfsutil: follow main package versioning (5.9)

  • inspect tree-stats: print node counts for each level, fanout

  • other:
    • docs:
      • remove obsolete mount options (alloc_start, subvolrootid)

      • deleting default subvolume is not permitted

    • updated or fixed tests

    • .editorconfig updates

    • move files to kernel-shared/

    • CI:
      • updated to use zstd 1.4.5

      • fix reiserfs build

      • more builds with asan, ubsan

    • sb-mod updates

    • build:
      • print .so versions of libraries in configure summary

btrfs-progs-5.8 (skipped)

btrfs-progs-5.7 (2020-07-02)

  • mkfs:
    • new option to enable features otherwise enabled at runtime, now implemented for quotas, ‘mkfs.btrfs -R quota’

    • fix space accounting for small image, DUP and --rootdir

    • option -A removed

  • check: detect ranges with overlapping csum items

  • fi usage: report correct numbers when plain RAID56 profiles are used

  • convert: ensure the data chunks size never exceed device size

  • libbtrfsutil: update documentation regarding subvolume deletion

  • build: support libkcapi as implementation backend for cryptographic primitives

  • core: global options for verbosity (-v, -q), subcommands -v or -q are aliases and will continue to work but are considered deprecated, current command output is preserved to keep scripts working

  • other:
    • block group code cleanups

    • build warning fixes

    • more files moved to kernel-shared

    • btrfs-debugfs ported to python 3

    • documentation updates

    • new tests

btrfs-progs-5.6 (2020-04-05)

  • inspect logical-resolve: support LOGICAL_INO_V2 as new option ‘-o’, helps advanced dedupe tools

  • inspect: user larger buffer (64K) for results

  • subvol delete: support deletion by id (requires kernel 5.7+)

  • libbtrfsutil:
    • support subvolume deletion by id

    • bump version to 1.2

    • library symbols are now versioned

  • dump-tree: new option --hide-names, replace any names (file, directory, subvolume, xattr) in the output with stubs

  • convert: warn if the filesystem is not mountable on the machine

  • fixes:
    • restore: proper mirror iteration on decompression error

    • restore: make symlink messages less noisy

    • check: handle holes at the beginning or end of file

    • fix xxhash output on big endian machines

    • receive: fix lookup of subvolume by uuid in case it was already received before

  • other:
    • new and updated tests

    • add missing binaries in exported testsuite

    • docs updates

    • remove obsolete files

    • move files to more appropriate directories

    • fixes reported by valgrind

    • many typos fixed

btrfs-progs-5.6.1 (2020-05-07)

  • print warning when multiple block group profiles exist, update ‘fi usage’ summary, add docs to maual page explaining the situation

  • build: optional support for libgcrypt or libsodium, providing hash implementations

  • other:
    • fixed, updated and new tests

    • cleanups

    • updated docs

btrfs-progs-5.5 (skipped)

btrfs-progs-5.4 (2019-12-03)

  • support new hash algorithms (kernel 5.5):
    • mkfs.btrfs and btrfs-convert with --csum, crc32c, xxhash, sha256, blake2

  • mkfs: support new raid1c3 and raid1c4 block group profiles (kernel 5.5)

  • check:
    • --repair delays start with a warning, can be skipped using --force

    • enhanced detection of inode types from partial data, more options for repair

  • receive: fix quiet option

  • image: speed up chunk loading

  • fi usage:
    • sort devices by id

    • print ratio of used/total per block group type

  • rescue zero-log: reset the log pointers directly, avoid reading some other potentially damaged structures

  • new make target install-static to install only static binaries/libraries

  • other
    • docs updates

    • new tests

    • cleanups and refactoring

btrfs-progs-5.4.1 (2020-01-09)

  • build: fix docbook5 build

  • check: do extra verification of extent items, inode items and chunks

  • qgroup: return ENOTCONN if quotas not running (needs updated kernel)

  • other: various test fixups

btrfs-progs-5.3 (2019-10-21)

  • mkfs:
    • new option to specify checksum algorithm (only crc32c)

    • fix xattr enumeration

  • dump-tree: BFS (breadth-first) traversal now default

  • libbtrfsutil: remove stale BTRFS_DEV_REPLACE_ITEM_STATE_x defines

  • ci: add support for gitlab

  • other:
    • preparatory work for more checksum algorithms

    • docs update

    • switch to docbook5 backend for asciidoc

    • fix build on uClibc due to missing backtrace()

    • lots of printf format fixups

btrfs-progs-5.3.1 (2019-10-25)

  • libbtrfs: fix link breakage due to missing symbols

btrfs-progs-5.2 (2019-07-05)

  • subvol show: print qgroup information when available

  • scrub:
    • status: show ETA, revamp the whole output

    • fix reading/writing of last position on resume/cancel, potentially skipping part of the filesystem on next resume

  • dump-tree: add new option --noscan to use only devices given on the commandline

  • all-in-one binary (busybox style) with mkfs.btrfs, btrfs-image, btrfs-convert, btrfstune

  • image: fix hang when there are more than 32 cpus online and compression is requested

  • convert: fix some false ENOSPC errors when --rootdir is used

  • build: fix gcc9 warnings

  • core changes
    • command handling cleanups

    • dead code removal

    • cmds-* files moved to cmds/

    • other shared userspace files moved to common/

    • utils.c split into more files

    • preparatory work for more output formats

    • libbtrfsutil: fix unaligned access

  • other
    • new and updated tests

    • fix tests so CI passes again

    • sb-mod can modify more superblock items

btrfs-progs-5.2.1 (2019-07-26)

  • scrub status: fix ETA calculation after resume

  • check: fix crash when using -Q

  • restore: fix symlink owner restoration

  • mkfs: fix regression with mixed block groups

  • core: fix commit to process all delayed refs

  • other:
    • minor cleanups

    • test updates

btrfs-progs-5.2.2 (2019-09-05)

  • check:
    • fix false report of wrong byte count for orphan inodes

    • option -E was not handled correctly

    • new check and repair for root item generation

  • balance: check for full-balance before background fork

  • mkfs: check that total device size does not overflow 16EiB

  • dump-tree: print DEV_STATS key type

  • other:
    • new and updated tests

    • doc fixups and updates

btrfs-progs-5.1 (2019-05-17)

  • (version 5.0 skipped)

  • check:
    • repair: flush/FUA support to avoid breaking metadata COW

    • file extents repair no longer relies on data in extent tree

    • lowmem: fix false error reports about gaps between extents

    • add inode mode check and repair for various objects

    • add check for invalid combination of nocow/compressed extents

  • device scan: new option to forget scanned devices

  • mkfs: use same chunk size as kernel for initial creation

  • dev-replace: better report when other exclusive operation is running

  • help: for syntax errors on command line, print only the relevant messages, not the whole help text

  • receive:
    • new option for quiet mode

    • on -vv print information about written ranges

    • fix endless loop with --dump on an invalid stream

  • defrag: able open files in RO mode (needs kernel support to work)

  • dump-tree: --block can be specified multiple times

  • libbtrfsutil: fix: don’t close fd on error in btrfs_util_subvolume_id_fd

  • core:
    • add sync before superblock write

    • better error handling on the transaction commit path

    • try to find best copy when reading tree blocks

    • update backup roots on commit transaction

  • other:
    • fuzz tests pass and are enabled in CI

    • cleanups

    • new tests

btrfs-progs-5.1.1 (2019-06-11)

  • convert and mkfs will try to use optimized crc32c

  • fi show: accept a file-backed image

  • fi show: fix possible crash when device is deleted in parallel

  • build:
    • support extra flags for python bindings

    • separate LDFLAGS for libbtrfsutil

  • other:
    • space reservation fixes or debugging improvements

    • V0 extent code removed

    • more tests and cleanups

btrfs-progs-4.x (2019-02-25)

btrfs-progs-4.20 (2019-01-19)

  • new feature: metadata uuid
    • lightweight change of UUID without rewriting all metadata (incompatible change)

    • done by btrfstune -m/-M

    • needs kernel support, 5.0+

  • image:
    • fix block groups when restoring from multi-device image

    • only enlarge result image if it’s a regular file

  • check
    • more device extent checks and fixes

    • can repair dir item with mismatched hash

  • mkfs: uuid tree created with proper contents

  • fix mount point detection due to partial prefix match

  • other:
    • new tests

    • libbtrfsutil: fix tests if kernel lacks support for new subvolume ioctls

    • build fixes

    • doc fixes

btrfs-progs-4.20.1 (2019-01-23)
  • libbtrfs: fix build of external tools due to missing symbols

  • ci: enable library test

btrfs-progs-4.20.2 (2019-02-25)
  • ci: use newer distro for builds

  • dump-super: minor output fixup

  • revert fix for prefix detection of receive path, this is temporary and unbreaks existing user setups

btrfs-progs-4.19 (2018-11-03)

  • check: support repair of fs with free-space-tree feature

  • core:
    • port delayed ref infrastructure from kernel

    • support write to free space tree

  • dump-tree: new options for BFS and DFS enumeration of b-trees

  • quota: rescan is now done automatically after ‘assign’

  • btrfstune: incomplete fix to uuid change

  • subvol: fix 255 char limit checks

  • completion: complete block devices and now regular files too

  • docs:
    • ship uncompressed manual pages

    • btrfsck uses a manual page link instead of symlink

  • other
    • improved error handling

    • docs

    • new tests

btrfs-progs-4.19.1 (2018-12-05)
  • build fixes
    • big-endian builds fail due to bswap helper clashes

    • ‘swap’ macro is too generic, renamed to prevent build failures

  • libbtrfs
    • minor version update to 1.1.0

    • fix default search to top=0 as documented

    • rename ‘async’ to avoid future python binding problems

    • add support for unprivileged subvolume listing ioctls

    • added tests, API docs

  • other
    • lot of typos fixed

    • warning cleanups

    • doc formatting updates

    • CI tests against zstd 1.3.7

btrfs-progs-4.18 (skipped)

btrfs-progs-4.17 (2018-06-14)

  • check
    • many lowmem mode improvements

    • properly report qgroup mismatch errors

    • check symlinks with append/immutable flags

  • fi usage
    • correctly calculate allocated/unallocated for raid10

    • minor output updates

  • mkfs
    • detect ENOSPC on thinly provisioned devices

    • fix spurious EEXIST during directory traversal

  • restore: fix relative path for restore target

  • dump-tree: print symbolic tree names for backrefs

  • send: fix regression preventing send -p with subvolumes mounted on “/”

  • corrupt-tree: refactoring and command line updates

  • build
    • make it work with e2fsprogs < 1.42 again

    • restore support for autoconf 2.63

    • detect if -std=gnu90 is supported

  • other
    • new tests

    • cleanups

btrfs-progs-4.17.1 (2018-08-06)
  • check:
    • add ability to fix wrong ram_bytes for compressed inline files

    • beautify progress output

  • btrfstune: allow to continue uuid change after unclean interruption

  • several fuzz fixes:
    • detect overlapping chunks

    • chunk loading error handling

    • don’t crash with unexpected root refs to extents

  • relax option parsing again to allow mixing options and non-options arguments

  • fix qgroup rescan status reporting

  • build:
    • drop obsolete dir-test

    • new configure option to disable building of tools

    • add compatibility options --disable-static and --disable-shared

  • other:
    • cleanups and preparatory work

    • new test images

btrfs-progs-4.16 (2018-04-06)

  • libbtrfsutil - new LGPL library to wrap userspace functionality
    • several ‘btrfs’ commands converted to use it:
      • properties

      • filesystem sync

      • subvolume set-default/get-default/delete/show/sync

    • python bindings, tests

  • build
    • use configured pkg-config path

    • CI: add python, musl/clang, built dependencies caching

    • convert: build fix for e2fsprogs 1.44+

    • don’t install library links with wrong permissions

  • fixes
    • prevent incorrect use of subvol_strip_mountpoint

    • dump-super: don’t verify csum for unknown type

    • convert: fix inline extent creation condition

  • check:
    • lowmem: fix false alert for ‘data extent backref lost for snapshot’

    • lowmem: fix false alert for orphan inode

    • lowmem: fix false alert for shared prealloc extents

  • mkfs:
    • add UUID and otime to root of FS_TREE - with the uuid, snapshots will be now linked to the toplevel subvol by the parent UUID

    • don’t follow symlinks when calculating size

    • pre-create the UUID tree

    • fix --rootdir with selinux enabled

  • dump-tree: add option to print only children nodes of a given block

  • image: handle missing device for RAID1

  • other
    • new tests

    • test script cleanups (quoting, helpers)

    • tool to edit superblocks

    • updated docs

btrfs-progs-4.16.1 (2018-04-24)
  • remove obsolete tools: btrfs-debug-tree, btrfs-zero-log, btrfs-show-super, btrfs-calc-size

  • sb-mod: new debugging tool to edit superblock items

  • mkfs: detect if thin-provisioned device does not have enough space

  • check: don’t try to verify checksums on metadata dump images

  • build: fail documentation build if xmlto is not found

  • build: fix build of btrfs.static

btrfs-progs-4.15 (2018-02-01)

  • mkfs --rootdir reworked, does not minimize the final image but can be still done using a new option --shrink

  • fix allocation of system chunk, don’t allocate from the reserved area

  • other
    • new and updated tests

    • cleanups, refactoring

    • doc updates

btrfs-progs-4.15.1 (2018-02-16)
  • build
    • fix build on musl

    • support asciidoctor for doc generation

  • cleanups
    • sync some code with kernel

    • check: move code to own directory, split to more files

  • tests
    • more build tests in travis

    • tests now pass with asan and ubsan

    • testsuite can be exported and used separately

btrfs-progs-4.14 (2017-11-16)

  • build: libzstd now required by default

  • check: more lowmem mode repair enhancements

  • subvol set-default: also accept path

  • prop set: compression accepts no/none, same as “”

  • filesystem usage: enable for filesystem on top of a seed device

  • rescue: new command fix-device-size

  • other
    • new tests

    • cleanups and refactoring

    • doc updates

btrfs-progs-4.14.1 (2018-01-05)
  • dump-tree: print times of root items

  • check: fix several lowmem mode bugs

  • convert: fix rollback after balance

  • other
    • new and updated tests, enabled lowmem mode in CI

    • docs updates

    • fix travis CI build

    • build fixes

    • cleanups

btrfs-progs-4.13 (2017-09-08)

  • convert: reiserfs support

  • check: new option --force to allow check of a mounted filesystem (no repair)

  • mkfs: --rootdir will now copy special files

  • dump-tree: minor output changes

  • inspect rootid: accept file as argument

  • dev usage: don’t calculate slack space for missing devices

  • fi du: don’t print error on EMPTY_SUBVOL (inode number 2)

  • build:
    • fixed support for sanitization features on gcc (tsan, asan, ubsan)

    • fix PIE build

  • other:
    • misc cleanups and stability fixes

    • travis CI enhancements

    • new tests, fuzzed images

    • testsuite cleanups

btrfs-progs-4.13.1 (2017-09-25)
  • image: speed up generating the sanitized names, do not generate unprintable chars

  • completion: add missing commands, better mount point detection

  • restore: add zstd support; libzstd detected automatically, will be requested by default in the future, or can be configured out

  • other:
    • misc fixes found by sparse

    • doc enhancements, ioctl manual page started

    • updated and new tests

    • build fixes

btrfs-progs-4.13.2 (2017-10-06)
  • subvol list:
    • don’t list toplevel subvolume among deleted (broken since 4.8.3)

    • minor adjustments of uuid print format

  • subvol delete:
    • fix swapped behaviour of --commit-each and --commit-after

    • fix potentially lost sync if subvolumes are from different filesystems

  • check: add cache for metadata blocks, should improve performance

  • other:
    • new tests, testsuite updates

    • doc updates

    • cleanups

btrfs-progs-4.13.3 (2017-10-16)
  • check: fix --force, wrong check for a mounted block device

  • build: fix --with-convert parsing

  • subvol list: don’t list TOPLEVEL

  • other: update tests

btrfs-progs-4.12 (2017-07-26)

  • subvol show: new options --rootid, --uuid to show subvol by the given spec

  • convert: progress report fixes, found by tsan

  • image: progress report fixes, found by tsan

  • fix infinite looping in find-root, or when looking for free extents

  • other:
    • code refactoring

    • docs updates

    • build: ThreadSanitizer support

    • tests: stricter checks for mounted filesystem

btrfs-progs-4.12.1 (2017-08-25)
  • build:
    • fix cross-compilation

    • use gnu90 explicitly

  • dump-tree: more relaxed checks so -b can print block on a damaged fs

  • convert: fix the 1MB range exclusion

  • check: more dir_item hash checks

  • other
    • added missing getopt spec for some options

    • doc fixes

    • cleanups

    • test updates

btrfs-progs-4.11 (2017-05-18)

  • receive: fix handling empty stream with -e (multi-stream)

  • send dump: fix printing long file names

  • stability fixes for: dump-super, print-tree, check

  • option parser updates: global options are parsed before the subcommand name (old xfstests will fail)

  • new and updated tests

  • documentation updates

btrfs-progs-4.11.1 (2017-06-30)
  • image: restoring from multiple devices

  • dev stats: make --check option work

  • check: fix false alert with extent hole on a NO_HOLE filesystem

  • check: lowmem mode, fix false alert in case of mixed inline and compressed extent

  • convert: work with large filesystems (many TB)

  • convert: fix overwriting of eb header flags

  • convert: do not clear NODATASUM flag in inodes when run with --no-datasum

  • docs updates

  • build: sync Android.mk with Makefile

  • tests:
    • new tests

    • fix 008 and 009, shell quotation mistake

btrfs-progs-4.10 (2017-03-08)

  • send: dump output fixes: missing newlies

  • check: several fixes for the lowmem mode, improved error reporting

  • build
    • removed some library deps for binaries that not use them

    • ctags, cscope

    • split Makefile to the autotool generated part and the rest, not needed to autogen.sh after adding a file

  • shared code: sync easy parts with kernel sources

  • other
    • lots of cleanups

    • source file reorganization: convert, mkfs, utils

    • lots of spelling fixes in docs, other updates

    • more tests

btrfs-progs-4.10.1 (2017-03-17)
  • receive: handle subvolume in path clone

  • convert: rollback fixed (rewrite was needed to address previous design issues)

  • build: fix build of 3rd party tools, missing <linux/sizes.h>

  • dump-tree: print log trees

  • other
    • new and updated tests

btrfs-progs-4.10.2 (2017-03-31)
  • check: lowmem mode fix for false alert about lost backrefs

  • convert: minor bugfix

  • library: fix build, missing symbols, added tests

btrfs-progs-4.9 (2016-12-23)

  • check: many lowmem mode updates

  • send: use splice syscall to copy buffer from kernel

  • receive: new option to dump the stream in textual form

  • convert:
    • move sources to own directory

    • prevent accounting of blocks beyond end of the device

    • make it work with 64k sectorsize

  • mkfs: move sources to own directory

  • defrag: warns if directory used without -r

  • dev stats:
    • new option to check stats for non-zero values

    • add long option for -z

  • library: version bump to 0.1.2, added subvol_uuid_search2

  • other:
    • cleanups

    • docs updates

btrfs-progs-4.9.1 (2017-01-27)
  • check:
    • use correct inode number for lost+found files

    • lowmem mode: fix false alert on dropped leaf

  • size reports: negative numbers might appear in size reports during device deletes (previously in EiB units)

  • mkfs: print device being trimmed

  • defrag: v1 ioctl support dropped

  • quota: print message before starting to wait for rescan

  • qgroup show: new option to sync before printing the stats

  • other:
    • corrupt-block enhancements

    • backtrace and co. cleanups

    • doc fixes

btrfs-progs-4.8 (2016-10-05)

  • error handling improvements all over the place

  • new fuzzed images, test updates

  • doc fixups

  • minor cleanups and improvements

  • kernel library helpers moved to own directory

  • qgroup: fix regression leading to incorrect status after check, introduced in 4.7

btrfs-progs-4.8.1 (2016-10-12)
  • 32bit builds fixed

  • build without backtrace support fixed

btrfs-progs-4.8.2 (2016-10-26)
  • convert: also convert file attributes

  • convert: fix wrong tree block alignment for unaligned block group

  • check: quota verify fixes, handle reloc tree

  • build: add stub for FIEMAP_EXTENT_SHARED, compiles on ancient kernels

  • build: add stub for BUILD_ASSERT when ioctl.h is included

  • dump-tree: don’t crash on unrecognized tree id for -t

  • tests:
    • add more ioctl tests

    • convert: more symlink tests, attribute tests

    • quota verify for reloc tree

  • other cleanups

btrfs-progs-4.8.3 (2016-11-11)
  • check:
    • support for clearing space cache (v1)

    • size reduction of inode backref structure

  • send:
    • fix handling of multiple snapshots (-p and -c options)

    • transfer buffer increased (should reduce number of context switches)

    • reuse existing file for output (-f), eg. when root cannot create files (NFS)

  • dump-tree:
    • print missing items for various structures

    • new: dev stats, balance status item

    • sync key names with kernel (the persistent items)

  • subvol show: now able to print the toplevel subvolume -- the creation time might be wrong though

  • mkfs:
    • store the creation time of toplevel root inode

    • print UUID in the summary

  • build: travis CI for devel

  • other:
    • lots of cleanups and refactoring

    • switched to on-stack path structure

    • fixes from coverity, asan, ubsan

    • new tests

    • updates in testing infrastructure

    • fixed convert test 005

btrfs-progs-4.8.4 (2016-11-25)
  • check: support for clearing space cache v2 (free-space-tree)

  • send:
    • more sanity checks (with tests), cleanups

    • fix for fstests/btrfs/038 and btrfs/117 failures

  • build:
    • fix compilation of standalone ioctl.h, pull NULL definition

    • fix library link errors introduced in 4.8.3

  • tests:
    • add more fuzzed images from bugzilla

    • add bogus send stream checks

    • fixups and enhancements for CI environment builds

    • misc refinements and updates of testing framework

  • other:
    • move sources for btrfs-image to own directory

    • deprecated and not build by default: btrfs-calc-size, btrfs-show-super

    • docs updates

btrfs-progs-4.8.5 (2016-11-30)
  • receive: fix detection of end of stream (error reported even for valid streams)

  • other:
    • added test for the receive bug

    • fix linking of library-test

btrfs-progs-4.7 (2016-07-29)

  • convert: fix creating discontig extents

  • check: speed up traversing heavily reflinked extents within a file

  • check: verify qgroups of higher levels

  • check: repair can now fix wrong qgroup numbers

  • balance: new option to run in the background

  • defrag: default extent target size changed to 32MiB

  • du: silently skip non-btrfs dirs/files

  • documentation updates: btrfs(5), btrfs(8), balance, subvolume, scrub, filesystem, convert

  • bugfixes:
    • unaligned access (reported for sparc64) in raid56 parity calculations

    • use /bin/bash

    • other stability fixes and cleanups

  • more tests

btrfs-progs-4.7.1 (2016-08-25)
  • check:
    • new optional mode: optimized for low memory usage (memory/io tradeoff)

    • --mode=lowmem, not default, still considered experimental

    • does not work with --repair yet

  • convert: regression fix, ext2_subvol/image rw permissions

  • mkfs/convert:
    • two-staged creation, partially created filesystem will not be recognized

    • improved error handling (fewer BUG_ONs)

  • convert: preparation for more filesystems to convert from

  • documentation updates: quota, qgroup

  • other
    • message updates

    • more tests

    • more build options, enhanced debugging

btrfs-progs-4.7.2 (2016-09-05)
  • check:
    • urgent fix: false report of backref mismatches; do not --repair last unaffected version 4.6.1 (code reverted to that state)

  • fuzzing and fixes
    • added more sanity checks for various structures

    • testing images added

  • build: udev compatibility: do not install .rules on version < 190

  • other:
    • dump-super: do not crash on garbage value in csum_type

    • minor improvements in messages and help strings

  • documentation:
    • filesystem features

btrfs-progs-4.7.3 (2016-09-21)
  • fixed free space tree compat status

  • check: low-mem mode: handle partially dropped snapshots

  • dump-super: consolidate options for superblock copy

  • tree-stats: check mount status

  • subvol delete: handle verbosity option

  • defrag: print correct error string

  • mkfs: fix reading rotational status

  • other:
    • UBSAN build option

    • documentation updates

    • enhanced tests: convert, fuzzed images, more tools to run on fuzzed images

btrfs-progs-4.6 (2016-06-10)

  • convert - major rewrite:
    • fix a long-standing bug that led to mixing data blocks into metadata block groups

    • the workaround was to do full balance after conversion, which was recommended practice anyway

    • explicitly set the lowest supported version of e2fstools to 1.41

  • provide and install udev rules file that addresses problems with device mapper devices, renames after removal

  • send: new option: quiet

  • dev usage: report slack space (device size minus filesystem area on the dev)

  • image: support DUP

  • build: short options to enable debugging builds

  • other:
    • code cleanups

    • build fixes

    • more tests and other enhancements

btrfs-progs-4.6.1 (2016-06-24)
  • filesystem resize: negative resize argument accepted again

  • qgroup rescan: fix skipping when rescan is in progress

  • mkfs: initialize stripesize to correct value

  • testsuite updates, mostly convert tests

  • documentation updates
    • btrfs-device, btrfs-restore manual pages enhanced

    • misc fixups

btrfs-progs-4.5 (2016-03-20)

New/moved commands:
  • btrfs-show-super -> btrfs inspect-internal dump-super

  • btrfs-debug-tree -> btrfs inspect-internal dump-tree

New commands:
  • btrfs filesystem du - calculate disk usage, including shared extents

Enhancements:
  • device delete - delete by id (needs kernel support, not merged to 4.6)

  • check - new option to specify chunk root

  • debug-tree/dump-tree - option -t understands human readable name of the tree (along numerical ids)

  • btrfs-debugfs - can dump block group information

Bugfixes:
  • all commands should accept the option separator “--”

  • several fixes in device scan

  • restore works on filesystems with sectorsize > 4k

  • debug-tree/dump-tree - print compression type as string

  • subvol sync: fix crash, memory corruption

  • argument parsing fixes: subvol get-default, qgroup create/destroy/ assign, inspect subvolid-resolve

  • check for block device or regular file in several commands

Other:
  • documentation updates

  • manual pages for the moved tools now point to btrfs-filesystem

  • testsuite updates

btrfs-progs-4.5.1 (2016-03-31)
  • mkfs: allow DUP on multi-device filesystems

  • bugfixes: build fixes, assorted other fixes

btrfs-progs-4.5.2 (2016-05-02)
  • new/moved command: btrfs-calc-stats -> btrfs inspect tree-stats

  • check: fix false alert for metadata blocks crossing stripe boundary

  • check: catch when qgroup numbers mismatch

  • check: detect running quota rescan and report mismatches

  • balance start: add safety delay before doing a full balance

  • filesystem sync: is now silent

  • filesystem show: don’t miss filesystems with partially matching uuids

  • dev ready: accept only one argument for device

  • dev stats: print “devid:N” for a missing device instead of “(null)”

  • other:
    • lowest supported version of e2fsprogs is 1.41

    • minor cleanups, test updates

btrfs-progs-4.5.3 (2016-05-11)
  • ioctl: fix unaligned access in buffer from TREE_SEARCH; might cause SIGBUS on architectures that do not support unaligned access and do not performa any fixups

  • improved validation checks of superblock and chunk-related structures

  • subvolume sync: fix handling of -s option

  • balance: adjust timing of safety delay countdown with --full-balance

  • rescue super-recover: fix reversed condition check

  • check: fix bytes_used accounting

  • documentation updates: mount options, scrub, send, receive, select-super, check, mkfs

  • testing: new fuzzed images, for superblock and chunks

btrfs-progs-4.4 (2016-01-18)

User visible changes:
  • mkfs.btrfs --data dup

People asked about duplicating data on a single device for a long time. There are no technical obstacles preventing that, so it got enabled with a warning about potential dangers when the device will not do the duplicated copies. See mkfs.btrfs section DUP PROFILES ON A SINGLE DEVICE.

  • support balance filters added/enhanced in linux 4.4
    • usage=min..max -- enhanced to take range

    • stripes=min..max -- new, filter by stripes for raid0/10/5/6

    • limit=min..max -- enhanced to take range

Note: due to backward compatibility, the range maximum for ‘usage’ is not inclusive as for the others, to keep the same behaviour as usage=N .

  • manual pages enhanced (btrfs, mkfs, mount, filesystem, balance)

  • error messages updates, rewordings -- some fstests may break due to that

  • added support for free-space-tree implementation of space cache -- this requires kernel 4.5 and is not recommended for non-developers yet

  • btrfs filesystem usage works with mixed blockgroups

Other:
  • installation to /usr/local -- this has unintentionally changed during conversion to autotools in 3.19

  • check: fix a false alert where extent record has wrong metadata flag

  • improved stability on fuzzed/crafted images when reading sys array in superblock

  • build: the ‘ar’ tool is properly detected during cross-compilation

  • debug-tree: option -t understands ids for tree root and chunk tree

  • preparatory work for btrfs-convert rewrite

  • sparse, gcc warning fixes

  • more memory allocation failure handling

  • cleanups

  • more tests

Bugfixes:
  • chunk recovery: fix floating point exception

  • chunk recovery: endianity bugfix during rebuild

  • mkfs with 64K pages and nodesize reported superblock checksum mismatch

  • check: properly reset nlink of multi-linked file

btrfs-progs-4.4.1 (2016-02-26)
  • find-root: don’t skip the first chunk

  • free-space-tree compat bits fix

  • build: target symlinks

  • documentation updates

  • test updates

btrfs-progs-4.3 (2015-11-06)

  • mkfs
    • mixed mode is not forced for filesystems smaller than 1GiB

    • mixed mode broken with mismatching sectorsize and nodesize, fixed

    • print version info earlier

    • print devices sorted by id

    • do not truncate target image with --rootsize

  • filesystem usage:
    • don’t print global block reserve

    • print device id

    • minor output tuning

    • other cleanups

  • calc-size:
    • div-by-zero fix on an empty filesystem

    • fix crash

  • bugfixes:
    • more superblock sanity checks

    • consistently round size of all devices down to sectorsize

    • misc leak fixes

    • convert: don’t try to rollback with a half-deleted ext2_saved subvolume

  • other:
    • check: add progress indicator

    • scrub: enhanced error message

    • show-super: read superblock from a given offset

    • add README

    • docs: update manual page for mkfs.btrfs, btrfstune, balance, convert and inspect-internal

    • build: optional build with more warnings (W=…)

    • build: better support for static checkers

    • build: html output of documentation

    • pretty-print: last_snapshot for root_item

    • pretty-print: stripe dev uuid

    • error reporting wrappers, introduced and example use

    • refactor open_file_or_dir

    • other docs and help updates

  • testing:
    • test for nodes crossing stripes

    • test for broken ‘subvolume sync’

    • basic tests for mkfs, raid option combinations

    • basic tests for fuzzed images (check)

    • command instrumentation (eg valgrind)

    • print commands if requested

    • add README for tests

btrfs-progs-4.3.1 (2015-11-16)
  • fixes
    • device delete: recognize ‘missing’ again

    • mkfs: long names are not trimmed when doing ssd check

    • support partitioned loop devices

  • other
    • replace several mallocs with on-stack variables

    • more memory allocation failure handling

    • add tests for bugs fixed

    • cmd-device: switch to new message printing helpers

    • minor code cleanups

btrfs-progs-4.2 (2015-09-03)

  • enhancements:
    • mkfs: do not create extra single chunks on multiple devices

    • resize: try to guess the minimal size, ‘inspect min-dev-size’

    • qgroup assign: add option to schedule rescan

    • chunk-recover: be more verbose about the scanning process

  • fixes:
    • check:
      • find stripes crossing stripe boundary -- created by convert

      • print correct range for file hole when there are no extents and learn how to fix it

    • replace: more sanity checks

    • convert: concurrency fixes related to reporting progress

    • find-root: option -a will not skip the current root anymore

    • subvol list: fix occasional crash

    • do not create stripes crossing stripe boundary

  • build:
    • fixes for musl libc

    • preliminary support for android (not working yet, more code changes needed)

    • new EXTRA_CFLAGS and EXTRA_LDFLAGS

  • other:
    • lots of cleanups

    • tests: lots of updates, new tests, framework improvements

    • documentation updates

    • debugging: print-tree shows stripe length

btrfs-progs-4.2.1 (2015-09-20)
  • fix an off-by-one error in cross-stripe boundary check
    • if nodesize was 64k, any metadata block was reported as crossing, this leads to mkfs failure for example due to “no free blocks found”

    • for other nodesizes, if the end of the metadata block was 64k aligned, it was incorrectly reported by fsck

  • convert: don’t write uninitialized data to image

  • image:
    • don’t loop with option -t0

    • don’t create threads if compression is not requested

  • other: minor cleanups

btrfs-progs-4.2.2 (2015-10-05)
  • filesystem label: use fallback if the label ioctl is not available

  • convert: check nodesize constraints against commandline features (-O)

  • scrub: report status ‘running’ until all devices are finished

  • device scanning might crash in some scenarios

  • filesystem usage: print summary for non-root users

btrfs-progs-4.2.3 (2015-10-19)
  • subvol sync: make it actually work again: it’s been broken since 4.1.2, due to a reversed condition it returned immediately instead of waiting

  • scanning: do not scan already discovered filesystems (minor optimization)

  • convert: better error message in case the filesystem is not finalized

  • restore: off-by-one symlink path check fix

btrfs-progs-4.1 (2015-06-22)

Bugfixes:
  • fsck.btrfs: no bash-isms

  • bugzilla 97171: invalid memory access (with tests)

  • receive:
    • cloning works with --chroot

    • capabilities not lost

  • mkfs: do not try to register bare file images

  • option --help accepted by the standalone utilities

Enhancements:
  • corrupt block: ability to remove csums

  • mkfs:
    • warn if metadata redundancy is lower than for data

    • options to make the output quiet (only errors)

    • mixed case names of raid profiles accepted

    • rework the output:

    • more comprehensive, ‘key: value’ format

  • subvol:
    • show:
      • print received uuid

      • update the output

      • new options to specify size units

    • sync: grab all deleted ids and print them as they’re removed, previous implementation only checked if there are any to be deleted - change in command semantics

  • scrub: print timestamps in days HMS format

  • receive:
    • can specify mount point, do not rely on /proc

    • can work inside subvolumes

  • send: new option to send stream without data (NO_FILE_DATA)

  • convert: specify incompat features on the new fs

  • qgroup:
    • show: distinguish no limits and 0 limit value

    • limit: ability to clear the limit

  • help for ‘btrfs’ is shorter, 1st level command overview

  • debug tree: print key names according to their C name

New:
  • rescue zero-log

  • btrfsune:
    • rewrite uuid on a filesystem image

    • new option to turn on NO_HOLES incompat feature

Deprecated:
  • standalone btrfs-zero-log

Other:
  • testing framework updates
    • uuid rewrite test

    • btrfstune feature setting test

    • zero-log tests

    • more testing image formats

  • manual page updates

  • ioctl.h synced with current kernel uapi version

  • convert: preparatory works for more filesystems (reiserfs pending)

  • use static buffers for path handling where possible

  • add new helpers for send uilts that check memory allocations, switch all users, deprecate old helpers

  • Makefile: fix build dependency generation

  • map-logical: make it work again

btrfs-progs-4.1.1 (2015-07-10) -- Do not use this version!
Bugfixes:
  • defrag: threshold overflow fix

  • fsck:
    • check if items fit into the leaf space

    • fix wrong nbytes

  • mkfs:
    • create only desired block groups for single device

    • preparatory work for fix on multiple devices

Enhancements:
  • new alias for ‘device delete’: ‘device remove’

Other:
  • fix compilation on old gcc (4.3)

  • documentation updates

  • debug-tree: print nbytes

  • test: image for corrupted nbytes

  • corrupt-block: let it kill nbytes

btrfs-progs-4.1.2 (2015-07-14)
  • urgent bugfix: mkfs creates invalid filesystem, must be recreated

btrfs-progs-4.0 (2015-04-29)

  • resize:
    • don’t accept file as an argument (it’s confusing)

    • print better error message in case of an error

  • restore: optionally restore metadata (time, mode, uid/gid)

  • receive: optionally enforce chroot

  • new rescue subcommand ‘zero-log’, same as btrfs-zero-log, but now also part of the main utility

  • check:
    • free space checks match kernel, fixes incorrect reports

  • convert: fix setting of checksum bit if --no-datasum is used

  • fsck.btrfs: don’t print messages

  • fix quota rescan on PPC64 (mangled ioctl number)

  • test updates

  • documentation: files renamed to .asciidoc, misc fixups

btrfs-progs-4.0.1 (2015-05-20)
  • restore:
    • can restore symlinks, new option --symlinks

    • long option variants added

  • convert: dropped dependency on acl.h header and libacl is not required for build

  • fix for ‘check’ crash

  • device remove error message fix

  • preparatory works for fsid change

btrfs-progs-3.x (2015-03-25)

btrfs-progs-3.19 (2015-03-11)

  • build converted to autotools

  • btrfs-image
    • restore can now run in parallel threads

    • fixed restore of multiple image from multiple devices onto a single dev

    • introduced metadump v2

  • check: make --init-csum-tree and --init-extent-tree work together

  • find-new: option to search through all metadata even if a root was already found

  • convert: show progress by default, can be turned off

  • corrupt-block: option to work on a specific root

  • bash completion script for all subcommands

btrfs-progs-3.19.1 (2015-03-25)
  • convert:
    • new option to specify metadata block size

    • --no-progress actually works

  • restore: properly handle the page boundary corner case

  • build fixes:
    • missing macro from public header, BTRFS_BUILD_VERSION

    • wrong handling of --enable-convert

  • filesystem usage: reports correct space for degraded mounts

  • other:
    • mkfs: help string updates

    • completion: added ‘usage’ subcommands

    • cleanups in qgroup code, preparatory work

btrfs-progs-3.18 (2014-12-30)

  • mkfs - skinny-metadata feature is now on by default, first introduced in kernel 3.10

  • filesystem usage - give an overview of fs usage in a way that’s more comprehensible than existing ‘filesystem df’

  • device usage - more detailed information about per-device allocations

  • check
    • option to set a different tree root byte number

    • ability to link lost files to lost+found, caused by a recent kernel bug

    • repair of severely corrupted fs (use with care)

  • convert - option to show progress

  • subvol create - print the commit mode inline, print the global mode only if --verbose

  • other updates: musl-libc support, coverity bugfixes, new test images, documentation

btrfs-progs-3.18.1 (2015-01-09)
  • minor fixes

  • documentation updates

btrfs-progs-3.18.2 (2015-01-27)
  • qgroup show: print human readable sizes, options to say otherwise

  • check: new option to explicitly say no to writes

  • mkfs: message about trimming is not printed to stderr

  • filesystem show: fixed return value

  • tests: new infrastructure

  • btrfstune: force flag can be used together with seeding option

  • backtrace support is back

  • getopt cleanups

  • doc and help updates

btrfs-progs-3.17 (2014-10-17)

  • check: --init-csum-tree actually does something useful, rebuilds the whole csum tree

  • /dev scanning for btrfs devices is gone

  • /proc/partitions scanning is gone, blkid is used exclusively

  • new subcommand subvolume sync

  • filesystem df: new options to set unit format

  • convert: allow to copy label from the origin, or specify a new one

btrfs-progs-3.17.1 (2014-11-04)
  • filesystem df: argument handling

  • fix linking with libbtrfs

  • replace: better error reporting

  • filesystem show: fixed stall if run concurrently with balance

  • check: fixed argument parsing for --subvol-extents

  • filesystem df: SI prefixes corrected

btrfs-progs-3.17.2 (2014-11-19)
  • check improvements
    • add ability to replace missing dir item/dir indexes

    • fix missing inode items

    • create missing root dirid

  • corrupt block: enhancements for testing fsck

  • zero-log: able to reset a fs with bogus log tree pointer (bug_72151)

btrfs-progs-3.17.3 (2014-12-04)
  • convert: fix conversion of sparse ext* filesystems

  • show: resolve to the correct path

  • fsck: more verbose error for root dir problems

btrfs-progs-3.16 (2014-08-26)

  • mkfs: new option to specify UUID, drop experimental notice

  • check: new option to verify quotas, reduced memory requirements, new option to print extent sharing

  • restore: check length before decompression, more error handling, option to loop during restoring

  • balance: new filter ‘limit’

  • recover: allow to read all sb copies

  • btrfstune: new option to force dangerous changes

  • receive: new option to limit number of errors

  • show-super: skip unrecognized sb, add option to force

  • debug-tree: print tree by id

  • documentation updates

btrfs-progs-3.16.1 (2014-09-15)
  • print GlobalReserve in filesystem df output

  • new option -R in subvol list

  • library version defines

  • static build is fixed

  • build without documentation is possible

btrfs-progs-3.16.2 (2014-10-01)
  • a few fixes in fsck and image tools

btrfs-progs-3.15 (skipped)

btrfs-progs-3.14 (2014-04-06)

  • fsck: fixes and enhancements to --init-extent-tree mode

  • fsck: chunk-recover updates

  • scrub: add force option -f

  • send: check if subvolumes are read-only

  • subvol delete: add options to affect commit behaviour

  • btrfs: add property command group

  • restore: add dry-run option

  • restore: fix restoring of compressed files

  • mkfs: support for no-holes feature

  • mkfs: option -r deals with hardlinks and relative paths

  • mkfs: discard phase is interruptible

  • documentation updates

btrfs-progs-3.14.1 (2014-04-18)
  • properties: fix handling of option -t

  • restore: fix reading of compressed extents

  • minor code and doc updates

btrfs-progs-3.14.2 (2014-05-29)
  • documentation is now written in asciidoc and there are manpages for each subcommand

  • misc bugfixes

btrfs-progs-3.13 (skipped)

btrfs-progs-3.12 (2013-11-25)

  • announcement, tarballs

  • first release after 0.19 (2009/06) with a lot of changes