Changes (feature/version)
变更(功能/版本) 

Major features or significant feature enhancements by kernel version. For more information look below.
内核版本的主要特性或重要特性增强。有关更多信息,请查看下方。

The version states at which version a feature has been merged into the mainline kernel. It does not tell anything about at which kernel version it is considered mature enough for production use. For an estimation on stability of features see Status page.
版本说明了一个特性已经合并到主线内核的版本。它并不说明该特性在哪个内核版本被认为足够成熟以用于生产。要了解特性稳定性的估计,请参阅状态页面。

6.x

6.0 - send protocol v2
6.0 - 发送协议 v2

Send protocol update that adds new commands and extends existing functionality to write large data chunks. Compressed (and encrypted) extents can be optionally emitted and transferred as-is without the need to re-compress (or re-encrypt) on the receiving side.
发送协议更新,添加新命令并扩展现有功能以写入大数据块。可以选择性地发出并传输压缩(和加密)的范围,而无需在接收端重新压缩(或重新加密)。

6.0 - sysfs exports commit stats
6.0 - sysfs 导出提交统计

The file /sys/fs/btrfs/FSID/commit_stats shows number of commits and various time related statistics.
文件 /sys/fs/btrfs/FSID/commit_stats 显示提交次数和各种与时间相关的统计信息。

6.0 - sysfs exports chunk sizes
6.0 - sysfs 导出块大小

Chunk size value can be read from /sys/fs/btrfs/FSID/allocation/PROFILE/chunk_size.
块大小值可以从 /sys/fs/btrfs/FSID/allocation/PROFILE/chunk_size 中读取。

6.0 - sysfs shows zoned mode among features
6.0 - sysfs 显示分区模式作为功能之一

The zoned mode has been supported since 5.10 and adding functionality. Now it’s advertised among features.
从 5.10 版本开始支持分区模式,并添加功能。现在它被作为功能之一进行宣传。

6.0 - checksum implementation is logged at mount time
6.0 - 挂载时记录校验和实现

When a filesystem is mounted the implementation backing the checksums is logged. The information is also accessible in /sys/fs/btrfs/FSID/checksum.
当文件系统被挂载时,支持校验和的实现会被记录。这些信息也可以在 /sys/fs/btrfs/FSID/checksum 中访问。

6.1 - sysfs support to temporarily skip exact qgroup accounting
6.1 - sysfs 支持临时跳过准确的 qgroup 记账

Allow user override of qgroup accounting and make it temporarily out of date e.g. in case when there are several subvolumes deleted and the qgroup numbers need to be updated at some cost, an update after that can amortize the costs.
允许用户覆盖 qgroup 记账并使其暂时过时,例如当有多个子卷被删除且 qgroup 数字需要以一定成本更新时,之后的更新可以摊销这些成本。

6.1 - scrub also repairs superblock
6.1 - 擦除还修复超级块

An improvement to scrub in case the superblock is detected to be corrupted, the repair happens immediately. Previously it was delayed until the next transaction commit for performance reasons that would store an updated and correct copy eventually.
如果检测到超级块损坏,擦除的改进会立即进行修复。以前为了性能原因,修复被延迟到下一个事务提交,这样最终会存储一个更新和正确的副本。

6.1 - block group tree
6.1 - 区块组树

An incompatible change that has to be enabled at mkfs time. Add a new b-tree item that stores information about block groups in a compact way that significantly improves mount time that’s usually long due to fragmentation and scattered b-tree items tracking the individual block groups. Requires and also enables the free-space-tree and no-holes features.
必须在 mkfs 时启用的不兼容更改。添加一个新的 B 树项,以紧凑的方式存储有关块组的信息,这显着改善了通常由于碎片化和分散的 B 树项跟踪单个块组而导致的长挂载时间。需要并且还启用了自由空间树和无空洞功能。

6.1 - discard stats available in sysfs
6.1 - 在 sysfs 中提供丢弃统计信息

The directory /sys/fs/btrfs/FSID/discard exports statistics and tunables related to discard.
目录 /sys/fs/btrfs/FSID/discard 导出与丢弃相关的统计信息和可调整参数。

6.1 - additional qgroup stats in sysfs
6.1 - 在 sysfs 中添加额外的 qgroup 统计信息

The overall status of qgroups are exported in /sys/sys/fs/btrfs/FSID/qgroups/.
qgroup 的整体状态在 /sys/sys/fs/btrfs/FSID/qgroups/ 中导出。

6.1 - check that super block is unchanged at thaw time
6.1 - 在解冻时检查超级块是否未更改。

Do full check of super block once a filesystem is thawed. This namely happens when system resumes from suspend or hibernation. Accidental change by other operating systems will be detected.
一旦文件系统解冻,对超级块进行全面检查。这主要发生在系统从挂起或休眠状态恢复时。其他操作系统的意外更改将被检测到。

6.2 - discard=async on by default
6.2 - 默认情况下启用 discard=async

