diff options
Diffstat (limited to 'xlators/cluster/afr/src')
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 5 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-dir-write.c | 7 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-dir-write.h | 4 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-common.c | 2 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-entry.c | 2 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr.h | 1 | 
6 files changed, 15 insertions, 6 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index e5330b4e468..d536b45547a 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -405,6 +405,11 @@ afr_local_cleanup (afr_local_t *local, xlator_t *this)                          dict_unref (local->cont.mkdir.params);  	} +	{ /* symlink */ +                if (local->cont.symlink.params) +                        dict_unref (local->cont.symlink.params); +	} +  	{ /* writev */  		GF_FREE (local->cont.writev.vector);  	} diff --git a/xlators/cluster/afr/src/afr-dir-write.c b/xlators/cluster/afr/src/afr-dir-write.c index 70da6f94955..5d5bf40e06a 100644 --- a/xlators/cluster/afr/src/afr-dir-write.c +++ b/xlators/cluster/afr/src/afr-dir-write.c @@ -1253,7 +1253,8 @@ afr_symlink_wind (call_frame_t *frame, xlator_t *this)  					   priv->children[i],   					   priv->children[i]->fops->symlink,  					   local->cont.symlink.linkpath, -					   &local->loc); +					   &local->loc, +                                           local->cont.symlink.params);  			if (!--call_count)  				break; @@ -1280,7 +1281,7 @@ afr_symlink_done (call_frame_t *frame, xlator_t *this)  int  afr_symlink (call_frame_t *frame, xlator_t *this, -	     const char *linkpath, loc_t *loc) +	     const char *linkpath, loc_t *loc, dict_t *params)  {  	afr_private_t * priv  = NULL;  	afr_local_t   * local = NULL; @@ -1324,6 +1325,8 @@ afr_symlink (call_frame_t *frame, xlator_t *this,          UNLOCK (&priv->read_child_lock);  	local->cont.symlink.linkpath = gf_strdup (linkpath); +        if (params) +                local->cont.symlink.params = dict_ref (params);          if (loc->parent)                  local->cont.symlink.parent_ino = loc->parent->ino; diff --git a/xlators/cluster/afr/src/afr-dir-write.h b/xlators/cluster/afr/src/afr-dir-write.h index 878e1e714cf..e2ed8c759d0 100644 --- a/xlators/cluster/afr/src/afr-dir-write.h +++ b/xlators/cluster/afr/src/afr-dir-write.h @@ -49,9 +49,9 @@ int32_t  afr_rename (call_frame_t *frame, xlator_t *this,  	    loc_t *oldloc, loc_t *newloc); -int32_t +int  afr_symlink (call_frame_t *frame, xlator_t *this, -	     const char *linkpath, loc_t *oldloc); +	     const char *linkpath, loc_t *oldloc, dict_t *params);  int32_t  afr_setdents (call_frame_t *frame, xlator_t *this, diff --git a/xlators/cluster/afr/src/afr-self-heal-common.c b/xlators/cluster/afr/src/afr-self-heal-common.c index fda879d3cb2..0e25be6944f 100644 --- a/xlators/cluster/afr/src/afr-self-heal-common.c +++ b/xlators/cluster/afr/src/afr-self-heal-common.c @@ -1115,7 +1115,7 @@ sh_missing_entries_symlink (call_frame_t *frame, xlator_t *this,  					   (void *) (long) i,  					   priv->children[i],  					   priv->children[i]->fops->symlink, -					   link, &local->loc); +					   link, &local->loc, NULL);  			if (!--call_count)  				break;  		} diff --git a/xlators/cluster/afr/src/afr-self-heal-entry.c b/xlators/cluster/afr/src/afr-self-heal-entry.c index 140795bdd7f..af6c0c68916 100644 --- a/xlators/cluster/afr/src/afr-self-heal-entry.c +++ b/xlators/cluster/afr/src/afr-self-heal-entry.c @@ -1341,7 +1341,7 @@ afr_sh_entry_impunge_symlink (call_frame_t *impunge_frame, xlator_t *this,  			   (void *) (long) child_index,  			   priv->children[child_index],  			   priv->children[child_index]->fops->symlink, -			   linkname, &impunge_local->loc); +			   linkname, &impunge_local->loc, NULL);  	return 0;  } diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index 85f66c8255c..af3e7f204a2 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -561,6 +561,7 @@ typedef struct _afr_local {                          uint64_t gen;                          ino_t parent_ino;  			inode_t *inode; +                        dict_t *params;  			struct iatt buf;                          struct iatt read_child_buf;  			char *linkpath;  | 
