summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-volume-set.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-volume-set.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volume-set.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
index 73cea5d5478..abc1573f372 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c
@@ -750,6 +750,30 @@ out:
return ret;
}
+static int
+validate_size(glusterd_volinfo_t *volinfo, dict_t *dict, char *key, char *value,
+ char **op_errstr)
+{
+ xlator_t *this = NULL;
+ uint64_t size = 0;
+ int ret = -1;
+
+ this = THIS;
+ GF_VALIDATE_OR_GOTO("glusterd", this, out);
+ ret = gf_string2bytesize_uint64(value, &size);
+ if (ret < 0) {
+ gf_asprintf(op_errstr,
+ "%s is not a valid size. %s "
+ "expects a valid value in bytes",
+ value, key);
+ gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_INVALID_ENTRY, "%s",
+ *op_errstr);
+ }
+out:
+ gf_msg_debug("glusterd", 0, "Returning %d", ret);
+
+ return ret;
+}
/* dispatch table for VOLUME SET
* -----------------------------
@@ -2346,6 +2370,15 @@ struct volopt_map_entry glusterd_volopt_map[] = {
.op_version = GD_OP_VERSION_3_13_0,
},
{
+ .key = "storage.reserve-size",
+ .voltype = "storage/posix",
+ .value = "0",
+ .validate_fn = validate_size,
+ .description = "If set, priority will be given to "
+ "storage.reserve-size over storage.reserve",
+ .op_version = GD_OP_VERSION_7_0,
+ },
+ {
.option = "health-check-timeout",
.key = "storage.health-check-timeout",
.type = NO_DOC,