Devices that support trim/discard will enable the asynchronous discard for the whole filesystem.
支持 trim/discard 的设备将为整个文件系统启用异步丢弃。

6.3 - discard=async settings tuned
6.3 - 丢弃=异步设置调整

The default IOPS limit has changed from 100 to 1000 and writing value 0 to /sys/fs/btrfs/FSID/discard/iops_limit newly means to not do any throttling.
默认的 IOPS 限制已从 100 更改为 1000,并将写入值 0 到 /sys/fs/btrfs/FSID/discard/iops_limit 新意味着不进行任何限制。

6.3 - block group allocation class heuristics
6.3 - 块组分配类启发式算法

Pack files by size (up to 128k, up to 8M, more) to avoid fragmentation in block groups, assuming that file size and life time is correlated, in particular this may help during balance. The stats about the number of used classes per block group type is exported in /sys/fs/btrfs/FSID/allocation/*/size_classes.
按大小打包文件(最多 128k,最多 8M,更多),以避免块组中的碎片化,假设文件大小和寿命相关联,特别是在平衡期间可能有所帮助。关于每个块组类型使用的类数的统计数据在 /sys/fs/btrfs/FSID/allocation/*/size_classes 中导出。

6.3 - in DEV_INFO ioctl export per-device FSID
6.3 - 在 DEV_INFO ioctl 中为每个设备导出 FSID

A seeding device could have a different FSID, available in sysfs and now available via DEV_INFO ioctl.
一个种子设备可能有不同的 FSID,在 sysfs 中可用,现在也可以通过 DEV_INFO ioctl 获得。

6.3 - send utimes cache, reduced stream size
6.3 - 发送 utimes 缓存,减小流大小

Utimes for directories are emitted into the send stream only when finalizing the directory, the cache also gains significant speedups (up to 10x).
仅在最终化目录时,目录的 utimes 才会被发送到发送流中,缓存还获得了显著的加速(高达 10 倍)。

6.7 - raid-stripe-tree

New tree for logical mapping, allows some RAID modes for zoned mode.
用于逻辑映射的新树,允许某些 RAID 模式用于分区模式。

6.7 - simplified quota accounting
6.7 - 简化的配额计算

A simplified mode of qgroups accounting
简化的 qgroups 计算模式

6.7 - temporary fsid 6.7 - 临时 fsid

Mount of cloned devices is now possible, the filesystem will get a new randomly generated UUID on mount
现在可以挂载克隆设备,文件系统在挂载时将获得一个新的随机生成的 UUID

5.x

5.0 - swapfile 5.0 - 交换文件

With some limitations where COW design does not work well with the swap implementation (nodatacow file, no compression, cannot be snapshotted, not possible on multiple devices, …), as this is the most restricted but working setup, we’ll try to improve that in the future
在某些限制条件下,COW 设计与交换实现不太兼容(nodatacow 文件,无压缩,无法进行快照,无法在多个设备上实现...),因为这是最受限制但有效的设置,我们将尝试在将来改进

5.0 - metadata uuid 5.0 - 元数据 UUID

An optional incompat feature to assign a new filesystem UUID without overwriting all metadata blocks, stored only in superblock, unlike what btrfstune -u
一个可选的不兼容功能,用于分配一个新的文件系统 UUID 而不覆盖所有的元数据块,仅存储在超级块中,不像 btrfstune -u 所做的那样

5.1 - FORGET_DEV ioctl

Unregister devices previously added by the scan ioctl, same effect as if the kernel module is reloaded.
注销之前由扫描 ioctl 添加的设备,与重新加载内核模块的效果相同。

5.1 - ZSTD level 5.1 - ZSTD 等级

Allow to set the ZSTD compression level via mount option, e.g. like compress=zstd:9. The levels match the default ZSTD compression levels. The default is 3, maximum is 15.
允许通过挂载选项设置 ZSTD 压缩等级,例如像 compress=zstd:9 这样。这些等级与默认的 ZSTD 压缩等级相匹配。默认值为 3,最大值为 15。

5.2 - pre-write checks 5.2 - 预写检查

Verify metadata blocks before submitting them to the devices. This can catch consistency problems or bitflips.
在将元数据块提交到设备之前,请验证它们。这可以捕捉一致性问题或位翻转。

5.5 - more checksums 5.5 - 更多校验和

New checksum algorithms: xxhash (64b), SHA256 (256b), BLAKE2b (256b).
新的校验和算法:xxhash(64 位)、SHA256(256 位)、BLAKE2b(256 位)。

5.5 - RAID1C34

RAID1 with 3- and 4- copies (over all devices).
RAID1 与 3 和 4 个副本(覆盖所有设备)。

5.6 - async discard 5.6 - 异步丢弃

Mode of discard (mount -o discard=async) that merges freed extents to larger chunks and submits them for discard in a less intrusive way
丢弃模式(mount -o discard=async),将释放的范围合并到更大的块中,并以较少侵入性的方式提交它们进行丢弃

