diff options
Diffstat (limited to 'xlators/cluster/afr/src/afr-common.c')
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 9803744a0..caf724593 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -763,6 +763,7 @@ afr_local_transaction_cleanup (afr_local_t *local, xlator_t *this)          GF_FREE (local->transaction.child_errno);          GF_FREE (local->child_errno); +        GF_FREE (local->transaction.eager_lock);          GF_FREE (local->transaction.basename);          GF_FREE (local->transaction.new_basename); @@ -2020,6 +2021,22 @@ afr_fd_ctx_set (xlator_t *this, fd_t *fd)                          goto unlock;                  } +                fd_ctx->lock_piggyback = GF_CALLOC (sizeof (*fd_ctx->lock_piggyback), +                                                    priv->child_count, +                                                    gf_afr_mt_char); +                if (!fd_ctx->lock_piggyback) { +                        ret = -ENOMEM; +                        goto unlock; +                } + +                fd_ctx->lock_acquired = GF_CALLOC (sizeof (*fd_ctx->lock_acquired), +                                                    priv->child_count, +                                                    gf_afr_mt_char); +                if (!fd_ctx->lock_acquired) { +                        ret = -ENOMEM; +                        goto unlock; +                } +                  fd_ctx->up_count   = priv->up_count;                  fd_ctx->down_count = priv->down_count; @@ -2274,6 +2291,12 @@ afr_cleanup_fd_ctx (xlator_t *this, fd_t *fd)                          GF_FREE (paused_call);                  } +                if (fd_ctx->lock_piggyback) +                        GF_FREE (fd_ctx->lock_piggyback); + +                if (fd_ctx->lock_acquired) +                        GF_FREE (fd_ctx->lock_acquired); +                  GF_FREE (fd_ctx);          } @@ -3593,6 +3616,14 @@ afr_transaction_local_init (afr_local_t *local, xlator_t *this)          if (!local->child_errno)                  goto out; +        local->transaction.eager_lock = +                GF_CALLOC (sizeof (*local->transaction.eager_lock), +                           priv->child_count, +                           gf_afr_mt_int32_t); + +        if (!local->transaction.eager_lock) +                goto out; +          local->pending = GF_CALLOC (sizeof (*local->pending),                                      priv->child_count,                                      gf_afr_mt_int32_t);  | 
