diff options
-rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index bb97e1007ad..c056872d7b4 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -5035,20 +5035,33 @@ dht_mknod_linkfile_create_cbk (call_frame_t *frame, void *cookie, struct iatt *preparent, struct iatt *postparent, dict_t *xdata) { - dht_local_t *local = NULL; - xlator_t *cached_subvol = NULL; + dht_local_t *local = NULL; + xlator_t *cached_subvol = NULL; + dht_conf_t *conf = NULL; local = frame->local; - if (op_ret == -1) - goto err; if (!local || !local->cached_subvol) { op_errno = EINVAL; goto err; } + if (op_ret == -1) + goto err; + + conf = this->private; + if (!conf) { + local->op_errno = EINVAL; + goto err; + } + cached_subvol = local->cached_subvol; + if (local->params) { + dict_del (local->params, conf->link_xattr_name); + dict_del (local->params, GLUSTERFS_INTERNAL_FOP_KEY); + } + STACK_WIND_COOKIE (frame, dht_newfile_cbk, (void *)cached_subvol, cached_subvol, cached_subvol->fops->mknod, &local->loc, local->mode, local->rdev, local->umask, @@ -5833,17 +5846,34 @@ dht_create_linkfile_create_cbk (call_frame_t *frame, void *cookie, struct iatt *preparent, struct iatt *postparent, dict_t *xdata) { - dht_local_t *local = NULL; - xlator_t *cached_subvol = NULL; + dht_local_t *local = NULL; + xlator_t *cached_subvol = NULL; + dht_conf_t *conf = NULL; local = frame->local; + if (!local) { + op_errno = EINVAL; + goto err; + } + if (op_ret == -1) { local->op_errno = op_errno; goto err; } + conf = this->private; + if (!conf) { + local->op_errno = EINVAL; + goto err; + } + cached_subvol = local->cached_subvol; + if (local->params) { + dict_del (local->params, conf->link_xattr_name); + dict_del (local->params, GLUSTERFS_INTERNAL_FOP_KEY); + } + STACK_WIND (frame, dht_create_cbk, cached_subvol, cached_subvol->fops->create, &local->loc, local->flags, local->mode, |