5.6 - device info in sysfs
5.6 - sysfs 中的设备信息

More information about device state can be found in per-filesystem sysfs directory.
可在每个文件系统的 sysfs 目录中找到有关设备状态的更多信息

5.7 - reflink/clone works on inline files
5.7 - reflink/clone 在内联文件上起作用

Inline files can be reflinked to the tail extent of other files
内联文件可以被 reflinked 到其他文件的尾部范围

5.7 - faster balance cancel
5.7 - 更快的平衡取消

More cancellation points in balance that will shorten the time to stop processing once btrfs balance cancel is called.
在平衡中增加更多的取消点,这将缩短调用 btrfs balance cancel 后停止处理的时间。

5.7 - removed flag BTRFS_SUBVOL_CREATE_ASYNC
5.7 - 移除标志 BTRFS_SUBVOL_CREATE_ASYNC

Remove support of flag BTRFS_SUBVOL_CREATE_ASYNC from subvolume creation ioctl.
从子卷创建 ioctl 中移除对标志 BTRFS_SUBVOL_CREATE_ASYNC 的支持。

5.7 - v2 of snapshot deletion ioctl
5.7 - 快照删除 ioctl 的 v2 版本

New ioctl BTRFS_IOC_SNAP_DESTROY_V2, deletion by subvolume id is now possible.
新的 ioctl BTRFS_IOC_SNAP_DESTROY_V2,现在可以通过子卷 ID 进行删除。

5.9 - mount option rescue
5.9 - 挂载选项 rescue

Unified mount option for actions that may help to access a damaged filesystem. Now supports: nologreplay, usebackuproot
可统一挂载选项,可帮助访问损坏的文件系统。现在支持:nologreplay,usebackuproot

5.9 - qgroups in sysfs
5.9 - sysfs 中的 qgroups

The information about qgroup status and relations is exported in /sys/fs/UUID/qgroups
有关 qgroup 状态和关系的信息已导出到 /sys/fs/UUID/qgroups

5.9 - FS_INFO ioctl

Export more information: checksum type, checksum size, generation, metadata_uuid
导出更多信息:校验和类型,校验和大小,生成时间,元数据 UUID

5.10 - exclusive ops in sysfs
5.10 - sysfs 中的独占操作

Export which filesystem exclusive operation is running (balance, resize, device add/delete/replace, …)
导出正在运行的文件系统独占操作(平衡、调整大小、设备添加/删除/替换,...)

5.11 - remove inode_cache
5.11 - 删除 inode_cache

Remove inode number caching feature (mount -o inode_cache)
删除 inode 编号缓存功能(挂载 -o inode_cache)

5.11 - more rescue= modes
5.11 - 更多的救援模式

Additional modes for mount option rescue=: ignorebadroots/ibadroots, ignoredatacsums/idatacsums. All are exported in /sys/fs/btrfs/features/supported_rescue_options.
为挂载选项救援= 添加额外模式:ignorebadroots/ibadroots, ignoredatacsums/idatacsums。所有这些都在 /sys/fs/btrfs/features/supported_rescue_options 中导出。

5.12 - zoned mode 5.12 - 分区模式

Support for zoned devices with special allocation/write mode to fixed-size zones. See Zoned.
支持具有特殊分配/写入模式到固定大小区域的分区设备。请参阅分区。

5.13 - supported_sectorsizes in sysfs
5.13 - 在 sysfs 中支持的扇区大小

List supported sector sizes in sysfs file /sys/fs/btrfs/features/supported_sectorsizes.
在 sysfs 文件 /sys/fs/btrfs/features/supported_sectorsizes 中列出支持的扇区大小。

5.14 - sysfs scrub bw limit
5.14 - sysfs 擦除带宽限制

Tunable bandwidth limit /sys/fs/btrfs/FSID/devinfo/DEVID/scrub_speed_max for scrub (and device replace) for a given device.
给定设备的擦除(和设备替换)的可调带宽限制 /sys/fs/btrfs/FSID/devinfo/DEVID/scrub_speed_max

5.14 - sysfs device stats
5.14 - sysfs 设备统计

The device stats can be also found in /sys/fs/btrfs/FSID/devinfo/DEVID/error_stats.
设备统计也可以在 /sys/fs/btrfs/FSID/devinfo/DEVID/error_stats 中找到。

5.14 - cancellable resize, device delete
5.14 - 可取消的调整大小,设备删除

The filesystem resize and device delete operations can be cancelled by specifying cancel as the device name.
可以通过将取消指定为设备名称来取消文件系统调整大小和设备删除操作。

5.14 - property value reset
5.14 - 属性值重置

