btrfs-progs: move block-group-tree out of experimental features

The feedback from the community on block group tree is very positive,
the only complain is, end users need to recompile btrfs-progs with
experimental features to enjoy the new feature.

So let's move it out of experimental features and let more people enjoy
faster mount speed.

Also change the option of btrfstune, from `-b` to
`--enable-block-group-tree` to avoid short option.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Qu Wenruo 2023-04-11 10:31:06 +08:00 committed by David Sterba
parent 4dbe66ca2f
commit 716c3be363
5 changed files with 22 additions and 15 deletions

View file

@ -66,6 +66,12 @@ big_metadata
the filesystem uses *nodesize* for metadata blocks, this can be bigger than the
page size
block_group_tree
(since: 6.1)
block group item representation using a dedicated b-tree, this can greatly
reduce mount time for large filesystems
compress_lzo
(since: 2.6.38)

View file

@ -24,8 +24,8 @@ means. Please refer to the *FILESYSTEM FEATURES* in :doc:`btrfs(5)<btrfs-man5>`
OPTIONS
-------
-b
(since kernel 6.1, needs experimental build of btrfs-progs)
--enable-block-group-tree
(since kernel 6.1)
Enable block group tree feature (greatly reduce mount time),
enabled by mkfs feature *block-group-tree*.

View file

@ -284,6 +284,11 @@ free-space-tree
Enable the free space tree (mount option *space_cache=v2*) for persisting the
free space cache.
block-group-tree
(kernel support since 6.1)
Enable the block group tree to greatly reduce mount time for large filesystems.
BLOCK GROUPS, CHUNKS, RAID
--------------------------

View file

@ -171,7 +171,6 @@ static const struct btrfs_feature mkfs_features[] = {
.desc = "support zoned devices"
},
#endif
#if EXPERIMENTAL
{
.name = "block-group-tree",
.compat_ro_flag = BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE,
@ -181,6 +180,7 @@ static const struct btrfs_feature mkfs_features[] = {
VERSION_NULL(default),
.desc = "block group tree to reduce mount time"
},
#if EXPERIMENTAL
{
.name = "extent-tree-v2",
.incompat_flag = BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2,
@ -222,7 +222,6 @@ static const struct btrfs_feature runtime_features[] = {
VERSION_TO_STRING2(default, 5,15),
.desc = "free space tree (space_cache=v2)"
},
#if EXPERIMENTAL
{
.name = "block-group-tree",
.compat_ro_flag = BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE,
@ -232,7 +231,6 @@ static const struct btrfs_feature runtime_features[] = {
VERSION_NULL(default),
.desc = "block group tree to reduce mount time"
},
#endif
/* Keep this one last */
{
.name = "list-all",

View file

@ -70,6 +70,7 @@ static const char * const tune_usage[] = {
OPTLINE("-x", "enable skinny metadata extent refs (mkfs: skinny-metadata)"),
OPTLINE("-n", "enable no-holes feature (mkfs: no-holes, more efficient sparse file representation)"),
OPTLINE("-S <0|1>", "set/unset seeding status of a device"),
OPTLINE("--enable-block-group-tree", "enable block group tree (mkfs: block-group-tree, for less mount time)"),
"",
"UUID changes:",
OPTLINE("-u", "rewrite fsid, use a random one"),
@ -84,7 +85,6 @@ static const char * const tune_usage[] = {
"",
"EXPERIMENTAL FEATURES:",
OPTLINE("--csum CSUM", "switch checksum for data and metadata to CSUM"),
OPTLINE("-b", "enable block group tree (mkfs: block-group-tree, for less mount time)"),
#endif
NULL
};
@ -113,27 +113,22 @@ int BOX_MAIN(btrfstune)(int argc, char *argv[])
btrfs_config_init();
while(1) {
enum { GETOPT_VAL_CSUM = GETOPT_VAL_FIRST };
enum { GETOPT_VAL_CSUM = GETOPT_VAL_FIRST,
GETOPT_VAL_ENABLE_BLOCK_GROUP_TREE };
static const struct option long_options[] = {
{ "help", no_argument, NULL, GETOPT_VAL_HELP},
{ "enable-block-group-tree", no_argument, NULL,
GETOPT_VAL_ENABLE_BLOCK_GROUP_TREE},
#if EXPERIMENTAL
{ "csum", required_argument, NULL, GETOPT_VAL_CSUM },
#endif
{ NULL, 0, NULL, 0 }
};
#if EXPERIMENTAL
int c = getopt_long(argc, argv, "S:rxfuU:nmM:b", long_options, NULL);
#else
int c = getopt_long(argc, argv, "S:rxfuU:nmM:", long_options, NULL);
#endif
if (c < 0)
break;
switch(c) {
case 'b':
btrfs_warn_experimental("Feature: conversion to block-group-tree");
to_bg_tree = true;
break;
case 'S':
seeding_flag = 1;
seeding_value = arg_strtou64(optarg);
@ -167,6 +162,9 @@ int BOX_MAIN(btrfstune)(int argc, char *argv[])
ctree_flags |= OPEN_CTREE_IGNORE_FSID_MISMATCH;
change_metadata_uuid = 1;
break;
case GETOPT_VAL_ENABLE_BLOCK_GROUP_TREE:
to_bg_tree = true;
break;
#if EXPERIMENTAL
case GETOPT_VAL_CSUM:
btrfs_warn_experimental(