b3ba9dc0aa
- adjust fs size to correct size (bnc#744593) - man page documentation updates - do not package obsolete utilities - mkfs: store correct size of device in superblock (bnc#730103) - updated restriper/balance commands to match kernel version - device scanning fixes for dm and multipath (bnc#749540) OBS-URL: https://build.opensuse.org/package/show/filesystems/btrfsprogs?expand=0&rev=121
73 lines
2.6 KiB
Diff
73 lines
2.6 KiB
Diff
From c64c11e0a2918e6319be9337a756979e1f398730 Mon Sep 17 00:00:00 2001
|
|
From: Ilya Dryomov <idryomov@gmail.com>
|
|
Date: Tue, 13 Mar 2012 22:15:07 +0200
|
|
Subject: [PATCH 6/8] Btrfs-progs: allow dup for data chunks in mixed mode
|
|
|
|
Before commit a46e7ff2 was merged it was possible to create dup for
|
|
data+metadata chunks (mixed mode) by giving -m raid1 -d raid1 -M to
|
|
mkfs. a46e7ff2 purposefully disabled behind the scenes profile
|
|
upgrading/downgrading, so give users a chance to pick dup explicitly and
|
|
bail if dup for data is requested in normal mode.
|
|
|
|
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
|
---
|
|
mkfs.c | 16 ++++++++++++----
|
|
1 files changed, 12 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/mkfs.c b/mkfs.c
|
|
index acdb646..cf571c4 100644
|
|
--- a/mkfs.c
|
|
+++ b/mkfs.c
|
|
@@ -258,17 +258,23 @@ static int create_raid_groups(struct btrfs_trans_handle *trans,
|
|
|
|
if (metadata_profile & ~allowed) {
|
|
fprintf(stderr, "unable to create FS with metadata "
|
|
- "profile %llu (%llu devices)\n", metadata_profile,
|
|
+ "profile %llu (have %llu devices)\n", metadata_profile,
|
|
num_devices);
|
|
exit(1);
|
|
}
|
|
if (data_profile & ~allowed) {
|
|
fprintf(stderr, "unable to create FS with data "
|
|
- "profile %llu (%llu devices)\n", data_profile,
|
|
+ "profile %llu (have %llu devices)\n", data_profile,
|
|
num_devices);
|
|
exit(1);
|
|
}
|
|
|
|
+ /* allow dup'ed data chunks only in mixed mode */
|
|
+ if (!mixed && (data_profile & BTRFS_BLOCK_GROUP_DUP)) {
|
|
+ fprintf(stderr, "dup for data is allowed only in mixed mode\n");
|
|
+ exit(1);
|
|
+ }
|
|
+
|
|
if (allowed & metadata_profile) {
|
|
u64 meta_flags = BTRFS_BLOCK_GROUP_METADATA;
|
|
|
|
@@ -329,7 +335,7 @@ static void print_usage(void)
|
|
fprintf(stderr, "options:\n");
|
|
fprintf(stderr, "\t -A --alloc-start the offset to start the FS\n");
|
|
fprintf(stderr, "\t -b --byte-count total number of bytes in the FS\n");
|
|
- fprintf(stderr, "\t -d --data data profile, raid0, raid1, raid10 or single\n");
|
|
+ fprintf(stderr, "\t -d --data data profile, raid0, raid1, raid10, dup or single\n");
|
|
fprintf(stderr, "\t -f --force don't check if a device is already mounted\n");
|
|
fprintf(stderr, "\t -l --leafsize size of btree leaves\n");
|
|
fprintf(stderr, "\t -L --label set a label\n");
|
|
@@ -357,10 +363,12 @@ static u64 parse_profile(char *s)
|
|
return BTRFS_BLOCK_GROUP_RAID1;
|
|
} else if (strcmp(s, "raid10") == 0) {
|
|
return BTRFS_BLOCK_GROUP_RAID10;
|
|
+ } else if (strcmp(s, "dup") == 0) {
|
|
+ return BTRFS_BLOCK_GROUP_DUP;
|
|
} else if (strcmp(s, "single") == 0) {
|
|
return 0;
|
|
} else {
|
|
- fprintf(stderr, "Unknown option %s\n", s);
|
|
+ fprintf(stderr, "Unknown profile %s\n", s);
|
|
print_usage();
|
|
}
|
|
/* not reached */
|
|
--
|
|
1.7.6.233.gd79bc
|
|
|