Change how empty value is interpreted. New behaviour will delete the value and reset it to default. This affects btrfs.compression where value no sets NOCOMPRESS bit while empty value resets all compression settings (either compression or NOCOMPRESS bit).
更改空值解释方式。新行为将删除该值并将其重置为默认值。这会影响到 btrfs.compression,其中值为 no 时设置 NOCOMPRESS 位,而空值会重置所有压缩设置(无论是压缩还是 NOCOMPRESS 位)。

5.15 - fsverity

The fs-verity is a support layer that filesystems can hook into to support transparent integrity and authenticity protection of read-only files. https://www.kernel.org/doc/html/latest/filesystems/fsverity.html
fs-verity 是一个支持层,文件系统可以连接到其中,以支持只读文件的透明完整性和真实性保护。https://www.kernel.org/doc/html/latest/filesystems/fsverity.html

5.15 - idmapped mount 5.15 - idmapped 挂载

Support mount with UID/GID mapped according to another namespace. https://lwn.net/Articles/837566/
支持根据另一个命名空间映射的 UID/GID 进行挂载。https://lwn.net/Articles/837566/

5.16 - ZNS in zoned
5.16 - 分区中的 ZNS

Zoned namespaces. https://zonedstorage.io/docs/introduction/zns , https://lwn.net/Articles/865988/
分区命名空间。https://zonedstorage.io/docs/introduction/zns,https://lwn.net/Articles/865988/

5.17 - send and relocation
5.17 - 发送和重定位

Send and relocation (balance, device remove, shrink, block group reclaim) can now work in parallel.
发送和重定位(平衡、设备移除、收缩、块组回收)现在可以并行工作。

5.17 - device add vs balance
5.17 - 添加设备 vs 平衡

It is possible to add a device with paused balance.
可以在暂停平衡的情况下添加设备。

Note 注意

Since kernel 5.17.7 and btrfs-progs 5.17.1
自内核 5.17.7 和 btrfs-progs 5.17.1 起

5.17 - no warning with flushoncommit
5.17 - 使用 flushoncommit 不再出现警告

Mounting with -o flushoncommit does not trigger the (harmless) warning at each transaction commit.
使用 -o flushoncommit 挂载不会在每次事务提交时触发(无害的)警告。

Note 注意

Also backported to 5.15.27 and 5.16.13
也回溯到了 5.15.27 和 5.16.13

5.18 - zoned and DUP metadata
5.18 - 分区和 DUP 元数据

DUP metadata works with zoned mode.
DUP 元数据与分区模式兼容。

5.18 - encoded data ioctl
5.18 - 编码数据 ioctl

New ioctls to read and write pre-encoded data (i.e. no transformation and directly written as extents), now works for compressed data.
读取和写入预编码数据的新 ioctls(即无转换,直接写入为范围),现在适用于压缩数据。

5.18 - removed balance ioctl v1
5.18 - 移除平衡 ioctl v1

The support for ioctl BTRFS_IOC_BALANCE has been removed, superseded by BTRFS_IOC_BALANCE_V2 long time ago.
ioctl BTRFS_IOC_BALANCE 的支持已被移除,很久以前就被 BTRFS_IOC_BALANCE_V2 取代了。

5.18 - cross-mount reflink works
5.18 - 跨挂载的 reflink 可以工作

The VFS limitation to reflink files on separate subvolume mounts of the same filesystem has been removed.
在同一文件系统的不同子卷挂载上 reflink 文件的 VFS 限制已被移除。

5.18 - syslog error messages with filesystem state
5.18 - 具有文件系统状态的 syslog 错误消息

Messages are printed with a one letter tag (“state: X”) that denotes in which state the filesystem was at this point:
消息以一个字母标记(“状态:X”)打印,表示文件系统在此时处于哪种状态:

  • A - transaction aborted (permanent)
    A - 事务中止(永久)

  • E - filesystem error (permanent)
    E - 文件系统错误(永久)

  • M - remount in progress (transient)
    M - 重新挂载进行中(短暂)

  • R - device replace in progress (transient)
    R - 设备替换进行中(短暂)

  • C - checksum checks disabled by mount option (rescue=ignoredatacsums)
    C - 检查和校验由挂载选项禁用(rescue=ignoredatacsums)

  • L - log tree replay did not complete due to some error
    L - 由于某些错误,日志树重放未完成

5.18 - tree-checker verifies transaction id pre-write
5.18 - 树检查程序验证事务 ID 预写

Metadata buffer to be written gets an extra check if the stored transaction number matches the current state of the filesystem.
要写入的元数据缓冲区在存储的事务号与文件系统当前状态匹配时会进行额外检查。

5.19 - subpage support pages > 4KiB
5.19 - 子页面支持页面 > 4KiB

Metadata node size is supported regardless of the CPU page size (minimum size is 4KiB), data sector size is supported <= page size. Additionally subpage also supports RAID56.
元数据节点大小受支持,无论 CPU 页大小如何(最小大小为 4KiB),数据扇区大小受支持 <= 页大小。此外,子页面还支持 RAID56。

5.19 - per-type background threshold for reclaim
5.19 - 用于回收的每种类型的后台阈值

