Skip to content

Commit 3583991

Browse files
committed
btrfs-progs: docs: updates
- reformatting - new documents - enhancements - status updates Signed-off-by: David Sterba <[email protected]>
1 parent c31bc2b commit 3583991

11 files changed

+331
-197
lines changed

Documentation/Contributors.rst

+11-14
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,7 @@ Sorted by amount of contributions:
1313
* Oracle
1414

1515
The following contributed in the past (sorted alphabetically):
16-
17-
* Fujitsu
18-
* Fusion-IO
19-
* Intel
20-
* Linux Foundation
21-
* Red Hat
22-
* STRATO AG
16+
Fujitsu, Fusion-IO, Intel, Linux Foundation, Red Hat, STRATO AG.
2317

2418
Statistics for 6.x series
2519
-------------------------
@@ -37,13 +31,13 @@ Statistics for 6.x series
3731

3832
Legend:
3933

40-
- *Files:* fs/btrfs/\*.[ch], fs/btrfs/tests/\*.[ch], include/uapi/linux/btrfs.h, include/uapi/linux/btrfs_tree.h, include/linux/btrfs.h, include/trace/events/btrfs.h
41-
- *Version:* mainline version
42-
- *Contributors:* number of people that sent patches that modified ''Files'', direct btrfs development or originating from other tree-wide changes
43-
- *SLOC:* lines of code, http://dwheeler.com/sloccount/ (generated by version 2.26)
44-
- *Raw lines:* counted by ''wc -l'' over ''Files''
45-
- *Patches:* number of patches from ''Contributors'', merge commits excluded
46-
- *Diffstat:* lines added and deleted in ''Files''
34+
- *Files:* fs/btrfs/\*.[ch], fs/btrfs/tests/\*.[ch], include/uapi/linux/btrfs.h, include/uapi/linux/btrfs_tree.h, include/linux/btrfs.h, include/trace/events/btrfs.h
35+
- *Version:* mainline version
36+
- *Contributors:* number of people that sent patches that modified ''Files'', direct btrfs development or originating from other tree-wide changes
37+
- *SLOC:* lines of code, http://dwheeler.com/sloccount/ (generated by version 2.26)
38+
- *Raw lines:* counted by ''wc -l'' over ''Files''
39+
- *Patches:* number of patches from ''Contributors'', merge commits excluded
40+
- *Diffstat:* lines added and deleted in ''Files''
4741

4842

4943
Statistics for 5.x series
@@ -74,6 +68,7 @@ Statistics for 5.x series
7468
"5.18", "30", "109159", "155372", "143", "+3489 -1523"
7569
"5.19", "21", "109140", "155848", "202", "+4448 -3972"
7670

71+
7772
Statistics for 4.x series
7873
-------------------------
7974

@@ -103,6 +98,7 @@ Statistics for 4.x series
10398
"4.19", "25", "97547", "132655", "193", "+2058 -3070"
10499
"4.20", "22", "97830", "133283", "128", "+1560 -932"
105100

101+
106102
Statistics for 3.x series
107103
-------------------------
108104

@@ -131,6 +127,7 @@ Statistics for 3.x series
131127
"3.18", "25", "83910", "112906", "149", "+3696 -1631"
132128
"3.19", "18", "85420", "115031", "82", "+2802 -677"
133129

130+
134131
Statistics for 2.6.x series
135132
---------------------------
136133

Documentation/Kernel-by-version.rst

+9-6
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ Summary of kernel changes for each version.
4545

4646
Performance improvements:
4747

48-
- reduced amount of reserved metadata for delayed items
48+
- reduced amount of reserved metadata for delayed items
4949

50-
- when inserted items can be batched into one leaf
51-
- when deleting batched directory index items
52-
- when deleting delayed items used for deletion
53-
- overall improved count of files/sec, decreased subvolume lock
54-
contention
50+
- when inserted items can be batched into one leaf
51+
- when deleting batched directory index items
52+
- when deleting delayed items used for deletion
53+
- overall improved count of files/sec, decreased subvolume lock
54+
contention
5555

5656
- metadata item access bounds checker micro-optimized, with a few
5757
percent of improved runtime for metadata-heavy operations
@@ -275,6 +275,9 @@ Fixes:
275275
new value for maximum active threads would not be set to the actual
276276
work queues (since 6.0)
277277

278+
6.4 (Jun 2022)
279+
^^^^^^^^^^^^^^
280+
278281
5.x
279282
---
280283

Documentation/Quick-start.rst

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
Quick start
22
===========
33

