File: Experimental.rst

package info (click to toggle)
btrfs-progs 6.17.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 20,612 kB
  • sloc: ansic: 127,282; sh: 7,915; python: 1,384; makefile: 900; asm: 296
file content (60 lines) | stat: -rw-r--r-- 1,667 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Experimental features
=====================

User space tools (btrfs-progs)
------------------------------

Experimental or unstable features may be enabled by

    ./configure --enable-experimental

but as it says, the interface, command names, output formatting should be considered
unstable and not for production use. However testing is welcome and feedback or bugs
filed as issues.

In the code use it like:

.. code-block:: none

    if (EXPERIMENTAL) {
        ...
    }

in case it does not interfere with other code or does not depend on an `#if`
where it would break default build.

Or:

.. code-block:: none

    #if EXPERIMENTAL
    ...
    #endif

for larger code blocks.

.. note::
   Do not use `#ifdef` as the macro is always defined so this would not work as
   expected.

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
description and a TODO list items. Individual tasks can be tracked in other
issues if needed.


Kernel module
-------------

The kernel module can be configured to enable experimental features or
functionality since version 6.13 by
`CONFIG_BTRFS_EXPERIMENTAL <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/btrfs/Kconfig#n82>`__ .
The features can get added or removed in each release. At runtime the status
can be seen in the system log message once the kernel module is loaded:

.. code-block:: none

   Btrfs loaded, experimental=on, debug=on, assert=on, ref-verify=on, zoned=yes, fsverity=yes


In some cases (standalone features) it's exported in :file:`/sys/fs/btrfs/FSID/features`.