Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 3583991

Browse files
committedAug 23, 2023
btrfs-progs: docs: updates
- reformatting - new documents - enhancements - status updates Signed-off-by: David Sterba <dsterba@suse.com>
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+
};

‎Documentation/btrfs-ioctl.rst

+174-88
Original file line numberDiff line numberDiff line change
@@ -25,91 +25,130 @@ DATA STRUCTURES AND DEFINITIONS
2525

2626
.. code-block:: c
2727
28-
struct btrfs_ioctl_vol_args {
29-
__s64 fd;
30-
char name[BTRFS_PATH_NAME_MAX + 1];
31-
};
28+
struct btrfs_ioctl_vol_args {
29+
__s64 fd;
30+
char name[BTRFS_PATH_NAME_MAX + 1];
31+
};
3232
3333
.. _struct_btrfs_ioctl_vol_args_v2:
3434

3535
.. code-block:: c
3636
37-
struct btrfs_ioctl_vol_args_v2 {
38-
__s64 fd;
39-
__u64 transid;
40-
__u64 flags;
41-
union {
42-
struct {
43-
__u64 size;
44-
struct btrfs_qgroup_inherit __user *qgroup_inherit;
45-
};
46-
__u64 unused[4];
47-
};
48-
union {
49-
char name[BTRFS_SUBVOL_NAME_MAX + 1];
50-
__u64 devid;
51-
__u64 subvolid;
52-
};
53-
};
37+
#define BTRFS_SUBVOL_RDONLY (1ULL << 1)
38+
#define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2)
39+
#define BTRFS_DEVICE_SPEC_BY_ID (1ULL << 3)
40+
#define BTRFS_SUBVOL_SPEC_BY_ID (1ULL << 4)
41+
42+
struct btrfs_ioctl_vol_args_v2 {
43+
__s64 fd;
44+
__u64 transid;
45+
__u64 flags;
46+
union {
47+
struct {
48+
__u64 size;
49+
struct btrfs_qgroup_inherit __user *qgroup_inherit;
50+
};
51+
__u64 unused[4];
52+
};
53+
union {
54+
char name[BTRFS_SUBVOL_NAME_MAX + 1];
55+
__u64 devid;
56+
__u64 subvolid;
57+
};
58+
};
5459
5560
.. _struct_btrfs_ioctl_get_subvol_info_args:
5661

