diff options
author | Sakshi <sabansal@redhat.com> | 2015-09-23 15:16:34 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2016-02-21 22:44:42 -0800 |
commit | 976c852eeb8af0abfad8862e5b53e3d82c79ee98 (patch) | |
tree | 0ad3ede81c3072f77ecde6408af3675a5c6d98da /xlators/mgmt/glusterd | |
parent | e6d8e4fb469edf0e58b14ee02abb1ecd625eb48d (diff) |
glusterd: validate function for replica volume options
Backport of http://review.gluster.org/#/c/12215/
> Change-Id: I5b4a28db101e9f7e07f4b388c7a2594051c9e8dd
> BUG: 1265479
> Signed-off-by: Sakshi <sabansal@redhat.com>
> Reviewed-on: http://review.gluster.org/12215
> Tested-by: NetBSD Build System <jenkins@build.gluster.org>
> Tested-by: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
BUG: 1308414
Change-Id: I1ce7c326da82749f8fd13dff11b803c607c853bb
Signed-off-by: Sakshi <sabansal@redhat.com>
Reviewed-on: http://review.gluster.org/13444
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-set.c | 54 |
1 files changed, 42 insertions, 12 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index 39db2297592..fcc303603bf 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -715,6 +715,33 @@ out: } static int +validate_replica (glusterd_volinfo_t *volinfo, dict_t *dict, char *key, + char *value, char **op_errstr) +{ + char errstr[2048] = ""; + int ret = 0; + xlator_t *this = NULL; + + this = THIS; + GF_ASSERT (this); + + if (volinfo->replica_count == 1) { + snprintf (errstr, sizeof (errstr), + "Cannot set %s for a non-replicate volume.", key); + gf_msg (this->name, GF_LOG_ERROR, 0, + GD_MSG_VOL_NOT_REPLICA, "%s", errstr); + *op_errstr = gf_strdup (errstr); + ret = -1; + goto out; + } + +out: + gf_msg_debug (this->name, 0, "Returning %d", ret); + + return ret; +} + +static int validate_subvols_per_directory (glusterd_volinfo_t *volinfo, dict_t *dict, char *key, char *value, char **op_errstr) { @@ -990,20 +1017,23 @@ struct volopt_map_entry glusterd_volopt_map[] = { .op_version = 1, .flags = OPT_FLAG_CLIENT_OPT }, - { .key = "cluster.metadata-self-heal", - .voltype = "cluster/replicate", - .op_version = 1, - .flags = OPT_FLAG_CLIENT_OPT + { .key = "cluster.metadata-self-heal", + .voltype = "cluster/replicate", + .op_version = 1, + .validate_fn = validate_replica, + .flags = OPT_FLAG_CLIENT_OPT }, - { .key = "cluster.data-self-heal", - .voltype = "cluster/replicate", - .op_version = 1, - .flags = OPT_FLAG_CLIENT_OPT + { .key = "cluster.data-self-heal", + .voltype = "cluster/replicate", + .op_version = 1, + .validate_fn = validate_replica, + .flags = OPT_FLAG_CLIENT_OPT }, - { .key = "cluster.entry-self-heal", - .voltype = "cluster/replicate", - .op_version = 1, - .flags = OPT_FLAG_CLIENT_OPT + { .key = "cluster.entry-self-heal", + .voltype = "cluster/replicate", + .op_version = 1, + .validate_fn = validate_replica, + .flags = OPT_FLAG_CLIENT_OPT }, { .key = "cluster.self-heal-daemon", .voltype = "cluster/replicate", |