diff options
| author | Harshavardhana <harsha@zresearch.com> | 2009-02-19 04:59:06 -0800 | 
|---|---|---|
| committer | Anand V. Avati <avati@amp.gluster.com> | 2009-02-21 21:14:41 +0530 | 
| commit | a2131aeafa94d671b0121631922d823c8a7ab988 (patch) | |
| tree | 637e748d679061f3b291051fcb35bc84ac9f2a2a /libglusterfs/src | |
| parent | b5e0ee918fdff566e45bb255130b9efa6b8fb7b0 (diff) | |
attritbute and entry timeout values under volume now support float/double values
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/glusterfs.h | 4 | ||||
| -rw-r--r-- | libglusterfs/src/xlator.c | 37 | ||||
| -rw-r--r-- | libglusterfs/src/xlator.h | 1 | 
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  | 
