diff options
Diffstat (limited to 'xlators/cluster/afr/src/afr.c')
| -rw-r--r-- | xlators/cluster/afr/src/afr.c | 33 | 
1 files changed, 27 insertions, 6 deletions
diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index 91189267fe7..c041adc99e0 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -1128,6 +1128,8 @@ afr_fd_ctx_set (xlator_t *this, fd_t *fd)                  if (ret < 0) {                          op_ret = ret;                  } + +                INIT_LIST_HEAD (&fd_ctx->entries);          }  unlock:          UNLOCK (&fd->lock); @@ -2693,11 +2695,12 @@ init (xlator_t *this)  	int             ret         = -1;  	int             op_errno    = 0; -	char * read_subvol = NULL; -	char * fav_child   = NULL; -	char * self_heal   = NULL; -        char * algo        = NULL; -	char * change_log  = NULL; +	char * read_subvol     = NULL; +	char * fav_child       = NULL; +	char * self_heal       = NULL; +        char * algo            = NULL; +	char * change_log      = NULL; +	char * strict_readdir  = NULL;          int32_t background_count  = 0;  	int32_t lock_server_count = 1; @@ -2893,6 +2896,20 @@ init (xlator_t *this)  		priv->entry_lock_server_count = lock_server_count;  	} +	priv->strict_readdir = _gf_false; + +	dict_ret = dict_get_str (this->options, "strict-readdir", +				 &strict_readdir); +	if (dict_ret == 0) { +		ret = gf_string2boolean (strict_readdir, &priv->strict_readdir); +		if (ret < 0) { +			gf_log (this->name, GF_LOG_WARNING, +				"Invalid 'option strict-readdir %s'. " +				"Defaulting to strict-readdir as 'off'.", +				strict_readdir); +		} +	} +  	trav = this->children;  	while (trav) {  		if (!read_ret && !strcmp (read_subvol, trav->xlator->name)) { @@ -3037,7 +3054,8 @@ struct xlator_dumpops dumpops = {  struct xlator_cbks cbks = { -        .release     = afr_release, +	.release     = afr_release, +	.releasedir  = afr_releasedir,  }; @@ -3090,5 +3108,8 @@ struct volume_options options[] = {  	  .type = GF_OPTION_TYPE_INT,  	  .min  = 0  	}, +	{ .key  = {"strict-readdir"}, +	  .type = GF_OPTION_TYPE_BOOL, +	},  	{ .key  = {NULL} },  };  | 
