mirror of
https://github.com/kdave/btrfs-progs
synced 2025-05-01 23:48:00 +00:00
btrfs-progs: docs: typo fixups and formatting updates
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
b80c1d0c7f
commit
4f7bf100a9
@ -64,7 +64,7 @@ a source file, destination file and the range. The blocks from both files are
|
|||||||
compared for exact match before merging to the same range (i.e. there's no
|
compared for exact match before merging to the same range (i.e. there's no
|
||||||
hash based comparison). Pages representing the extents in memory are locked
|
hash based comparison). Pages representing the extents in memory are locked
|
||||||
prior to deduplication and prevent concurrent modification by buffered writes
|
prior to deduplication and prevent concurrent modification by buffered writes
|
||||||
or mmaped writes. Blocks are compared byte by byte and not using any hash-based
|
or mmapped writes. Blocks are compared byte by byte and not using any hash-based
|
||||||
approach, i.e. the existing checksums are not used.
|
approach, i.e. the existing checksums are not used.
|
||||||
|
|
||||||
Limitations, compatibility
|
Limitations, compatibility
|
||||||
|
@ -36,5 +36,5 @@ for larger code blocks.
|
|||||||
|
|
||||||
Each feature should be tracked in an issue with label **experimental** (list of
|
Each feature should be tracked in an issue with label **experimental** (list of
|
||||||
active issues https://github.com/kdave/btrfs-progs/labels/experimental), with a
|
active issues https://github.com/kdave/btrfs-progs/labels/experimental), with a
|
||||||
description and a todo list items. Individual tasks can be tracked in other
|
description and a TODO list items. Individual tasks can be tracked in other
|
||||||
issues if needed.
|
issues if needed.
|
||||||
|
@ -19,7 +19,7 @@ features see [[Status]] page.
|
|||||||
Automatic repair of broken data from a good copy
|
Automatic repair of broken data from a good copy
|
||||||
|
|
||||||
3.2 - root backups
|
3.2 - root backups
|
||||||
Save a few previous versions of the most imporant tree roots at commit time, used by *-o recovery*
|
Save a few previous versions of the most important tree roots at commit time, used by *-o recovery*
|
||||||
|
|
||||||
3.3 - integrity checker
|
3.3 - integrity checker
|
||||||
Optional infrastructure to verify integrity of written metadata blocks
|
Optional infrastructure to verify integrity of written metadata blocks
|
||||||
@ -57,14 +57,14 @@ features see [[Status]] page.
|
|||||||
.. note::
|
.. note::
|
||||||
Default since btrfs-progs 3.12
|
Default since btrfs-progs 3.12
|
||||||
|
|
||||||
3.7 - hole puching
|
3.7 - hole punching
|
||||||
Implement the FALLOC_FL_PUNCH_HOLE mode of *fallocate*
|
Implement the FALLOC_FL_PUNCH_HOLE mode of *fallocate*
|
||||||
|
|
||||||
3.8 - device replace
|
3.8 - device replace
|
||||||
Efficient replacement of existing device (add/remove in one go)
|
Efficient replacement of existing device (add/remove in one go)
|
||||||
|
|
||||||
3.9 - raid 5/6 *(incomplete)*
|
3.9 - raid 5/6 *(incomplete)*
|
||||||
Basic support for RAD5/6 profiles, no crash resiliency, replace and scrub support
|
Basic support for RAID5/6 profiles, no crash resiliency, replace and scrub support
|
||||||
|
|
||||||
3.9 - snapshot-aware defrag
|
3.9 - snapshot-aware defrag
|
||||||
Defrag does not break links between shared extents (snapshots, reflinked files)
|
Defrag does not break links between shared extents (snapshots, reflinked files)
|
||||||
@ -88,10 +88,10 @@ features see [[Status]] page.
|
|||||||
3.10 - qgroup rescan
|
3.10 - qgroup rescan
|
||||||
Sync qgroups with existing filesystem data
|
Sync qgroups with existing filesystem data
|
||||||
|
|
||||||
3.12 - uuid tree
|
3.12 - UUID tree
|
||||||
A map of subvolume/UUID that vastly speeds up send/receive
|
A map of subvolume/UUID that vastly speeds up send/receive
|
||||||
|
|
||||||
3.12 - out-of-bound dedup
|
3.12 - out-of-bound deduplication
|
||||||
Support for deduplicating extents on a given set of files.
|
Support for deduplicating extents on a given set of files.
|
||||||
|
|
||||||
3.14 - no-holes
|
3.14 - no-holes
|
||||||
@ -106,10 +106,10 @@ features see [[Status]] page.
|
|||||||
3.16 - search ioctl v2
|
3.16 - search ioctl v2
|
||||||
The extended SEARCH_TREE ioctl able to get more than a 4k data
|
The extended SEARCH_TREE ioctl able to get more than a 4k data
|
||||||
|
|
||||||
3.18 - auto blockgroup reclaim
|
3.18 - auto block group reclaim
|
||||||
Automatically remove blockgroups (aka. chunks) that become completely empty.
|
Automatically remove block groups (aka. chunks) that become completely empty.
|
||||||
|
|
||||||
3.19 - raid56: scrub, replace
|
3.19 - RAID56: scrub, replace
|
||||||
Scrub and device replace works on RAID56 filesystems.
|
Scrub and device replace works on RAID56 filesystems.
|
||||||
|
|
||||||
4.x
|
4.x
|
||||||
@ -145,7 +145,7 @@ features see [[Status]] page.
|
|||||||
big-endian machines, x86* is ok
|
big-endian machines, x86* is ok
|
||||||
|
|
||||||
4.5 - balance filter updates
|
4.5 - balance filter updates
|
||||||
Conversion to data/DUP profile possible through balance filters -- on single-device filesytem.
|
Conversion to data/DUP profile possible through balance filters -- on single-device filesystem.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
mkfs.btrfs allows creating DUP on single device in the non-mixed mode since 4.4
|
mkfs.btrfs allows creating DUP on single device in the non-mixed mode since 4.4
|
||||||
@ -172,7 +172,7 @@ features see [[Status]] page.
|
|||||||
.. note::
|
.. note::
|
||||||
mkfs.btrfs allows creating DUP on multiple devices since 4.5.1
|
mkfs.btrfs allows creating DUP on multiple devices since 4.5.1
|
||||||
|
|
||||||
4.12 - raid56: auto repair
|
4.12 - RAID56: auto repair
|
||||||
Scrub will attempt auto-repair (similar to raid1/raid10)
|
Scrub will attempt auto-repair (similar to raid1/raid10)
|
||||||
|
|
||||||
4.13 - statx
|
4.13 - statx
|
||||||
@ -189,7 +189,7 @@ features see [[Status]] page.
|
|||||||
|
|
||||||
4.14 - improved degraded mount
|
4.14 - improved degraded mount
|
||||||
Allow degraded mount based on the chunk constraints, not device number
|
Allow degraded mount based on the chunk constraints, not device number
|
||||||
constraints. Eg. when one device is missing but the remaining one holds
|
constraints. E.g. when one device is missing but the remaining one holds
|
||||||
all *single* chunks.
|
all *single* chunks.
|
||||||
|
|
||||||
4.14 - *deprecated user transaction ioctl*
|
4.14 - *deprecated user transaction ioctl*
|
||||||
@ -211,14 +211,14 @@ features see [[Status]] page.
|
|||||||
Debugging functionality to verify extent references. New mount option
|
Debugging functionality to verify extent references. New mount option
|
||||||
<i>ref-verify</i>, must be built with CONFIG_BTRFS_FS_REF_VERIFY.
|
<i>ref-verify</i>, must be built with CONFIG_BTRFS_FS_REF_VERIFY.
|
||||||
|
|
||||||
4.15 - zlib level
|
4.15 - ZLIB level
|
||||||
Allow to set the zlib compression level via mount option, e.g. like
|
Allow to set the ZLIB compression level via mount option, e.g. like
|
||||||
*compress=zlib:9*. The levels match the default zlib compression
|
*compress=zlib:9*. The levels match the default ZLIB compression
|
||||||
levels. The default is 3.
|
levels. The default is 3.
|
||||||
|
|
||||||
4.15 - v2 of LOGICAL_INO ioctl
|
4.15 - v2 of LOGICAL_INO ioctl
|
||||||
An enhanced version of ioctl that can translate logical extent offset
|
An enhanced version of ioctl that can translate logical extent offset
|
||||||
to inode numbers, "who owns this block". For certain usecases the V1
|
to inode numbers, "who owns this block". For certain use cases the V1
|
||||||
performs bad and this is addressed by V2.
|
performs bad and this is addressed by V2.
|
||||||
[https://git.kernel.org/linus/d24a67b2d997c860a42516076f3315c2ad2d2884
|
[https://git.kernel.org/linus/d24a67b2d997c860a42516076f3315c2ad2d2884
|
||||||
Read more.]
|
Read more.]
|
||||||
@ -267,7 +267,7 @@ features see [[Status]] page.
|
|||||||
INO_LOOKUP ioctl.
|
INO_LOOKUP ioctl.
|
||||||
|
|
||||||
4.19 - defrag ro/rw
|
4.19 - defrag ro/rw
|
||||||
Allow to run defrag on files that are normally accesible for
|
Allow to run defrag on files that are normally accessible for
|
||||||
read-write, but are currently opened in read-only mode.
|
read-write, but are currently opened in read-only mode.
|
||||||
|
|
||||||
5.x
|
5.x
|
||||||
@ -288,9 +288,9 @@ features see [[Status]] page.
|
|||||||
Unregister devices previously added by the scan ioctl, same effect as
|
Unregister devices previously added by the scan ioctl, same effect as
|
||||||
if the kernel module is reloaded.
|
if the kernel module is reloaded.
|
||||||
|
|
||||||
5.1 - zstd level
|
5.1 - ZSTD level
|
||||||
Allow to set the zstd compression level via mount option, e.g. like
|
Allow to set the ZSTD compression level via mount option, e.g. like
|
||||||
*compress=zstd:9*. The levels match the default zstd compression
|
*compress=zstd:9*. The levels match the default ZSTD compression
|
||||||
levels. The default is 3, maximum is 15.
|
levels. The default is 3, maximum is 15.
|
||||||
|
|
||||||
5.2 - pre-write checks
|
5.2 - pre-write checks
|
||||||
@ -315,7 +315,7 @@ features see [[Status]] page.
|
|||||||
|
|
||||||
5.7 - faster balance cancel
|
5.7 - faster balance cancel
|
||||||
More cancellation points in balance that will shorten the time to stop
|
More cancellation points in balance that will shorten the time to stop
|
||||||
processing once <tt>btrfs balance cancel</tt> is called.
|
processing once ``btrfs balance cancel`` is called.
|
||||||
|
|
||||||
5.7 - *removed flag BTRFS_SUBVOL_CREATE_ASYNC*
|
5.7 - *removed flag BTRFS_SUBVOL_CREATE_ASYNC*
|
||||||
Remove support of flag BTRFS_SUBVOL_CREATE_ASYNC from subvolume creation ioctl.
|
Remove support of flag BTRFS_SUBVOL_CREATE_ASYNC from subvolume creation ioctl.
|
||||||
@ -335,7 +335,7 @@ features see [[Status]] page.
|
|||||||
|
|
||||||
5.10 - exclusive ops in sysfs
|
5.10 - exclusive ops in sysfs
|
||||||
Export which filesystem exclusive operation is running (balance,
|
Export which filesystem exclusive operation is running (balance,
|
||||||
resize, device add/delete/relpace, ...)
|
resize, device add/delete/replace, ...)
|
||||||
|
|
||||||
5.11 - remove *inode_cache*
|
5.11 - remove *inode_cache*
|
||||||
Remove inode number caching feature (mount -o inode_cache)
|
Remove inode number caching feature (mount -o inode_cache)
|
||||||
@ -375,7 +375,7 @@ features see [[Status]] page.
|
|||||||
files. https://www.kernel.org/doc/html/latest/filesystems/fsverity.html
|
files. https://www.kernel.org/doc/html/latest/filesystems/fsverity.html
|
||||||
|
|
||||||
5.15 - idmapped mount
|
5.15 - idmapped mount
|
||||||
Support mount with uid/gid mapped according to another namespace.
|
Support mount with UID/GID mapped according to another namespace.
|
||||||
https://lwn.net/Articles/837566/
|
https://lwn.net/Articles/837566/
|
||||||
|
|
||||||
5.16 - ZNS in zoned
|
5.16 - ZNS in zoned
|
||||||
@ -393,7 +393,7 @@ features see [[Status]] page.
|
|||||||
Since kernel 5.17.7 and btrfs-progs 5.17.1
|
Since kernel 5.17.7 and btrfs-progs 5.17.1
|
||||||
|
|
||||||
5.17 - *no warning with flushoncommit*
|
5.17 - *no warning with flushoncommit*
|
||||||
Mounting with *-o flushoncommit* does not triggher the (harmless)
|
Mounting with *-o flushoncommit* does not trigger the (harmless)
|
||||||
warning at each transaction commit
|
warning at each transaction commit
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -439,7 +439,7 @@ features see [[Status]] page.
|
|||||||
types (data, metadata, system).
|
types (data, metadata, system).
|
||||||
|
|
||||||
5.19 - automatically repair device number mismatch
|
5.19 - automatically repair device number mismatch
|
||||||
Device information is storead in two places, the number in the super
|
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.
|
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.
|
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 b-tree is an authoritative information an can be used to override
|
||||||
@ -470,7 +470,7 @@ features see [[Status]] page.
|
|||||||
6.0 - send protocol v2
|
6.0 - send protocol v2
|
||||||
Send protocol update that adds new commands and extends existing
|
Send protocol update that adds new commands and extends existing
|
||||||
functionality to write large data chunks. Compressed (and encrypted)
|
functionality to write large data chunks. Compressed (and encrypted)
|
||||||
extents can be optionally emitted and transfered as-is without the need
|
extents can be optionally emitted and transferred as-is without the need
|
||||||
to recompress (or reencrypt) on the receiving side.
|
to recompress (or reencrypt) on the receiving side.
|
||||||
|
|
||||||
6.0 - sysfs exports commit stats
|
6.0 - sysfs exports commit stats
|
||||||
@ -506,7 +506,7 @@ features see [[Status]] page.
|
|||||||
An incompatible change that has to be enabled at mkfs time. Add a new
|
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
|
b-tree item that stores information about block groups in a compact way
|
||||||
that significantly improves mount time that's usually long due to
|
that significantly improves mount time that's usually long due to
|
||||||
fragmentation and scatterd b-tree items tracking the individual block
|
fragmentation and scattered b-tree items tracking the individual block
|
||||||
groups. Requires and also enables the free-space-tree and no-holes
|
groups. Requires and also enables the free-space-tree and no-holes
|
||||||
features.
|
features.
|
||||||
|
|
||||||
@ -518,7 +518,7 @@ features see [[Status]] page.
|
|||||||
The overall status of qgroups are exported in
|
The overall status of qgroups are exported in
|
||||||
/sys/sys/fs/btrfs/FSID/qgroups/ .
|
/sys/sys/fs/btrfs/FSID/qgroups/ .
|
||||||
|
|
||||||
6.1 - check that subperblock is unchnaged at thaw time
|
6.1 - check that subperblock is unchanged at thaw time
|
||||||
Do full check of super block once a filesystem is thawed. This namely
|
Do full check of super block once a filesystem is thawed. This namely
|
||||||
happens when system resumes from suspend or hibernation. Accidental
|
happens when system resumes from suspend or hibernation. Accidental
|
||||||
change by other operating systems will be detected.
|
change by other operating systems will be detected.
|
||||||
|
@ -83,7 +83,7 @@ copy-on-write
|
|||||||
way. In COW filesystems, files tend to fragment as they are modified.
|
way. In COW filesystems, files tend to fragment as they are modified.
|
||||||
Copy-on-write is also used in the implementation of *snapshots* and
|
Copy-on-write is also used in the implementation of *snapshots* and
|
||||||
*reflink copies*. A copy-on-write filesystem is, in theory,
|
*reflink copies*. A copy-on-write filesystem is, in theory,
|
||||||
'always' consistent, provided the underlying hardware supports
|
*always* consistent, provided the underlying hardware supports
|
||||||
*barriers*.
|
*barriers*.
|
||||||
|
|
||||||
COW
|
COW
|
||||||
@ -142,8 +142,8 @@ fallocate
|
|||||||
Command line tool in util-linux, and a syscall, that reserves space in
|
Command line tool in util-linux, and a syscall, that reserves space in
|
||||||
the filesystem for a file, without actually writing any file data to
|
the filesystem for a file, without actually writing any file data to
|
||||||
the filesystem. First data write will turn the preallocated extents
|
the filesystem. First data write will turn the preallocated extents
|
||||||
into regular ones. See <code>man 1 fallocate</code> and <code>man 2
|
into regular ones. See *fallocate(1)* and *fallocate(2)* manual pages
|
||||||
fallocate</code> for more details.
|
for more details.
|
||||||
|
|
||||||
filefrag
|
filefrag
|
||||||
A tool to show the number of extents in a file, and hence the amount of
|
A tool to show the number of extents in a file, and hence the amount of
|
||||||
@ -160,7 +160,7 @@ free space cache
|
|||||||
|
|
||||||
fsync
|
fsync
|
||||||
On Unix and Unix-like operating systems (of which Linux is the latter),
|
On Unix and Unix-like operating systems (of which Linux is the latter),
|
||||||
the ``lfsync()`` system call causes all buffered file
|
the ``fsync()`` system call causes all buffered file
|
||||||
descriptor related data changes to be flushed to the underlying block
|
descriptor related data changes to be flushed to the underlying block
|
||||||
device. When a file is modified on a modern operating system the
|
device. When a file is modified on a modern operating system the
|
||||||
changes are generally not written to the disk immediately but rather
|
changes are generally not written to the disk immediately but rather
|
||||||
@ -292,9 +292,8 @@ subvolume
|
|||||||
a reference on the root of another subvolume. Each btrfs filesystem has
|
a reference on the root of another subvolume. Each btrfs filesystem has
|
||||||
at least one subvolume, the *top-level subvolume*, which contains
|
at least one subvolume, the *top-level subvolume*, which contains
|
||||||
everything else in the filesystem. Additional subvolumes can be created
|
everything else in the filesystem. Additional subvolumes can be created
|
||||||
and deleted with the *<code>btrfs</code>* tool. All subvolumes share
|
and deleted with the *btrfs<* tool. All subvolumes share the same pool
|
||||||
the same pool of free space in the filesystem. See also *default
|
of free space in the filesystem. See also *default subvolume*.
|
||||||
subvolume*.
|
|
||||||
|
|
||||||
superblock
|
superblock
|
||||||
The *block* on the disk, at a fixed known location and of fixed size,
|
The *block* on the disk, at a fixed known location and of fixed size,
|
||||||
|
@ -72,10 +72,10 @@ patches to the mailing list instead. You can link to a branch in any git
|
|||||||
repository if the mails do not make it to the mailing list or for convenience.
|
repository if the mails do not make it to the mailing list or for convenience.
|
||||||
|
|
||||||
The development model of btrfs-progs shares a lot with the kernel model. The
|
The development model of btrfs-progs shares a lot with the kernel model. The
|
||||||
github way is different in some ways. We, the upstream community, expect that
|
github.com way is different in some ways. We, the upstream community, expect that
|
||||||
the patches meet some criteria (often lacking in github contributions):
|
the patches meet some criteria (often lacking in github.com contributions):
|
||||||
|
|
||||||
* proper **subject line**: eg. prefix with *btrfs-progs: subpart, ...* ,
|
* proper **subject line**: e.g. prefix with *btrfs-progs: subpart, ...* ,
|
||||||
descriptive yet not too long
|
descriptive yet not too long
|
||||||
* proper **changelog**: the changelogs are often missing or lacking
|
* proper **changelog**: the changelogs are often missing or lacking
|
||||||
explanation *why* the change was made, or *how* is something broken,
|
explanation *why* the change was made, or *how* is something broken,
|
||||||
@ -84,7 +84,7 @@ the patches meet some criteria (often lacking in github contributions):
|
|||||||
* the **Signed-off-by** line: this document who authored the change, you can
|
* the **Signed-off-by** line: this document who authored the change, you can
|
||||||
read more about the *The Developer's Certificate of Origin*
|
read more about the *The Developer's Certificate of Origin*
|
||||||
`here (chapter 11) <https://www.kernel.org/doc/Documentation/SubmittingPatches>`_]
|
`here (chapter 11) <https://www.kernel.org/doc/Documentation/SubmittingPatches>`_]
|
||||||
* **one logical change** per patch: eg. not mixing bugfixes, cleanups,
|
* **one logical change** per patch: e.g. not mixing bug fixes, cleanups,
|
||||||
features etc., sometimes it's not clear and will be usually pointed out
|
features etc., sometimes it's not clear and will be usually pointed out
|
||||||
during reviews
|
during reviews
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ by the option *--readonly*.
|
|||||||
.. warning::
|
.. warning::
|
||||||
Do not use *--repair* unless you are advised to do so by a developer
|
Do not use *--repair* unless you are advised to do so by a developer
|
||||||
or an experienced user, and then only after having accepted that no *fsck*
|
or an experienced user, and then only after having accepted that no *fsck*
|
||||||
successfully repair all types of filesystem corruption. Eg. some other software
|
successfully repair all types of filesystem corruption. E.g. some other software
|
||||||
or hardware bugs can fatally damage a volume.
|
or hardware bugs can fatally damage a volume.
|
||||||
|
|
||||||
The structural integrity check verifies if internal filesystem objects or
|
The structural integrity check verifies if internal filesystem objects or
|
||||||
|
@ -19,7 +19,7 @@ tools. Currently covers:
|
|||||||
#. control device
|
#. control device
|
||||||
#. filesystems with multiple block group profiles
|
#. filesystems with multiple block group profiles
|
||||||
#. seeding device
|
#. seeding device
|
||||||
#. raid56 status and recommended practices
|
#. RAID56 status and recommended practices
|
||||||
#. storage model, hardware considerations
|
#. storage model, hardware considerations
|
||||||
|
|
||||||
|
|
||||||
@ -129,10 +129,10 @@ raid1c34
|
|||||||
|
|
||||||
extended RAID1 mode with copies on 3 or 4 devices respectively
|
extended RAID1 mode with copies on 3 or 4 devices respectively
|
||||||
|
|
||||||
raid56
|
RAID56
|
||||||
(since: 3.9)
|
(since: 3.9)
|
||||||
|
|
||||||
the filesystem contains or contained a raid56 profile of block groups
|
the filesystem contains or contained a RAID56 profile of block groups
|
||||||
|
|
||||||
rmdir_subvol
|
rmdir_subvol
|
||||||
(since: 4.18)
|
(since: 4.18)
|
||||||
@ -332,7 +332,7 @@ group profiles *RAID1*.
|
|||||||
Having just one profile is desired as this also clearly defines the profile of
|
Having just one profile is desired as this also clearly defines the profile of
|
||||||
newly allocated block groups, otherwise this depends on internal allocation
|
newly allocated block groups, otherwise this depends on internal allocation
|
||||||
policy. When there are multiple profiles present, the order of selection is
|
policy. When there are multiple profiles present, the order of selection is
|
||||||
RAID6, RAID5, RAID10, RAID1, RAID0 as long as the device number constraints are
|
RAID56, RAID10, RAID1, RAID0 as long as the device number constraints are
|
||||||
satisfied.
|
satisfied.
|
||||||
|
|
||||||
Commands that print the warning were chosen so they're brought to user
|
Commands that print the warning were chosen so they're brought to user
|
||||||
@ -385,7 +385,7 @@ Missing/incomplete support
|
|||||||
|
|
||||||
When RAID56 is on the same filesystem with different raid profiles, the space
|
When RAID56 is on the same filesystem with different raid profiles, the space
|
||||||
reporting is inaccurate, e.g. **df**, **btrfs filesystem df** or **btrfs filesystem
|
reporting is inaccurate, e.g. **df**, **btrfs filesystem df** or **btrfs filesystem
|
||||||
usage**. When there's only a one profile per block group type (e.g. raid5 for data)
|
usage**. When there's only a one profile per block group type (e.g. RAID5 for data)
|
||||||
the reporting is accurate.
|
the reporting is accurate.
|
||||||
|
|
||||||
When scrub is started on a RAID56 filesystem, it's started on all devices that
|
When scrub is started on a RAID56 filesystem, it's started on all devices that
|
||||||
|
@ -53,7 +53,7 @@ A subvolume is made read-only after the receiving process finishes successfully
|
|||||||
-m <ROOTMOUNT>
|
-m <ROOTMOUNT>
|
||||||
the root mount point of the destination filesystem
|
the root mount point of the destination filesystem
|
||||||
|
|
||||||
By default the mountpoint is searched in */proc/self/mounts*.
|
By default the mount point is searched in */proc/self/mounts*.
|
||||||
If */proc* is not accessible, e.g. in a chroot environment, use this option to
|
If */proc* is not accessible, e.g. in a chroot environment, use this option to
|
||||||
tell us where this filesystem is mounted.
|
tell us where this filesystem is mounted.
|
||||||
|
|
||||||
|
@ -51,12 +51,12 @@ fix-device-size <device>
|
|||||||
WARNING: CPU: 3 PID: 439 at fs/btrfs/ctree.h:1559 btrfs_update_device+0x1c5/0x1d0 [btrfs]
|
WARNING: CPU: 3 PID: 439 at fs/btrfs/ctree.h:1559 btrfs_update_device+0x1c5/0x1d0 [btrfs]
|
||||||
|
|
||||||
clear-uuid-tree <device>
|
clear-uuid-tree <device>
|
||||||
Clear uuid tree, so that kernel can re-generate it at next read-write
|
Clear UUID tree, so that kernel can re-generate it at next read-write
|
||||||
mount.
|
mount.
|
||||||
|
|
||||||
Since kernel v4.16 there are more sanity check performed, and sometimes
|
Since kernel v4.16 there are more sanity check performed, and sometimes
|
||||||
non-critical trees like uuid tree can cause problems and reject the mount.
|
non-critical trees like UUID tree can cause problems and reject the mount.
|
||||||
In such case, clearing uuid tree may make the filesystem to be mountable again
|
In such case, clearing UUID tree may make the filesystem to be mountable again
|
||||||
without much risk as it's built from other trees.
|
without much risk as it's built from other trees.
|
||||||
|
|
||||||
super-recover [options] <device>
|
super-recover [options] <device>
|
||||||
|
@ -12,7 +12,7 @@ DESCRIPTION
|
|||||||
**btrfstune** can be used to enable, disable, or set various filesystem
|
**btrfstune** can be used to enable, disable, or set various filesystem
|
||||||
parameters. The filesystem must be unmounted.
|
parameters. The filesystem must be unmounted.
|
||||||
|
|
||||||
The common usecase is to enable features that were not enabled at mkfs time.
|
The common use case is to enable features that were not enabled at mkfs time.
|
||||||
Please make sure that you have kernel support for the features. You can find a
|
Please make sure that you have kernel support for the features. You can find a
|
||||||
complete list of features and kernel version of their introduction at
|
complete list of features and kernel version of their introduction at
|
||||||
https://btrfs.wiki.kernel.org/index.php/Changelog#By_feature . Also, the
|
https://btrfs.wiki.kernel.org/index.php/Changelog#By_feature . Also, the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Data and metadata are checksummed by default, the checksum is calculated before
|
Data and metadata are checksummed by default, the checksum is calculated before
|
||||||
write and verifed after reading the blocks from devices. The whole metadata
|
write and verified after reading the blocks from devices. The whole metadata
|
||||||
block has a checksum stored inline in the b-tree node header, each data block
|
block has a checksum stored inline in the b-tree node header, each data block
|
||||||
has a detached checksum stored in the checksum tree.
|
has a detached checksum stored in the checksum tree.
|
||||||
|
|
||||||
|
@ -20,11 +20,11 @@ ZLIB
|
|||||||
* levels: 1 to 9, mapped directly, default level is 3
|
* levels: 1 to 9, mapped directly, default level is 3
|
||||||
* good backward compatibility
|
* good backward compatibility
|
||||||
LZO
|
LZO
|
||||||
* faster compression and decompression than zlib, worse compression ratio, designed to be fast
|
* faster compression and decompression than ZLIB, worse compression ratio, designed to be fast
|
||||||
* no levels
|
* no levels
|
||||||
* good backward compatibility
|
* good backward compatibility
|
||||||
ZSTD
|
ZSTD
|
||||||
* compression comparable to zlib with higher compression/decompression speeds and different ratio
|
* compression comparable to ZLIB with higher compression/decompression speeds and different ratio
|
||||||
* levels: 1 to 15, mapped directly (higher levels are not available)
|
* levels: 1 to 15, mapped directly (higher levels are not available)
|
||||||
* since 4.14, levels since 5.1
|
* since 4.14, levels since 5.1
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
maximum file name length
|
maximum file name length
|
||||||
255
|
255
|
||||||
|
|
||||||
This limit is imposed by Linux VFS, the strucutres of BTRFS could store
|
This limit is imposed by Linux VFS, the structures of BTRFS could store
|
||||||
larger file names.
|
larger file names.
|
||||||
|
|
||||||
maximum symlink target length
|
maximum symlink target length
|
||||||
|
@ -73,14 +73,14 @@ media itself.
|
|||||||
|
|
||||||
* *Problem*: while the data are written atomically, the contents get changed
|
* *Problem*: while the data are written atomically, the contents get changed
|
||||||
* *Detection*: checksum mismatch on read
|
* *Detection*: checksum mismatch on read
|
||||||
* 'Repair*: use another copy or rebuild from multiple blocks using some
|
* *Repair*: use another copy or rebuild from multiple blocks using some
|
||||||
encoding scheme
|
encoding scheme
|
||||||
|
|
||||||
**Data get silently written to another offset (3)**
|
**Data get silently written to another offset (3)**
|
||||||
|
|
||||||
This would be another serious problem as the filesystem has no information
|
This would be another serious problem as the filesystem has no information
|
||||||
when it happens. For that reason the measures have to be done ahead of time.
|
when it happens. For that reason the measures have to be done ahead of time.
|
||||||
This problem is also commonly called 'ghost write'.
|
This problem is also commonly called *ghost write*.
|
||||||
|
|
||||||
The metadata blocks have the checksum embedded in the blocks, so a correct
|
The metadata blocks have the checksum embedded in the blocks, so a correct
|
||||||
atomic write would not corrupt the checksum. It's likely that after reading
|
atomic write would not corrupt the checksum. It's likely that after reading
|
||||||
@ -88,7 +88,6 @@ such block the data inside would not be consistent with the rest. To rule that
|
|||||||
out there's embedded block number in the metadata block. It's the logical
|
out there's embedded block number in the metadata block. It's the logical
|
||||||
block number because this is what the logical structure expects and verifies.
|
block number because this is what the logical structure expects and verifies.
|
||||||
|
|
||||||
|
|
||||||
The following is based on information publicly available, user feedback,
|
The following is based on information publicly available, user feedback,
|
||||||
community discussions or bug report analyses. It's not complete and further
|
community discussions or bug report analyses. It's not complete and further
|
||||||
research is encouraged when in doubt.
|
research is encouraged when in doubt.
|
||||||
@ -115,7 +114,7 @@ type of memory is not available in all cases. A memory test should be performed
|
|||||||
in case there's a visible bit flip pattern, though this may not detect a faulty
|
in case there's a visible bit flip pattern, though this may not detect a faulty
|
||||||
memory module because the actual load of the system could be the factor making
|
memory module because the actual load of the system could be the factor making
|
||||||
the problems appear. In recent years attacks on how the memory modules operate
|
the problems appear. In recent years attacks on how the memory modules operate
|
||||||
have been demonstrated ('rowhammer') achieving specific bits to be flipped.
|
have been demonstrated (*rowhammer*) achieving specific bits to be flipped.
|
||||||
While these were targeted, this shows that a series of reads or writes can
|
While these were targeted, this shows that a series of reads or writes can
|
||||||
affect unrelated parts of memory.
|
affect unrelated parts of memory.
|
||||||
|
|
||||||
@ -216,7 +215,7 @@ so there is some value in reducing them. Depending on the device class (high
|
|||||||
end/low end) the features like DUP block group profiles may affect the
|
end/low end) the features like DUP block group profiles may affect the
|
||||||
reliability in both ways:
|
reliability in both ways:
|
||||||
|
|
||||||
* *high end* are typically more reliable and using 'single' for data and
|
* *high end* are typically more reliable and using *single* for data and
|
||||||
metadata could be suitable to reduce device wear
|
metadata could be suitable to reduce device wear
|
||||||
* *low end* could lack ability to identify errors so an additional redundancy
|
* *low end* could lack ability to identify errors so an additional redundancy
|
||||||
at the filesystem level (checksums, *DUP*) could help
|
at the filesystem level (checksums, *DUP*) could help
|
||||||
|
@ -18,7 +18,7 @@ have been applied.
|
|||||||
acl, noacl
|
acl, noacl
|
||||||
(default: on)
|
(default: on)
|
||||||
|
|
||||||
Enable/disable support for Posix Access Control Lists (ACLs). See the
|
Enable/disable support for POSIX Access Control Lists (ACLs). See the
|
||||||
``acl(5)`` manual page for more information about ACLs.
|
``acl(5)`` manual page for more information about ACLs.
|
||||||
|
|
||||||
The support for ACL is build-time configurable (BTRFS_FS_POSIX_ACL) and
|
The support for ACL is build-time configurable (BTRFS_FS_POSIX_ACL) and
|
||||||
@ -110,7 +110,7 @@ compress, compress=<type[:level]>, compress-force, compress-force=<type[:level]>
|
|||||||
Both *zlib* and *zstd* (since version 5.1) expose the compression level as a
|
Both *zlib* and *zstd* (since version 5.1) expose the compression level as a
|
||||||
tunable knob with higher levels trading speed and memory (*zstd*) for higher
|
tunable knob with higher levels trading speed and memory (*zstd*) for higher
|
||||||
compression ratios. This can be set by appending a colon and the desired level.
|
compression ratios. This can be set by appending a colon and the desired level.
|
||||||
Zlib accepts the range [1, 9] and zstd accepts [1, 15]. If no level is set,
|
ZLIB accepts the range [1, 9] and ZSTD accepts [1, 15]. If no level is set,
|
||||||
both currently use a default level of 3. The value 0 is an alias for the
|
both currently use a default level of 3. The value 0 is an alias for the
|
||||||
default level.
|
default level.
|
||||||
|
|
||||||
@ -480,7 +480,7 @@ noatime
|
|||||||
performance because no new access time information needs to be written. Without
|
performance because no new access time information needs to be written. Without
|
||||||
this option, the default is *relatime*, which only reduces the number of
|
this option, the default is *relatime*, which only reduces the number of
|
||||||
inode atime updates in comparison to the traditional *strictatime*. The worst
|
inode atime updates in comparison to the traditional *strictatime*. The worst
|
||||||
case for atime updates under 'relatime' occurs when many files are read whose
|
case for atime updates under *relatime* occurs when many files are read whose
|
||||||
atime is older than 24 h and which are freshly snapshotted. In that case the
|
atime is older than 24 h and which are freshly snapshotted. In that case the
|
||||||
atime is updated and COW happens - for each file - in bulk. See also
|
atime is updated and COW happens - for each file - in bulk. See also
|
||||||
https://lwn.net/Articles/499293/ - *Atime and btrfs: a bad combination? (LWN, 2012-05-31)*.
|
https://lwn.net/Articles/499293/ - *Atime and btrfs: a bad combination? (LWN, 2012-05-31)*.
|
||||||
|
@ -93,7 +93,7 @@ Case study: system root layouts
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
There are two ways how the system root directory and subvolume layout could be
|
There are two ways how the system root directory and subvolume layout could be
|
||||||
organized. The interesting usecase for root is to allow rollbacks to previous
|
organized. The interesting use case for root is to allow rollbacks to previous
|
||||||
version, as one atomic step. If the entire filesystem hierarchy starting in "/"
|
version, as one atomic step. If the entire filesystem hierarchy starting in "/"
|
||||||
is in one subvolume, taking snapshot will encompass all files. This is easy for
|
is in one subvolume, taking snapshot will encompass all files. This is easy for
|
||||||
the snapshotting part but has undesirable consequences for rollback. For example,
|
the snapshotting part but has undesirable consequences for rollback. For example,
|
||||||
|
@ -7,7 +7,7 @@ swap subsystem:
|
|||||||
* filesystem - must have only *single* data profile
|
* filesystem - must have only *single* data profile
|
||||||
* swapfile - the containing subvolume cannot be snapshotted
|
* swapfile - the containing subvolume cannot be snapshotted
|
||||||
* swapfile - must be preallocated (i.e. no holes)
|
* swapfile - must be preallocated (i.e. no holes)
|
||||||
* swapfile - must be nodatacow (i.e. also nodatasum, no compression)
|
* swapfile - must be NODATACOW (i.e. also NODATASUM, no compression)
|
||||||
|
|
||||||
The limitations come namely from the COW-based design and mapping layer of
|
The limitations come namely from the COW-based design and mapping layer of
|
||||||
blocks that allows the advanced features like relocation and multi-device
|
blocks that allows the advanced features like relocation and multi-device
|
||||||
|
@ -20,7 +20,7 @@ Type
|
|||||||
Profile
|
Profile
|
||||||
A profile describes an allocation policy based on the redundancy/replication
|
A profile describes an allocation policy based on the redundancy/replication
|
||||||
constraints in connection with the number of devices. The profile applies to
|
constraints in connection with the number of devices. The profile applies to
|
||||||
data and metadata block groups separately. Eg. *single*, *RAID1*.
|
data and metadata block groups separately. E.g. *single*, *RAID1*.
|
||||||
|
|
||||||
RAID level
|
RAID level
|
||||||
Where applicable, the level refers to a profile that matches constraints of the
|
Where applicable, the level refers to a profile that matches constraints of the
|
||||||
|
@ -33,7 +33,7 @@ Incompatible features
|
|||||||
The main constraint of the zoned devices is lack of in-place update of the data.
|
The main constraint of the zoned devices is lack of in-place update of the data.
|
||||||
This is inherently incompatible with some features:
|
This is inherently incompatible with some features:
|
||||||
|
|
||||||
* nodatacow - overwrite in-place, cannot create such files
|
* NODATACOW - overwrite in-place, cannot create such files
|
||||||
* fallocate - preallocating space for in-place first write
|
* fallocate - preallocating space for in-place first write
|
||||||
* mixed-bg - unordered writes to data and metadata, fixing that means using
|
* mixed-bg - unordered writes to data and metadata, fixing that means using
|
||||||
separate data and metadata block groups
|
separate data and metadata block groups
|
||||||
|
@ -258,7 +258,7 @@ extref
|
|||||||
raid56
|
raid56
|
||||||
(kernel support since 3.9)
|
(kernel support since 3.9)
|
||||||
|
|
||||||
extended format for RAID5/6, also enabled if raid5 or raid6 block groups
|
extended format for RAID5/6, also enabled if RAID5 or RAID6 block groups
|
||||||
are selected
|
are selected
|
||||||
|
|
||||||
skinny-metadata
|
skinny-metadata
|
||||||
|
Loading…
Reference in New Issue
Block a user