Add sysfs tunable for background reclaim threshold for all block group types (data, metadata, system).
为所有块组类型(数据、元数据、系统)添加用于后台回收阈值的 sysfs 可调参数。

5.19 - automatically repair device number mismatch
5.19 - 自动修复设备编号不匹配

Device information is stored in two places, the number in the super block and items in the device tree. When this is goes out of sync, e.g. by device removal short before unmount, the next mount could fail. The b-tree is an authoritative information an can be used to override the stale value in the superblock.
设备信息存储在两个地方,即超级块中的编号和设备树中的项目。当这两者不同步时,例如在卸载之前短时间内移除设备,下一次挂载可能会失败。B-树是权威信息,可以用来覆盖超级块中的陈旧值。

5.19 - defrag can convert inline files to regular ones
5.19 - 碎片整理可以将内联文件转换为常规文件

The logic has been changed so that inline files are considered for defragmentation even if the mount option max_inline would prevent that. No defragmentation might happen but the inlined files are not skipped.
逻辑已更改,使得即使挂载选项 max_inline 可能会阻止内联文件进行碎片整理,内联文件也会被考虑进行碎片整理。可能不会发生碎片整理,但内联文件不会被跳过。

5.19 - explicit minimum zone size is 4MiB
5.19 - 显式最小区域大小为 4MiB

Set the minimum limit of zone on zoned devices to 4MiB. Real devices zones are much larger, this is for emulated devices.
将分区设备上的区域最小限制设置为 4MiB。真实设备的区域要大得多,这是为了模拟设备。

5.19 - sysfs tunable for automatic block group reclaim
5.19 - 用于自动块组回收的 sysfs 可调参数

Add possibility to set a threshold to automatically reclaim block groups also in non-zoned mode. By default completely empty block groups are reclaimed automatically but the threshold can be tuned in /sys/fs/btrfs/FSID/allocation/PROFILE/bg_reclaim_threshold.
添加设置阈值的可能性,以便在非分区模式下自动回收块组。默认情况下,完全空的块组会被自动回收,但阈值可以在 /sys/fs/btrfs/FSID/allocation/PROFILE/bg_reclaim_threshold 中调整。

5.19 - tree-checker verifies metadata block ownership
5.19 - 树检查器验证元数据块的所有权

Additional check done by tree-checker to verify relationship between a tree block and it’s tree root owner.
树检查器执行的附加检查,用于验证树块与其树根所有者之间的关系。

4.x

4.0 - store otime 4.0 - 存储 otime

Save creation time (otime) for all new files and directories. For future use, current tool cannot read it directly.
保存所有新文件和目录的创建时间(otime)。将来使用,当前工具无法直接读取。

4.2 - rootid ioctl accessible
4.2 - rootid ioctl 可访问

The INO_LOOKUP will return root id (id of the containing subvolume), unrestricted and to all users if the treeid is 0.
如果 treeid 为 0,则 INO_LOOKUP 将返回根 id(包含子卷的 id),无限制且对所有用户开放。

4.2 - dedupe possible on the same inode
4.2 - 相同 inode 上可能进行重复数据删除。

The EXTENT_SAME ioctl will accept the same inode as source and destination (ranges must not overlap).
EXTENT_SAME ioctl 将接受与源和目标相同的 inode(范围不能重叠)。

4.3 - trim all free space
4.3 - 修剪所有的空闲空间

Trim will be performed also on the space that’s not allocated by the chunks, not only free space within the allocated chunks.
修剪也将在未被块分配的空间上执行,不仅仅是在已分配块内的空闲空间。

4.4 - balance filter updates
4.4 - 平衡过滤器更新

Enhanced syntax and new balance filters:
增强语法和新的平衡过滤器:

  • limit=min..max 限制=最小值..最大值

  • usage=min..max 使用=min..max

  • stripes=min..max 条纹=min..max

4.5 - free space tree
4.5 - 空闲空间树

Improved implementation of free space cache (aka v2), using b-trees.
改进的自由空间缓存实现(也称为 v2),使用 B 树。

Note 注意

Default since btrfs-progs 5.15, Kernel 4.9 fixes endianity bugs on big-endian machines, x86* is ok
自 btrfs-progs 5.15 起默认,Kernel 4.9 修复了大端机器上的字节序错误,x86*没问题。

4.5 - balance filter updates
4.5 - 平衡过滤器更新。

Conversion to data/DUP profile possible through balance filters -- on single-device filesystem.
通过平衡过滤器将数据/ DUP 配置文件转换为单设备文件系统中可能的。

Note 注意

mkfs.btrfs allows creating DUP on single device in the non-mixed mode since 4.4
mkfs.btrfs 允许在非混合模式下自 4.4 版本以来在单个设备上创建 DUP。

4.6 - max_inline default 4.6 - max_inline 默认值

The default value of max_inline changed to 2048.
max_inline 的默认值更改为 2048。

