btrfs-progs-6.11 (2024-09-17) ----------------------------- * check: * check items in tree-log * detect invalid file extent items for symlinks * properly detect inode cache and suggest removal by 'clear-ino-cache' * convert: fix symlink length checks * fi show: remove stray newline at the end of the output * fixes: * open devices in write-exclusive mode in most commands, prevent concurrent mount by other programs * rescue clear-ino-cache: fix subvolume iteration that can fail in some cases * map-logical: fix first extent searching condition * fi resize: warn if new size is below 256M * tree-checker: * slightly stricter file type validation * verify device extent items * other: * documentation updates * ship btrfs-ioctl manual page (incomplete) btrfs-progs-6.10 (2024-07-30) ----------------------------- * inspect: * list-chunks: new command to print information about chunks (i.e. the physical chunks as stored on devices), sortable; requires root as it's using SEARCH_TREE ioctl * tree-stats: * new option -t to print only the given tree * add long options for size units * filesystem df: with increased verbosity print per-type information from sysfs * version: print a line with built-in features or options (+FEATURE1 -FEATURE2) * image: document option -s and its potential problems * fixes: * scrub status: user selected base for Rate values * receive: escape special characters in paths and xattrs * dump-tree: escape special characters in paths and xattrs * image: sanitizing filenames did not work properly in all cases * convert: fix displayed restored image path on rollback * tune change csum: do conversion in smaller batches * other: * CI workflows updates (sanitizers, code spelling, manual page preview) * build fixes for uClibc * build fix for python 3.13 * documentation updates btrfs-progs-6.10.1 (2024-08-15) """"""""""""""""""""""""""""""" * mkfs: rework --rootdir traversal, skip hardlinks and create new inodes instead, also warn about them, this did not work as expected and will be fixed in the future * receive: search in older trees for UUIDs when detecting clone sources * libbtrfsutil: bindings available at https://pypi.org/project/btrfsutil * libbtrfs: * patchlevel version update 0.1.4 * cleanup in headers, removed unused definitions, no functional changes * don't ship list.h and rbtree.h * other: * documentation updates btrfs-progs-6.9 (2024-06-07) ---------------------------- * mkfs: * if --force used, don't continue if the mount status cannot be determined (e.g. due to permissions) * fix minimum size calculation on zoned devices, make it work with option -b * check: * option --clear-ino-cache removed (functionality still provided in 'rescue' command group) * detect and repair wrong file extent item ram_bytes value * qgroup clear-stale: * sync the filesystem before search to read the up to date state * handle cases where qgroup cannot be deleted due to uncleaned subvolume or when squota is enabled * qgroup show: display status of qgroup regarding the cleaning of the subvolume or if it's squota * receive: fix stream parsing on strict alignment hosts (e.g. ARM v5 or v6) * tune change-csum: fix check of dev-replace status item, continue if no dev-replace in progress * dump-tree: print contents of dev-replace status item * convert: fix extent iteration to handle prealloc/unwritten extents * libbtrfsutil: * patchlevel version update 1.3.1 * fix potentially unaligned access to send stream * create library links to all version levels * libbtrfs: * patchlevel version update 0.1.3 * fix potentially unaligned access to send stream * create library links to all version levels * build: * fix compatibility with e2fsprogs 1.47.1 * fix header file dependency tracking * -O2 by default * other: * new and updated tests * ASAN and UBSAN test coverage in CI * documentation updates btrfs-progs-6.9.1 (2024-06-24) """""""""""""""""""""""""""""" * fix detection of intermediate super block flags (e.g. csum change and other conversions) * raid-stripe-tree support (still experimental): * moved under experimental build flags (mkfs, convert) * format change, removed encoding type; backward incompatible * receive dump: escape special chars in xattr names and values, and clone source path * tune change csum: fix reservation size when starting a transaction * other: * new and updated tests * updated CI images, new reference build targets * cleanups and refactoring btrfs-progs-6.9.2 (2024-06-27) """""""""""""""""""""""""""""" * subvol list: fix accidental trimming of subvolume name * check: revert checking file extent item 'ram_bytes' * libbtrfsutil: * patchlevel version update 1.3.2 * fix accidentally closing fd passed to subvolume iterator 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 compatible * add aliases for all existing functions with unified naming scheme * updated header definitions 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.8.1 (2024-05-02) """""""""""""""""""""""""""""" * mkfs: fix writing on zoned device when block-group-tree is selected * tune: fix writing on zoned device with option --convert-to-block-group-tree * check: * more progress and error messages * unify handling of unknown command line options with other commands * subvolume delete: remove options --delete-qgroup and --no-delete-qgroup (added in 6.6.3), qgroup deletion does not always work due to delayed background processing of subvolume or set value in sysfs:ggroup/drop_subtree_threshold * other: * misc refactoring * error handling fixes reported by gcc -fanalyzer * documentation updates * new and updated tests 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 parent subvol UUID on errors * btrfstune: 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 pointer 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 trailing 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 asciidoc 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 manual 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 command line * 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 newlines * 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 * 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 perform 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: endianness 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 command line 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 * btrfstune: * 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 utils 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