From fcd0fd043749cd2623a918cf9862d10e2a227ae4 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Tue, 21 Jul 2020 12:13:27 +0200 Subject: [PATCH 1/2] btrfs-progs: mkfs: clean up default profile settings Extract the defaults for data and metadata profiles to a header and use the symbolic names instead of hardcoding the profiles. Signed-off-by: David Sterba (cherry picked from commit 071cb030a41fde2cab07217b52ba7c86b72fb8d8) --- mkfs/common.h | 10 ++++++++++ mkfs/main.c | 21 ++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/mkfs/common.h b/mkfs/common.h index 426852be..61969dcc 100644 --- a/mkfs/common.h +++ b/mkfs/common.h @@ -28,6 +28,16 @@ #define BTRFS_MKFS_SYSTEM_GROUP_SIZE SZ_4M #define BTRFS_MKFS_SMALL_VOLUME_SIZE SZ_1G +/* + * Default settings for block group types + */ +#define BTRFS_MKFS_DEFAULT_DATA_ONE_DEVICE 0 /* SINGLE */ +#define BTRFS_MKFS_DEFAULT_META_ONE_DEVICE BTRFS_BLOCK_GROUP_DUP +#define BTRFS_MKFS_DEFAULT_META_ONE_DEVICE_SSD 0 /* SINGLE */ + +#define BTRFS_MKFS_DEFAULT_DATA_MULTI_DEVICE BTRFS_BLOCK_GROUP_RAID0 +#define BTRFS_MKFS_DEFAULT_META_MULTI_DEVICE BTRFS_BLOCK_GROUP_RAID1 + /* * Tree root blocks created during mkfs */ diff --git a/mkfs/main.c b/mkfs/main.c index 0a4de617..6c9a24a4 100644 --- a/mkfs/main.c +++ b/mkfs/main.c @@ -1144,19 +1144,30 @@ int BOX_MAIN(mkfs)(int argc, char **argv) * For mixed groups defaults are single/single. */ if (!mixed) { + u64 tmp; + if (!metadata_profile_opt) { if (dev_cnt == 1 && ssd && verbose) printf("Detected a SSD, turning off metadata " "duplication. Mkfs with -m dup if you want to " "force metadata duplication.\n"); - metadata_profile = (dev_cnt > 1) ? - BTRFS_BLOCK_GROUP_RAID1 : (ssd) ? - 0: BTRFS_BLOCK_GROUP_DUP; + if (dev_cnt > 1) { + tmp = BTRFS_MKFS_DEFAULT_META_MULTI_DEVICE; + } else { + if (ssd) + tmp = BTRFS_MKFS_DEFAULT_META_ONE_DEVICE_SSD; + else + tmp = BTRFS_MKFS_DEFAULT_META_ONE_DEVICE; + } + metadata_profile = tmp; } if (!data_profile_opt) { - data_profile = (dev_cnt > 1) ? - BTRFS_BLOCK_GROUP_RAID0 : 0; /* raid0 or single */ + if (dev_cnt > 1) + tmp = BTRFS_MKFS_DEFAULT_DATA_MULTI_DEVICE; + else + tmp = BTRFS_MKFS_DEFAULT_DATA_ONE_DEVICE; + data_profile = tmp; } } else { u32 best_nodesize = max_t(u32, sysconf(_SC_PAGESIZE), sectorsize); -- 2.26.2