4.6 - read features from control device
4.6 - 从控制设备读取功能

The existing ioctl GET_SUPPORTED_FEATURES can be now used on the control device (/dev/btrfs-control) and returns the supported features without any mounted filesystem.
现有的 ioctl GET_SUPPORTED_FEATURES 现在可以在控制设备( /dev/btrfs-control )上使用,并在没有任何已挂载的文件系统的情况下返回支持的功能。

4.7 - delete device by id
4.7 - 按 ID 删除设备

Add new ioctl RM_DEV_V2, pass device to be deleted by its ID.
添加新的 ioctl RM_DEV_V2,通过其 ID 传递要删除的设备。

4.7 - more renameat2 modes
4.7 - 更多的 renameat2 模式

Add support for RENAME_EXCHANGE and RENAME_WHITEOUT to renameat2 syscall. This also means that overlayfs is now supported on top of btrfs.
为 renameat2 系统调用添加对 RENAME_EXCHANGE 和 RENAME_WHITEOUT 的支持。这也意味着 overlayfs 现在可以在 btrfs 之上使用。

4.7 - balance filter updates
4.7 - 平衡过滤器更新

Conversion to data/DUP profile possible through balance filters -- on multiple-device filesystems.
可通过平衡过滤器将数据/DUP 配置转换为多设备文件系统。

Note 注意

mkfs.btrfs allows creating DUP on multiple devices since 4.5.1
mkfs.btrfs 允许自 4.5.1 版本起在多个设备上创建 DUP

4.12 - RAID56: auto repair
4.12 - RAID56:自动修复

Scrub will attempt auto-repair (similar to raid1/raid10)
Scrub 将尝试自动修复(类似于 raid1/raid10)

4.13 - statx

Support for the enhanced statx syscall; file creation timestamp
支持增强的 statx 系统调用; 文件创建时间戳

4.13 - sysfs qgroups override
4.13 - sysfs qgroups 覆盖

qgroups: new sysfs control file to allow temporary quota override with CAP_SYS_RESOURCE
qgroups:新的 sysfs 控制文件,允许使用 CAP_SYS_RESOURCE 进行临时配额覆盖

4.13 - deprecated mount option alloc_start
4.13 - 已弃用的挂载选项 alloc_start

That was a debugging helper, not used and not supposed to be used nowadays.
那是一个调试辅助工具,现在不再使用,也不应该再使用。

4.14 - ZSTD compression 4.14 - ZSTD 压缩

New compression algorithm ZSTD, supposedly better ratio/speed performance.
新的压缩算法 ZSTD,据说具有更好的比率/速度性能。

4.14 - improved degraded mount
4.14 - 改进了降级挂载

Allow degraded mount based on the chunk constraints, not device number constraints. E.g. when one device is missing but the remaining one holds all single chunks.
根据块约束而不是设备数量约束允许降级挂载。例如,当一个设备丢失但剩下的一个设备仍然持有所有单个块时。

4.14 - deprecated user transaction ioctl
4.14 - 弃用的用户事务 ioctl

BTRFS_IOC_TRANS_START and BTRFS_IOC_TRANS_END, no known users, tricky to use; scheduled to be removed in 4.17
BTRFS_IOC_TRANS_START 和 BTRFS_IOC_TRANS_END,没有已知用户,使用起来有技巧性;计划在 4.17 中移除

4.14 - refine SSD optimizations
4.14 - 优化 SSD 优化

The mount option ssd does not make any assumptions about block layout or management by the device anymore, leaving only the speedups based on low seek cost active. This could avoid some corner cases leading to excessive fragmentation. https://git.kernel.org/linus/583b723151794e2ff1691f1510b4e43710293875 The story so far.
挂载选项 ssd 不再对设备的块布局或管理做出任何假设,仅基于低寻道成本的加速。这可以避免一些导致过度碎片化的特殊情况。https://git.kernel.org/linus/583b723151794e2ff1691f1510b4e43710293875 到目前为止的故事。

4.15 - overlayfs

Overlayfs can now use btrfs as the lower filesystem.
Overlayfs 现在可以使用 btrfs 作为底层文件系统。

4.15 - ref-verify

Debugging functionality to verify extent references. New mount option ref-verify, must be built with CONFIG_BTRFS_FS_REF_VERIFY.
用于验证范围引用的调试功能。新的挂载选项 ref-verify,必须使用 CONFIG_BTRFS_FS_REF_VERIFY 构建。

4.15 - ZLIB level 4.15 - ZLIB 等级

Allow to set the ZLIB compression level via mount option, e.g. like compress=zlib:9. The levels match the default ZLIB compression levels. The default is 3.
允许通过挂载选项设置 ZLIB 压缩级别,例如像 compress=zlib:9 这样。这些级别与默认的 ZLIB 压缩级别相匹配。默认值为 3。