5762
.. code-block:: c
5863
59-
struct btrfs_ioctl_get_subvol_info_args {
60-
/* Id of this subvolume */
61-
__u64 treeid;
62-
63-
/* Name of this subvolume, used to get the real name at mount point */
64-
char name[BTRFS_VOL_NAME_MAX + 1];
65-
66-
/*
67-
* Id of the subvolume which contains this subvolume.
68-
* Zero for top-level subvolume or a deleted subvolume.
69-
*/
70-
__u64 parent_id;
71-
72-
/*
73-
* Inode number of the directory which contains this subvolume.
74-
* Zero for top-level subvolume or a deleted subvolume
75-
*/
76-
__u64 dirid;
77-
78-
/* Latest transaction id of this subvolume */
79-
__u64 generation;
80-
81-
/* Flags of this subvolume */
82-
__u64 flags;
83-
84-
/* UUID of this subvolume */
85-
__u8 uuid[BTRFS_UUID_SIZE];
86-
87-
/*
88-
* UUID of the subvolume of which this subvolume is a snapshot.
89-
* All zero for a non-snapshot subvolume.
90-
*/
91-
__u8 parent_uuid[BTRFS_UUID_SIZE];
92-
93-
/*
94-
* UUID of the subvolume from which this subvolume was received.
95-
* All zero for non-received subvolume.
96-
*/
97-
__u8 received_uuid[BTRFS_UUID_SIZE];
98-
99-
/* Transaction id indicating when change/create/send/receive happened */
100-
__u64 ctransid;
101-
__u64 otransid;
102-
__u64 stransid;
103-
__u64 rtransid;
104-
/* Time corresponding to c/o/s/rtransid */
105-
struct btrfs_ioctl_timespec ctime;
106-
struct btrfs_ioctl_timespec otime;
107-
struct btrfs_ioctl_timespec stime;
108-
struct btrfs_ioctl_timespec rtime;
109-
110-
/* Must be zero */
111-
__u64 reserved[8];
112-
};
64+
struct btrfs_ioctl_get_subvol_info_args {
65+
/* Id of this subvolume */
66+
__u64 treeid;
67+
68+
/* Name of this subvolume, used to get the real name at mount point */
69+
char name[BTRFS_VOL_NAME_MAX + 1];
70+
71+
/*
72+
* Id of the subvolume which contains this subvolume.
73+
* Zero for top-level subvolume or a deleted subvolume.
74+
*/
75+
__u64 parent_id;
76+
77+
/*
78+
* Inode number of the directory which contains this subvolume.
79+
* Zero for top-level subvolume or a deleted subvolume
80+
*/
81+
__u64 dirid;
82+
83+
/* Latest transaction id of this subvolume */
84+
__u64 generation;
85+
86+
/* Flags of this subvolume */
87+
__u64 flags;
88+
89+
/* UUID of this subvolume */
90+
__u8 uuid[BTRFS_UUID_SIZE];
91+
92+
/*
93+
* UUID of the subvolume of which this subvolume is a snapshot.
94+
* All zero for a non-snapshot subvolume.
95+
*/
96+
__u8 parent_uuid[BTRFS_UUID_SIZE];
97+
98+
/*
99+
* UUID of the subvolume from which this subvolume was received.
100+
* All zero for non-received subvolume.
101+
*/
102+
__u8 received_uuid[BTRFS_UUID_SIZE];
103+
104+
/* Transaction id indicating when change/create/send/receive happened */
105+
__u64 ctransid;
106+
__u64 otransid;
107+
__u64 stransid;
108+
__u64 rtransid;
109+
/* Time corresponding to c/o/s/rtransid */
110+
struct btrfs_ioctl_timespec ctime;
111+
struct btrfs_ioctl_timespec otime;
112+
struct btrfs_ioctl_timespec stime;
113+
struct btrfs_ioctl_timespec rtime;
114+
115+
/* Must be zero */
116+
__u64 reserved[8];
117+
};
118+
119+
.. _struct_btrfs_qgroup_inherit:
120+
121+
.. code-block:: c
122+
123+
#define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0)
124+
125+
struct btrfs_qgroup_inherit {
126+
__u64 flags;
127+
__u64 num_qgroups;
128+
__u64 num_ref_copies;
129+
__u64 num_excl_copies;
130+
struct btrfs_qgroup_limit lim;
131+
__u64 qgroups[];
132+
};
133+
134+
.. _struct_btrfs_qgroup_limit:
135+
136+
.. code-block:: c
137+
138+
#define BTRFS_QGROUP_LIMIT_MAX_RFER (1ULL << 0)
139+
#define BTRFS_QGROUP_LIMIT_MAX_EXCL (1ULL << 1)
140+
#define BTRFS_QGROUP_LIMIT_RSV_RFER (1ULL << 2)
141+
#define BTRFS_QGROUP_LIMIT_RSV_EXCL (1ULL << 3)
142+
#define BTRFS_QGROUP_LIMIT_RFER_CMPR (1ULL << 4)
143+
#define BTRFS_QGROUP_LIMIT_EXCL_CMPR (1ULL << 5)
144+
145+
struct btrfs_qgroup_limit {
146+
__u64 flags;
147+
__u64 max_rfer;
148+
__u64 max_excl;
149+
__u64 rsv_rfer;
150+
__u64 rsv_excl;
151+
};
113152
114153
.. list-table::
115154
:header-rows: 1
@@ -150,7 +189,7 @@ The 'BTRFS_IOC_NUMBER' is says which operation should be done on the given
150189
arguments. Some ioctls take a specific data structure, some of them share a
151190
common one, no argument structure ioctls exist too.
152191

153-
The library 'libbtrfsutil' wraps a few ioctls for convenience. Using raw ioctls
192+
The library *libbtrfsutil* wraps a few ioctls for convenience. Using raw ioctls
154193
is not discouraged but may be cumbersome though it does not need additional
155194
library dependency. Backward compatibility is guaranteed and incompatible
156195
changes usually lead to a new version of the ioctl. Enhancements of existing
@@ -174,8 +213,8 @@ LIST OF IOCTLS
174213
- (obsolete) create a subvolume
175214
- :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
176215
* - BTRFS_IOC_SNAP_CREATE
177-
-
178-
-
216+
- (obsolete) create a snapshot of a subvolume
217+
- :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
179218
* - BTRFS_IOC_DEFRAG
180219
-
181220
-
@@ -185,9 +224,9 @@ LIST OF IOCTLS
185224
* - BTRFS_IOC_SCAN_DEV
186225
-
187226
-
188-
* - BTRFS_IOC_SYNC
189-
-
190-
-
227+
* - :ref:`BTRFS_IOC_SYNC<BTRFS_IOC_SYNC>`
228+
- Sync the filesystem, possibly process queued up work
229+
- NULL
191230
* - BTRFS_IOC_CLONE
192231
-
193232
-
@@ -375,6 +414,50 @@ BTRFS_IOC_SUBVOL_CREATE
375414
size is limited by Linux VFS to 255 characters and must not contain a slash
376415
('/')
377416