4-
...
4+
For a really quick start you can simply create and mount the filesystem. Make
5+
sure that the block device you'd like to use is suitable so you don't overwrite existing data.
6+
7+
.. code-block:: shell
8+
9+
# mkfs.btrfs /dev/sdx
10+
# mount /dev/sdx /mnt/test
11+
12+
The default options should be acceptable for most users and sometimes can be
13+
changed later. The example above is for a single device filesystem, creating a
14+
*single* profile for data (no redundant copies of the blocks), and *DUP*
15+
for metadata (each block is duplicated).

Documentation/ReleaseChecklist

-35
This file was deleted.

Documentation/Status.rst

+55-21
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ in meeting your performance expectations for your specific workload.
1313
Combination of features can vary in performance, the table does not
1414
cover all possibilities.
1515

16-
**The table is based on the latest released linux kernel: 6.3**
16+
**The table is based on the latest released linux kernel: 6.4**
1717

1818
The columns for each feature reflect the status of the implementation
1919
in following ways:
@@ -32,7 +32,9 @@ in following ways:
3232

3333
.. role:: statusok
3434
.. role:: statusmok
35-
.. role:: statusunst
35+
.. role:: statusunstable
36+
.. role:: statusunsupp
37+
.. role:: statusincompat
3638

3739
.. list-table::
3840
:header-rows: 1
@@ -126,7 +128,7 @@ in following ways:
126128
- mostly OK
127129
- reading from mirrors in parallel can be optimized further (see below)
128130
* - :ref:`RAID56<mkfs-section-profiles>`
129-
- :statusunst:`unstable`
131+
- :statusunstable:`unstable`
130132
- n/a
131133
- (see below)
132134
* - Mixed block groups
@@ -220,11 +222,12 @@ in following ways:
220222
* - :doc:`Subpage block size<Subpage>`
221223
- :statusmok:`mostly OK`
222224
- mostly OK
223-
-
225+
- Also see table below for more detailed compatibility.
224226
* - :doc:`Zoned mode<Zoned-mode>`
225227
- :statusmok:`mostly OK`
226228
- mostly OK
227-
- there are known bugs, use only for testing
229+
- Not yet feature complete but moderately stable, also see table below
230+
for more detailed compatibility.
228231

229232
Please open an issue if:
230233

@@ -233,6 +236,8 @@ Please open an issue if:
233236
worth mentioning separately
234237
- you know of a bug that lowers the feature status
235238

239+
.. _status-subpage-block-size:
240+
236241
Subpage block size
237242
------------------
238243

@@ -247,55 +252,84 @@ with subpage or require another feature to work:
247252
- Status
248253
- Notes
249254
* - Inline files
250-
- unsupported
251-
- The max_inline mount option value is ignored
255+
- :statusunsupp:`unsupported`
256+
- The max_inline mount option value is ignored, as if mounted with max_inline=0
252257
* - Free space cache v1
253-
- unsupported
254-
- Free space tree is mandatory
258+
- :statusunsupp:`unsupported`
259+
- Free space tree is mandatory, v1 has some assumptions about page size
255260
* - Compression
256-
- partial support
261+
- :statusok:`partial support`
257262
- Only page-aligned ranges can be compressed
263+
* - Sectorsize
264+
- :statusok:`supported`
265+
- The list of supported sector sizes on a given version can be found
266+
in file :file:`/sys/fs/btrfs/features/supported_sectorsizes`
258267

259268

260269
Zoned mode
261270
----------
262271

272+
Features that completely incompatible with zoned mode are listed below.
273+
Compatible features may not be listed and are assumed to work as they
274+
are unaffected by the zoned device constraints.
275+
263276
.. list-table::
264277
:header-rows: 1
265278