4.15 - v2 of LOGICAL_INO ioctl
4.15 - LOGICAL_INO ioctl 的 v2 版本

An enhanced version of ioctl that can translate logical extent offset to inode numbers, “who owns this block”. For certain use cases the V1 performs bad and this is addressed by V2. See for more https://git.kernel.org/linus/d24a67b2d997c860a42516076f3315c2ad2d2884 .
一个增强版本的 ioctl,可以将逻辑范围偏移转换为 inode 号,“谁拥有这个块”。对于某些使用情况,V1 的性能较差,这个问题在 V2 中得到解决。更多信息请参见 https://git.kernel.org/linus/d24a67b2d997c860a42516076f3315c2ad2d2884 。

4.15 - compression heuristics
4.15 - 压缩启发式

Apply a few heuristics to the data before they’re compressed to decide if it’s likely to gain any space savings. The methods: frequency sampling, repeated pattern detection, Shannon entropy calculation.
在对数据进行压缩之前应用一些启发式方法,以决定是否可能获得任何空间节省。这些方法包括:频率采样、重复模式检测、香农熵计算。

4.16 - fallocate: zero range
4.16 - fallocate: 零范围

Mode of the fallocate syscall to zero file range.
fallocate 系统调用的模式,用于将文件范围置零。

4.17 - removed user transaction ioctl
4.17 - 移除用户事务 ioctl

Deprecated in 4.14, see above.
在 4.14 版本中已弃用,请参见上文。

4.17 - rmdir on subvolumes
4.17 - 在子卷上执行 rmdir

Allow rmdir to delete an empty subvolume.
允许 rmdir 删除空子卷。

4.18 - XFLAGS ioctl

Add support for ioctl FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR, successor of FS_IOC_SETFLAGS/FS_IOC_GETFLAGS ioctl. Currently supports: APPEND, IMMUTABLE, NOATIME, NODUMP, SYNC. Note that the naming is very confusing, though it’s named xattr, it does not mean the extended attributes. It should be referenced as extended inode flags or xflags.
添加对 ioctl FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR 的支持,这是 FS_IOC_SETFLAGS/FS_IOC_GETFLAGS ioctl 的后继。目前支持:APPEND、IMMUTABLE、NOATIME、NODUMP、SYNC。请注意,命名非常令人困惑,尽管它被命名为 xattr,但并不意味着扩展属性。应该将其称为扩展索引标志或 xflags。

4.18 - EXTENT_SAME ioctl / 16MiB chunks
4.18 - EXTENT_SAME ioctl / 16MiB 块

The range for out-of-band deduplication implemented by the EXTENT_SAME ioctl will split the range into 16MiB chunks. Up to now this was the overall limit and effectively only the first 16MiB was deduplicated.
通过 EXTENT_SAME ioctl 实现的带外去重范围将范围分割为 16MiB 块。到目前为止,这是总体限制,实际上只有第一个 16MiB 被去重。

4.18 - GET_SUBVOL_INFO ioctl

New ioctl to read subvolume information (id, directory name, generation, flags, UUIDs, time). This does not require root permissions, only the regular access to to the subvolume.
读取子卷信息的新 ioctl(id、目录名称、生成、标志、UUID、时间)。这不需要 root 权限,只需要对子卷的常规访问权限。

4.18 - GET_SUBVOL_ROOTREF ioctl
4.18 - 获取子卷根引用的 ioctl

New ioctl to enumerate subvolume references of a given subvolume. This does not require root permissions, only the regular access to to the subvolume.
用于枚举给定子卷的子卷引用的新 ioctl。这不需要 root 权限,只需要对子卷的常规访问权限。

4.18 - INO_LOOKUP_USER ioctl

New ioctl to lookup path by inode number. This does not require root permissions, only the regular access to to the subvolume, unlike the INO_LOOKUP ioctl.
通过 inode 号查找路径的新 ioctl。这不需要 root 权限,只需要对子卷的常规访问权限,不像 INO_LOOKUP ioctl。

4.19 - defrag ro/rw 4.19 - defrag 只读/读写

Allow to run defrag on files that are normally accessible for read-write, but are currently opened in read-only mode.
允许对通常可读写访问但当前以只读模式打开的文件运行 defrag。

3.x

3.0 - scrub 3.0 - 擦洗

Read all data and verify checksums, repair if possible.
读取所有数据并验证校验和,如有可能则修复。

3.2 - auto raid repair
3.2 - 自动 RAID 修复

Automatic repair of broken data from a good copy
从良好副本自动修复损坏数据

3.2 - root backups 3.2 - 根备份

Save a few previous versions of the most important tree roots at commit time, used by -o recovery
在提交时保存几个最重要的树根的先前版本,由 -o recovery 使用

3.3 - integrity checker 3.3 - 完整性检查器

Optional infrastructure to verify integrity of written metadata blocks
用于验证写入的元数据块完整性的可选基础设施

3.3 - backref walking 3.3 - 回溯步行

