From dd2c197c1d5d5942a65c860997ec1d5793ef249f Mon Sep 17 00:00:00 2001 From: Anand Avati Date: Fri, 19 Aug 2011 14:56:13 +0530 Subject: option validation: further fixes fixes in option handling changes Change-Id: I0a44cdb088e3f08cd43d583a580736d0903fa88c BUG: 3415 Reviewed-on: http://review.gluster.com/261 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- libglusterfs/src/options.c | 7 +++---- xlators/cluster/afr/src/afr.c | 15 +++++++++++++++ xlators/performance/write-behind/src/write-behind.c | 2 +- xlators/protocol/client/src/client.c | 3 +++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/libglusterfs/src/options.c b/libglusterfs/src/options.c index 37302e0daec..dee3c91854f 100644 --- a/libglusterfs/src/options.c +++ b/libglusterfs/src/options.c @@ -501,14 +501,13 @@ xlator_option_validate_addr (xlator_t *xl, const char *key, const char *value, if (!valid_internet_address ((char *)value)) { snprintf (errstr, 256, - "internet address '%s' does not conform to standards.", + "internet address '%s' does not conform to standards.", value); gf_log (xl->name, GF_LOG_ERROR, "%s", errstr); + if (op_errstr) + *op_errstr = gf_strdup (errstr); } - if (ret && op_errstr) - *op_errstr = gf_strdup (errstr); - ret = 0; return ret; diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index 289a27d6079..903060f4934 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -86,6 +86,18 @@ xlator_subvolume_index (xlator_t *this, xlator_t *subvol) } +int +xlator_subvolume_count (xlator_t *this) +{ + int i = 0; + xlator_list_t *list = NULL; + + for (list = this->children; list; list = list->next) + i++; + return i; +} + + int reconfigure (xlator_t *this, dict_t *options) { @@ -186,6 +198,7 @@ init (xlator_t *this) priv = this->private; priv->read_child = -1; + GF_OPTION_INIT ("read-subvolume", read_subvol, xlator, out); if (read_subvol) { priv->read_child = xlator_subvolume_index (this, read_subvol); @@ -245,6 +258,8 @@ init (xlator_t *this) priv->wait_count = 1; + child_count = xlator_subvolume_count (this); + priv->child_count = child_count; LOCK_INIT (&priv->lock); diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c index 1eff4385ae3..361c90d7eb2 100644 --- a/xlators/performance/write-behind/src/write-behind.c +++ b/xlators/performance/write-behind/src/write-behind.c @@ -3035,7 +3035,7 @@ struct volume_options options[] = { }, { .key = {"disable-for-first-nbytes"}, .type = GF_OPTION_TYPE_SIZET, - .min = 1, + .min = 0, .max = 1 * GF_UNIT_MB, .default_value = "0", }, diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c index 355b0d16043..c0d52488a9c 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -2365,6 +2365,9 @@ struct volume_options options[] = { { .key = {"remote-host"}, .type = GF_OPTION_TYPE_INTERNET_ADDRESS }, + { .key = {"remote-port"}, + .type = GF_OPTION_TYPE_INT, + }, { .key = {"remote-subvolume"}, .type = GF_OPTION_TYPE_ANY }, -- cgit