summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-03-13 03:23:27 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2018-03-13 03:23:27 -0400
commit6aabc97dc9c895cb1bb2423c84c7131bff7dd6c1 (patch)
tree8dd7d9ced909b8f86c50a96ab50684684c9d2b58
parent35d3f92ad57eae226e255817131fa02605aac1b5 (diff)
Add --durability to format
-rw-r--r--cmd_format.c7
-rw-r--r--libbcachefs.c1
-rw-r--r--libbcachefs.h2
3 files changed, 10 insertions, 0 deletions
diff --git a/cmd_format.c b/cmd_format.c
index 065efd9..75efd52 100644
--- a/cmd_format.c
+++ b/cmd_format.c
@@ -57,6 +57,7 @@ x(0, bucket_size, "size", "Bucket size") \
x('g', group, "label", "Disk group")\
x(0, discard, NULL, NULL) \
x(0, data_allowed, "journal,btree,data", "Allowed types of data on this device")\
+x(0, durability, "#", "Number of times data written to this device will have been considered replicated")\
t("Device specific options must come before corresponding devices, e.g.") \
t(" bcachefs format --group cache /dev/sdb --tier 1 /dev/sdc") \
t("") \
@@ -96,6 +97,7 @@ static void usage(void)
" --fs_size=size Size of filesystem on device\n"
" --bucket=size Bucket size\n"
" --discard Enable discards\n"
+ " --durability=# Device durability (0-4)\n"
" -g, --group=label Disk group\n"
"\n"
" -q, --quiet Only print errors\n"
@@ -261,6 +263,11 @@ int cmd_format(int argc, char *argv[])
read_flag_list_or_die(optarg,
bch2_data_types, "data type");
break;
+ case O_durability:
+ if (kstrtouint(optarg, 10, &dev_opts.durability) ||
+ dev_opts.durability > BCH_REPLICAS_MAX)
+ die("invalid durability");
+ break;
case O_no_opt:
dev_opts.path = strdup(optarg);
darray_append(devices, dev_opts);
diff --git a/libbcachefs.c b/libbcachefs.c
index cd277fa..052ca35 100644
--- a/libbcachefs.c
+++ b/libbcachefs.c
@@ -247,6 +247,7 @@ struct bch_sb *bch2_format(struct format_opts opts,
SET_BCH_MEMBER_REPLACEMENT(m, CACHE_REPLACEMENT_LRU);
SET_BCH_MEMBER_DISCARD(m, i->discard);
SET_BCH_MEMBER_DATA_ALLOWED(m, i->data_allowed);
+ SET_BCH_MEMBER_DURABILITY(m, i->durability + 1);
}
/* Disk groups */
diff --git a/libbcachefs.h b/libbcachefs.h
index deaa287..8537a04 100644
--- a/libbcachefs.h
+++ b/libbcachefs.h
@@ -59,6 +59,7 @@ struct dev_opts {
unsigned bucket_size;
const char *group;
unsigned data_allowed;
+ unsigned durability;
bool discard;
u64 nbuckets;
@@ -71,6 +72,7 @@ static inline struct dev_opts dev_opts_default()
{
return (struct dev_opts) {
.data_allowed = ~0U << 2,
+ .durability = 1,
};
}