Groundwork to allow tracking owner of blocks, used via inspect-internal
为允许跟踪块所有者而进行的基础工作,通过 inspect-internal 使用

3.3 - restriper 3.3 - 重新分配者

RAID profiles can be changed on-line, balance filters
RAID 配置文件可以在线更改,平衡过滤器

3.4 - big metadata blocks
3.4 - 大型元数据块

Support for metadata blocks larger than page size
支持大于页面大小的元数据块

Note 注意

Default nodesize is 16KiB since btrfs-progs 3.12
自 btrfs-progs 3.12 起,默认节点大小为 16KiB

3.4 - error handling 3.4 - 错误处理

Generic infrastructure for graceful error handling (EIO)
优雅错误处理(EIO)的通用基础设施

3.5 - device statistics 3.5 - 设备统计

Persistent statistics about device errors
设备错误的持久统计

3.5 - fsync speedup 3.5 - fsync 速度提升

Noticeable improvements in fsync() implementation
fsync() 实现中的显著改进

3.6 - qgroups

Subvolume-aware quotas 子卷感知配额

3.6 - send/receive 3.6 - 发送/接收

Ability to transfer one filesystem via a data stream (full or incremental) and apply the changes on a remote filesystem.
通过数据流传输一个文件系统的能力(完整或增量),并在远程文件系统上应用更改。

3.7 - extrefs 3.7 - 外部引用

Hardlink count limit is lifted to 65536.
硬链接计数限制提高到 65536。

Note 注意

Default since btrfs-progs 3.12
自 btrfs-progs 3.12 起默认。

3.7 - hole punching 3.7 - 打孔。

Implement the FALLOC_FL_PUNCH_HOLE mode of fallocate.
实现 fallocate 的 FALLOC_FL_PUNCH_HOLE 模式。

3.8 - device replace 3.8 - 设备替换

Efficient replacement of existing device (add/remove in one go).
高效替换现有设备(一次性添加/移除)。

3.9 - raid 5/6 (incomplete)
3.9 - RAID 5/6(不完整)

Basic support for RAID5/6 profiles, no crash resiliency, replace and scrub support.
RAID5/6 配置文件的基本支持,无崩溃恢复能力,替换和扫描支持。

3.9 - snapshot-aware defrag
3.9 - 快照感知碎片整理

Defrag does not break links between shared extents (snapshots, reflinked files).
碎片整理不会破坏共享范围(快照、引用文件)之间的链接。

Note 注意

Disabled since 3.14 (and backported to some stable kernel versions) due to problems. Has been completely removed in 5.6.
自 3.14 版本以来已禁用(并回溯到一些稳定的内核版本)由于问题。在 5.6 版本中已完全移除。

3.9 - lightweight send 3.9 - 轻量级发送

A mode of send that does not add the actual file data to the stream.
一种发送模式,不会将实际文件数据添加到流中。

3.9 - on-line label set/get
3.9 - 在线标签设置/获取

Label editable on mounted filesystems.
在已挂载的文件系统上可编辑标签。

3.10 - skinny metadata
3.10 - 瘦元数据

Reduced metadata size (format change) of extents.
减少范围的元数据大小(格式更改)。

Note 注意

Default since btrfs-progs 3.18
自 btrfs-progs 3.18 起的默认值

3.10 - qgroup rescan 3.10 - qgroup 重新扫描

Sync qgroups with existing filesystem data.
与现有文件系统数据同步 qgroups。

3.12 - UUID tree 3.12 - UUID 树

A map of subvolume/UUID that vastly speeds up send/receive.
大大加快发送/接收速度的子卷/UUID 映射。

3.12 - out-of-bound deduplication
3.12 - 超出边界的去重

Support for deduplicating extents on a given set of files.
支持对给定文件集上的范围进行去重。

3.14 - no-holes 3.14 - 无孔

No extent representation for file holes (format change), may reduce overall metadata consumption
文件孔的无范围表示(格式更改),可能会减少整体元数据消耗

3.14 - feature bits in sysfs
3.14 - sysfs 中的特性位

/sys/fs/btrfs exports various bits about filesystem capabilities and feature support
/sys/fs/btrfs 导出有关文件系统功能和特性支持的各种信息

3.16 - O_TMPFILE

Mode of open() to safely create a temporary file
打开()的模式,安全地创建临时文件

3.16 - search ioctl v2
3.16 - 搜索 ioctl v2

The extended SEARCH_TREE ioctl able to get more than a 4k data
扩展的 SEARCH_TREE ioctl 能够获取超过 4k 数据

3.18 - auto block group reclaim
3.18 - 自动块组回收

Automatically remove block groups (aka. chunks) that become completely empty.
自动删除完全为空的块组(也称为块)。

3.19 - RAID56: scrub, replace
3.19 - RAID56:扫描,替换

Scrub and device replace works on RAID56 filesystems.
在 RAID56 文件系统上,扫描和设备替换功能可用。