417+
BTRFS_IOC_SNAP_CREATE
418+
~~~~~~~~~~~~~~~~~~~~~
419+
420+
.. note::
421+
obsoleted by :ref:`BTRFS_IOC_SNAP_CREATE_V2<BTRFS_IOC_SNAP_CREATE_V2>`
422+
423+
*(since: 3.0, obsoleted: 4.0)* Create a snapshot of a subvolume.
424+
425+
.. list-table::
426+
:header-rows: 1
427+
428+
* - Field
429+
- Description
430+
* - ioctl fd
431+
- file descriptor of the parent directory of the new subvolume
432+
* - ioctl args
433+
- :ref:`struct btrfs_ioctl_vol_args<struct_btrfs_ioctl_vol_args>`
434+
* - args.fd
435+
- file descriptor of any directory inside the subvolume to snapshot,
436+
must be on the same filesystem
437+
* - args.name
438+
- name of the subvolume, although the buffer can be almost 4k, the file
439+
size is limited by Linux VFS to 255 characters and must not contain a slash
440+
('/')
441+
442+
.. _BTRFS_IOC_SYNC:
443+
444+
BTRFS_IOC_SYNC
445+
~~~~~~~~~~~~~~
446+
447+
Sync the filesystem data as would ``sync()`` syscall do, additionally
448+
wake up the internal transaction thread that may trigger actions like
449+
subvolume cleaning or queued defragmentation.
450+
451+
.. list-table::
452+
:header-rows: 1
453+
454+
* - Field
455+
- Description
456+
* - ioctl fd
457+
- file descriptor of any file or directory in the filesystem
458+
* - ioctl args
459+
- NULL
460+
378461
.. _BTRFS_IOC_SNAP_CREATE_V2:
379462

380463
BTRFS_IOC_SNAP_CREATE_V2
@@ -392,7 +475,8 @@ Create a snapshot of a subvolume.
392475
* - ioctl args
393476
- :ref:`struct btrfs_ioctl_vol_args_v2<struct_btrfs_ioctl_vol_args_v2>`
394477
* - args.fd
395-
- file descriptor of any directory inside the subvolume to snapshot
478+
- file descriptor of any directory inside the subvolume to snapshot,
479+
must be on the filesystem
396480
* - args.transid
397481
- ignored
398482
* - args.flags
@@ -406,7 +490,7 @@ Create a snapshot of a subvolume.
406490
BTRFS_IOC_SUBVOL_CREATE_V2
407491
~~~~~~~~~~~~~~~~~~~~~~~~~~
408492

409-
*(since: 3.6)* Create a subvolume, qgroup inheritance can be specified.
493+
*(since: 3.6)* Create a subvolume, qgroup inheritance and limits can be specified.
410494

411495
.. list-table::
412496
:header-rows: 1
@@ -422,17 +506,19 @@ BTRFS_IOC_SUBVOL_CREATE_V2
422506
* - args.transid
423507
- ignored
424508
* - args.flags
425-
- ignored
509+
- flags to set on the subvolume, ``BTRFS_SUBVOL_RDONLY`` for readonly,
510+
``BTRFS_SUBVOL_QGROUP_INHERIT`` if the qgroup related fileds should be
511+
processed
426512
* - args.size
427-
- ...
513+
- number of entries in ``args.qgroup_inherit``
428514
* - args.qgroup_inherit
429-
- ...
515+
- inherit the given qgroups
516+
(:ref:`struct btrfs_qgroup_inherit<struct_btrfs_qgroup_inherit>`) and
517+
limits (:ref:`struct btrfs_qgroup_limit<struct_btrfs_qgroup_limit>`)
430518
* - name
431519
- name of the subvolume, although the buffer can be almost 4k, the file
432520
size is limited by Linux VFS to 255 characters and must not contain a
433521
slash ('/')
434-
* - devid
435-
- ...
436522

437523
.. _BTRFS_IOC_SUBVOL_GETFLAGS:
438524

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
Release checklist
2+
=================
3+
4+
Last code touches:
5+
6+
* make the code ready, collect patches queued for the release
7+
* look to mailinglist for any relevant last-minute fixes
8+
* skim patches for typos, inconsistent subjects
9+
10+
Pre-checks:
11+
12+
* update package in OBS, (multi arch build checks)
13+
* run all functional tests locally with
14+
15+
* defaults
16+
* D=asan
17+
* D=ubsan
18+
* run all build tests (``tests/build-tests.sh``)
19+
* run with fstests
20+
* check Github actions for status (https://github.com/kdave/btrfs-progs/actions)
21+
22+
* branch *devel*
23+
* branch *release-test* -- extensive pre-release build checks
24+
* branch *coverage-test* -- code coverage, for information purposes only
25+
26+
Pre-release:
27+
28+
* write CHANGES entry (will be visible on RTD right away)
29+
30+
Release:
31+
32+
* tag release, sign
33+
* build check of unpacked tar
34+
* generate documentation
35+
* make tar
36+
* upload tar to kernel.org
37+
* refresh git branches, push tags
38+
39+
Post-release:
40+
41+
* write and send announcement mail to the mailinglist
42+
* update title on IRC
43+
* github updates
44+
45+
* create a new release from the latest tag
46+
* copy text from CHANGES as contents, formatting is the same
47+
* wait for static binaries github action to finish
48+
* run ``ci/actions/update-artifacts`` to copy the built static binaries to the
49+
release (requires github command line tool ``gh``)

‎Documentation/index.rst

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ Welcome to BTRFS documentation!
6161
dev/dev-send-stream
6262
dev/dev-json
6363
dev/dev-internal-apis
64+
dev/ReleaseChecklist
6465
btrfs-ioctl
6566

6667
.. toctree::

0 commit comments

Comments
 (0)
Please sign in to comment.