summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libglusterfs/src/glusterfs.h4
-rw-r--r--libglusterfs/src/xlator.c37
-rw-r--r--libglusterfs/src/xlator.h1
3 files changed, 38 insertions, 4 deletions
diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h
index 76891f5b05f..6ec8a2a6316 100644
--- a/libglusterfs/src/glusterfs.h
+++ b/libglusterfs/src/glusterfs.h
@@ -225,8 +225,8 @@ struct _cmd_args {
/* fuse options */
int fuse_direct_io_mode_flag;
- unsigned int fuse_entry_timeout;
- unsigned int fuse_attribute_timeout;
+ double fuse_entry_timeout;
+ double fuse_attribute_timeout;
char *volume_name;
int non_local; /* Used only by darwin os,
used for '-o local' option */
diff --git a/libglusterfs/src/xlator.c b/libglusterfs/src/xlator.c
index 2b17cc7f677..19f6a7f385b 100644
--- a/libglusterfs/src/xlator.c
+++ b/libglusterfs/src/xlator.c
@@ -286,6 +286,7 @@ _volume_option_value_validate (xlator_t *xl,
{
uint32_t percent = 0;
+
/* Check if the value is valid percentage */
if (gf_string2percent (pair->value->data,
&percent) != 0) {
@@ -341,13 +342,45 @@ _volume_option_value_validate (xlator_t *xl,
ret = 0;
}
break;
+ case GF_OPTION_TYPE_DOUBLE:
+ {
+ double input_time = 0.0;
+
+ /* Check if the value is valid double */
+ if (gf_string2double (pair->value->data,
+ &input_time) != 0) {
+ gf_log (xl->name,
+ GF_LOG_ERROR,
+ "invalid time format \"%s\" in \"option %s\"",
+ pair->value->data, pair->key);
+ goto out;
+ }
+
+ if (input_time < 0.0) {
+ gf_log (xl->name,
+ GF_LOG_ERROR,
+ "invalid time format \"%s\" in \"option %s\"",
+ pair->value->data, pair->key);
+ goto out;
+ }
+
+ if ((opt->min == 0) && (opt->max == 0)) {
+ gf_log (xl->name, GF_LOG_DEBUG,
+ "no range check required for 'option %s %s'",
+ pair->key, pair->value->data);
+ ret = 0;
+ goto out;
+ }
+ ret = 0;
+ }
+ break;
case GF_OPTION_TYPE_ANY:
/* NO CHECK */
ret = 0;
break;
}
-
- out:
+
+out:
return ret;
}
diff --git a/libglusterfs/src/xlator.h b/libglusterfs/src/xlator.h
index eadc9fd1a6f..a24184ab8f0 100644
--- a/libglusterfs/src/xlator.h
+++ b/libglusterfs/src/xlator.h
@@ -752,6 +752,7 @@ typedef enum {
GF_OPTION_TYPE_XLATOR,
GF_OPTION_TYPE_PATH,
GF_OPTION_TYPE_TIME,
+ GF_OPTION_TYPE_DOUBLE,
} volume_option_type_t;
#define ZR_VOLUME_MAX_NUM_KEY 4