266279
* - Feature
267280
- Status
268281
- Notes
269282
* - Boot
270-
- incompatible
283+
- :statusincompat:`incompatible`
271284
- The blocks where partition table is stored is used for super block
272285
* - Mixed block groups
273-
- incompatible
286+
- :statusincompat:`incompatible`
274287
- Interleaving data and metadata would lead to out of order write
275288
* - NODATACOW
276-
- incompatible
289+
- :statusincompat:`incompatible`
277290
- In-place overwrite
278291
* - fallocate
279-
- incompatible
292+
- :statusincompat:`incompatible`
280293
- Preallocation of blocks would require an out of order write
281294
* - Free space cache v1
282-
- incompatible
295+
- :statusincompat:`incompatible`
283296
- Cache data are updated in a NODATACOW-way
297+
* - Swapfile
298+
- :statusincompat:`incompatible`
299+
- Swap blocks are written out of order
300+
* - Offline UUID change
301+
- :statusincompat:`incompatible`
302+
- Metadata blocks are updated in-place
284303
* - Free space tree
285-
- supported
304+
- :statusok:`supported`
286305
-
287-
* - fstrim
288-
- not implemented
289-
- This would require free space v1
290306
* - single profile
291-
- supported
307+
- :statusok:`supported`
292308
- Both data and metadata
293309
* - DUP profile
294-
- partial support
310+
- :statusok:`partial support`
295311
- Only for metadata
312+
* - Filesystem resize
313+
- :statusok:`supported`
314+
-
315+
* - Balance
316+
- :statusok:`supported`
317+
-
318+
* - Metadata UUID change
319+
- :statusok:`supported`
320+
-
296321
* - RAID (all)
297322
- not implemented
298323
- This requires raid-stripe-tree feature which is still work in progress
324+
* - discard
325+
- not implemented
326+
- May not be required at all due to automatic zone reclaim
327+
* - fsverity
328+
- TBD
329+
-
330+
* - seeding
331+
- TBD
332+
-
299333

300334

301335
Details that do not fit the table

Documentation/Subpage.rst

+8-30
Original file line numberDiff line numberDiff line change
@@ -9,40 +9,18 @@ to the exactly same size of the block and page. On x86_64 this is typically
99
pages, like 64KiB on 64bit ARM or PowerPC. This means filesystems created
1010
with 64KiB sector size cannot be mounted on a system with 4KiB page size.
1111

12-
While with subpage support, systems with 64KiB page size can create (still needs
13-
"-s 4k" option for :command:`mkfs.btrfs`) and mount filesystems with 4KiB sectorsize.
12+
While with subpage support systems with 64KiB page size can create
13+
and mount filesystems with 4KiB sectorsize. This still needs to use option "-s
14+
4k" option for :command:`mkfs.btrfs`.
1415

1516
Requirements, limitations
1617
-------------------------
1718

1819
The initial subpage support has been added in v5.15, although it's still
1920
considered as experimental, most features are already working without problems.
21+
On a 64KiB page system filesystem with 4KiB sectorsize can be mounted and used
22+
as usual as long as the initial mount succeeds. There are cases a mount will be
23+
rejected when verifying compatible features.
2024

21-
End users can mount filesystems with 4KiB sectorsize and do their usual
22-
workload, while should not notice any obvious change, as long as the initial
23-
mount succeeded (there are cases a mount will be rejected though).
24-
25-
The following features has some limitations for subpage:
26-
27-
- Supported page sizes: 4KiB, 8KiB, 16KiB, 32KiB, 64KiB
28-
29-
- Supported filesystem sector sizes on a given host are exported in
30-
:file:`/sys/fs/btrfs/features/supported_sectorsizes`
31-
32-
- No inline extents
33-
34-
This is an artificial limitation, to prevent mixed inline and regular extents.
35-
36-
Thus max_inline mount option will be silently ignored for subpage mounts,
37-
and it always acts as "max_inline=0".
38-
39-
- Compression writes are limited to page aligned ranges
40-
41-
Compression write for subpage has been introduced in v5.16, with the
42-
limitation that only page aligned range can be compressed. This limitation
43-
is due to how btrfs handles delayed allocation.
44-
45-
- No support for v1 space cache
46-
47-
The old v1 cache has quite some hard coded page size usage, and considering
48-
it already deprecated, we force v2 cache for subpage.
25+
Please refer to status page of :ref:`status-subpage-block-size` for
26+
compatibility.

Documentation/Trim.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,6 @@ relocate the data, however this leads to unexpected performance drop. Running
3838
trim periodically could prevent that too.
3939

4040
When a filesystem is created by :doc:`mkfs.btrfs` and is capable
41-
of trim, then it's by default performed on all devices.
41+
of trim, then it's by default performed on all devices. Since kernel 6.2 the
42+
*discard=async* mount option is automatically enabled on devices that support
43+
that.

Documentation/_static/style.css

+9-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
color: darkorange;
1717
}
1818

19-
.statusunst {
19+
.statusunstable {
2020
color: red;
2121
}
22+
23+
.statusunsupp {
24+
color: darkorange;
25+
}
26+
27+
.statusincompat {
28+
color: goldenrod;
29+
};

0 commit comments

Comments
 (0)