diff options
author | Anand V. Avati <avati@blackhole.gluster.com> | 2010-09-29 00:28:06 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-09-29 01:43:20 -0700 |
commit | 25e4eefc40de8fc47260c1d8209679269686c162 (patch) | |
tree | c16d442bea52c14b1fa50a476314e2e638bffffc /xlators/cluster/afr | |
parent | 28980e69cf720a614fdd6666da5021524bc1f071 (diff) |
whitespace cleanup
Signed-off-by: Anand V. Avati <avati@blackhole.gluster.com>
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1235 (Bug for all pump/migrate commits)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1235
Diffstat (limited to 'xlators/cluster/afr')
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 1914 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-inode-write.c | 1768 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-transaction.c | 153 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr.h | 30 |
4 files changed, 1937 insertions, 1928 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 0abfb1e35b3..13eb57e3ec5 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -118,11 +118,11 @@ afr_set_split_brain (xlator_t *this, inode_t *inode, gf_boolean_t set) } if (set) { - ctx = (~AFR_ICTX_SPLIT_BRAIN_MASK & ctx) + ctx = (~AFR_ICTX_SPLIT_BRAIN_MASK & ctx) | (0xFFFFFFFFFFFFFFFFULL & AFR_ICTX_SPLIT_BRAIN_MASK); - } else { - ctx = (~AFR_ICTX_SPLIT_BRAIN_MASK & ctx); - } + } else { + ctx = (~AFR_ICTX_SPLIT_BRAIN_MASK & ctx); + } __inode_ctx_put (inode, this, ctx); } UNLOCK (&inode->lock); @@ -247,62 +247,62 @@ out: void afr_local_sh_cleanup (afr_local_t *local, xlator_t *this) { - afr_self_heal_t *sh = NULL; - afr_private_t *priv = NULL; - int i = 0; - - - sh = &local->self_heal; - priv = this->private; - - if (sh->buf) - GF_FREE (sh->buf); - - if (sh->xattr) { - for (i = 0; i < priv->child_count; i++) { - if (sh->xattr[i]) { - dict_unref (sh->xattr[i]); - sh->xattr[i] = NULL; - } - } - GF_FREE (sh->xattr); - } - - if (sh->child_errno) - GF_FREE (sh->child_errno); - - if (sh->pending_matrix) { - for (i = 0; i < priv->child_count; i++) { - GF_FREE (sh->pending_matrix[i]); - } - GF_FREE (sh->pending_matrix); - } - - if (sh->delta_matrix) { - for (i = 0; i < priv->child_count; i++) { - GF_FREE (sh->delta_matrix[i]); - } - GF_FREE (sh->delta_matrix); - } - - if (sh->sources) - GF_FREE (sh->sources); - - if (sh->success) - GF_FREE (sh->success); - - if (sh->locked_nodes) - GF_FREE (sh->locked_nodes); - - if (sh->healing_fd && !sh->healing_fd_opened) { - fd_unref (sh->healing_fd); - sh->healing_fd = NULL; - } + afr_self_heal_t *sh = NULL; + afr_private_t *priv = NULL; + int i = 0; + + + sh = &local->self_heal; + priv = this->private; + + if (sh->buf) + GF_FREE (sh->buf); + + if (sh->xattr) { + for (i = 0; i < priv->child_count; i++) { + if (sh->xattr[i]) { + dict_unref (sh->xattr[i]); + sh->xattr[i] = NULL; + } + } + GF_FREE (sh->xattr); + } + + if (sh->child_errno) + GF_FREE (sh->child_errno); + + if (sh->pending_matrix) { + for (i = 0; i < priv->child_count; i++) { + GF_FREE (sh->pending_matrix[i]); + } + GF_FREE (sh->pending_matrix); + } + + if (sh->delta_matrix) { + for (i = 0; i < priv->child_count; i++) { + GF_FREE (sh->delta_matrix[i]); + } + GF_FREE (sh->delta_matrix); + } + + if (sh->sources) + GF_FREE (sh->sources); + + if (sh->success) + GF_FREE (sh->success); + + if (sh->locked_nodes) + GF_FREE (sh->locked_nodes); + + if (sh->healing_fd && !sh->healing_fd_opened) { + fd_unref (sh->healing_fd); + sh->healing_fd = NULL; + } if (sh->linkname) GF_FREE ((char *)sh->linkname); - loc_wipe (&sh->parent_loc); + loc_wipe (&sh->parent_loc); } @@ -334,14 +334,14 @@ afr_local_transaction_cleanup (afr_local_t *local, xlator_t *this) GF_FREE (local->internal_lock.lower_locked_nodes); - GF_FREE (local->transaction.child_errno); - GF_FREE (local->child_errno); + GF_FREE (local->transaction.child_errno); + GF_FREE (local->child_errno); - GF_FREE (local->transaction.basename); - GF_FREE (local->transaction.new_basename); + GF_FREE (local->transaction.basename); + GF_FREE (local->transaction.new_basename); - loc_wipe (&local->transaction.parent_loc); - loc_wipe (&local->transaction.new_parent_loc); + loc_wipe (&local->transaction.parent_loc); + loc_wipe (&local->transaction.new_parent_loc); } @@ -351,27 +351,27 @@ afr_local_cleanup (afr_local_t *local, xlator_t *this) int i; afr_private_t * priv = NULL; - if (!local) - return; + if (!local) + return; - afr_local_sh_cleanup (local, this); + afr_local_sh_cleanup (local, this); afr_local_transaction_cleanup (local, this); priv = this->private; - loc_wipe (&local->loc); - loc_wipe (&local->newloc); + loc_wipe (&local->loc); + loc_wipe (&local->newloc); - if (local->fd) - fd_unref (local->fd); + if (local->fd) + fd_unref (local->fd); - if (local->xattr_req) - dict_unref (local->xattr_req); + if (local->xattr_req) + dict_unref (local->xattr_req); - GF_FREE (local->child_up); + GF_FREE (local->child_up); - { /* lookup */ + { /* lookup */ if (local->cont.lookup.xattrs) { for (i = 0; i < priv->child_count; i++) { if (local->cont.lookup.xattrs[i]) { @@ -383,63 +383,63 @@ afr_local_cleanup (afr_local_t *local, xlator_t *this) local->cont.lookup.xattrs = NULL; } - if (local->cont.lookup.xattr) { + if (local->cont.lookup.xattr) { dict_unref (local->cont.lookup.xattr); } if (local->cont.lookup.inode) { inode_unref (local->cont.lookup.inode); } - } + } - { /* getxattr */ - if (local->cont.getxattr.name) - GF_FREE (local->cont.getxattr.name); - } + { /* getxattr */ + if (local->cont.getxattr.name) + GF_FREE (local->cont.getxattr.name); + } - { /* lk */ - if (local->cont.lk.locked_nodes) - GF_FREE (local->cont.lk.locked_nodes); - } + { /* lk */ + if (local->cont.lk.locked_nodes) + GF_FREE (local->cont.lk.locked_nodes); + } - { /* create */ - if (local->cont.create.fd) - fd_unref (local->cont.create.fd); + { /* create */ + if (local->cont.create.fd) + fd_unref (local->cont.create.fd); if (local->cont.create.params) dict_unref (local->cont.create.params); - } + } - { /* mknod */ + { /* mknod */ if (local->cont.mknod.params) dict_unref (local->cont.mknod.params); - } + } - { /* mkdir */ + { /* mkdir */ if (local->cont.mkdir.params) dict_unref (local->cont.mkdir.params); - } + } - { /* symlink */ + { /* symlink */ if (local->cont.symlink.params) dict_unref (local->cont.symlink.params); - } + } - { /* writev */ - GF_FREE (local->cont.writev.vector); - } + { /* writev */ + GF_FREE (local->cont.writev.vector); + } - { /* setxattr */ - if (local->cont.setxattr.dict) - dict_unref (local->cont.setxattr.dict); - } + { /* setxattr */ + if (local->cont.setxattr.dict) + dict_unref (local->cont.setxattr.dict); + } - { /* removexattr */ - GF_FREE (local->cont.removexattr.name); - } + { /* removexattr */ + GF_FREE (local->cont.removexattr.name); + } - { /* symlink */ - GF_FREE (local->cont.symlink.linkpath); - } + { /* symlink */ + GF_FREE (local->cont.symlink.linkpath); + } { /* opendir */ if (local->cont.opendir.checksum) @@ -451,18 +451,18 @@ afr_local_cleanup (afr_local_t *local, xlator_t *this) int afr_frame_return (call_frame_t *frame) { - afr_local_t *local = NULL; - int call_count = 0; + afr_local_t *local = NULL; + int call_count = 0; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - call_count = --local->call_count; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + call_count = --local->call_count; + } + UNLOCK (&frame->lock); - return call_count; + return call_count; } @@ -473,69 +473,69 @@ afr_frame_return (call_frame_t *frame) int afr_up_children_count (int child_count, unsigned char *child_up) { - int i = 0; - int ret = 0; + int i = 0; + int ret = 0; - for (i = 0; i < child_count; i++) - if (child_up[i]) - ret++; - return ret; + for (i = 0; i < child_count; i++) + if (child_up[i]) + ret++; + return ret; } ino64_t afr_itransform (ino64_t ino, int child_count, int child_index) { - ino64_t scaled_ino = -1; + ino64_t scaled_ino = -1; - if (ino == ((uint64_t) -1)) { - scaled_ino = ((uint64_t) -1); - goto out; - } + if (ino == ((uint64_t) -1)) { + scaled_ino = ((uint64_t) -1); + goto out; + } - scaled_ino = (ino * child_count) + child_index; + scaled_ino = (ino * child_count) + child_index; out: - return scaled_ino; + return scaled_ino; } int afr_deitransform_orig (ino64_t ino, int child_count) { - int index = -1; + int index = -1; - index = ino % child_count; + index = ino % child_count; - return index; + return index; } int afr_deitransform (ino64_t ino, int child_count) { - return 0; + return 0; } int afr_self_heal_lookup_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - local = frame->local; + local = frame->local; - if (local->govinda_gOvinda) { + if (local->govinda_gOvinda) { afr_set_split_brain (this, local->cont.lookup.inode, _gf_true); - } + } - AFR_STACK_UNWIND (lookup, frame, local->op_ret, local->op_errno, - local->cont.lookup.inode, - &local->cont.lookup.buf, - local->cont.lookup.xattr, + AFR_STACK_UNWIND (lookup, frame, local->op_ret, local->op_errno, + local->cont.lookup.inode, + &local->cont.lookup.buf, + local->cont.lookup.xattr, &local->cont.lookup.postparent); - return 0; + return 0; } @@ -543,7 +543,7 @@ static void afr_lookup_collect_xattr (afr_local_t *local, xlator_t *this, int child_index, dict_t *xattr) { - uint32_t open_fd_count = 0; + uint32_t open_fd_count = 0; uint32_t inodelk_count = 0; uint32_t entrylk_count = 0; @@ -767,30 +767,30 @@ __error_more_important (int32_t old_errno, int32_t new_errno) int afr_fresh_lookup_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno, - inode_t *inode, struct iatt *buf, dict_t *xattr, + xlator_t *this, int32_t op_ret, int32_t op_errno, + inode_t *inode, struct iatt *buf, dict_t *xattr, struct iatt *postparent) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; - struct iatt * lookup_buf = NULL; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; + struct iatt * lookup_buf = NULL; - int call_count = -1; - int child_index = -1; + int call_count = -1; + int child_index = -1; int first_up_child = -1; - child_index = (long) cookie; - priv = this->private; + child_index = (long) cookie; + priv = this->private; - LOCK (&frame->lock); - { - local = frame->local; + LOCK (&frame->lock); + { + local = frame->local; lookup_buf = &local->cont.lookup.buf; - if (op_ret == -1) { - if (op_errno == ENOENT) - local->enoent_count++; + if (op_ret == -1) { + if (op_errno == ENOENT) + local->enoent_count++; if (__error_more_important (local->op_errno, op_errno)) local->op_errno = op_errno; @@ -800,7 +800,7 @@ afr_fresh_lookup_cbk (call_frame_t *frame, void *cookie, } goto unlock; - } + } afr_lookup_collect_xattr (local, this, child_index, xattr); @@ -813,13 +813,13 @@ afr_fresh_lookup_cbk (call_frame_t *frame, void *cookie, first_up_child); } - if (local->success_count == 0) { + if (local->success_count == 0) { if (local->op_errno != ESTALE) local->op_ret = op_ret; - local->cont.lookup.inode = inode_ref (inode); - local->cont.lookup.xattr = dict_ref (xattr); - local->cont.lookup.xattrs[child_index] = dict_ref (xattr); + local->cont.lookup.inode = inode_ref (inode); + local->cont.lookup.xattr = dict_ref (xattr); + local->cont.lookup.xattrs[child_index] = dict_ref (xattr); local->cont.lookup.postparent = *postparent; if (priv->first_lookup && inode->ino == 1) { @@ -844,7 +844,7 @@ afr_fresh_lookup_cbk (call_frame_t *frame, void *cookie, child_index); } - } else { + } else { afr_lookup_self_heal_check (this, local, buf, lookup_buf); if (child_index == local->read_child_index) { @@ -872,20 +872,20 @@ afr_fresh_lookup_cbk (call_frame_t *frame, void *cookie, } } - } + } - local->success_count++; - } + local->success_count++; + } unlock: - UNLOCK (&frame->lock); + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { + if (call_count == 0) { afr_lookup_done (frame, this, lookup_buf); - } + } - return 0; + return 0; } @@ -895,26 +895,26 @@ afr_revalidate_lookup_cbk (call_frame_t *frame, void *cookie, inode_t *inode, struct iatt *buf, dict_t *xattr, struct iatt *postparent) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; - struct iatt * lookup_buf = NULL; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; + struct iatt * lookup_buf = NULL; - int call_count = -1; - int child_index = -1; + int call_count = -1; + int child_index = -1; int first_up_child = -1; - child_index = (long) cookie; - priv = this->private; + child_index = (long) cookie; + priv = this->private; - LOCK (&frame->lock); - { - local = frame->local; + LOCK (&frame->lock); + { + local = frame->local; - lookup_buf = &local->cont.lookup.buf; + lookup_buf = &local->cont.lookup.buf; - if (op_ret == -1) { - if (op_errno == ENOENT) - local->enoent_count++; + if (op_ret == -1) { + if (op_errno == ENOENT) + local->enoent_count++; if (__error_more_important (local->op_errno, op_errno)) local->op_errno = op_errno; @@ -937,24 +937,24 @@ afr_revalidate_lookup_cbk (call_frame_t *frame, void *cookie, first_up_child); } - /* in case of revalidate, we need to send stat of the - * child whose stat was sent during the first lookup. - * (so that time stamp does not vary with revalidate. - * in case it is down, stat of the fist success will - * be replied */ + /* in case of revalidate, we need to send stat of the + * child whose stat was sent during the first lookup. + * (so that time stamp does not vary with revalidate. + * in case it is down, stat of the fist success will + * be replied */ - /* inode number should be preserved across revalidates */ + /* inode number should be preserved across revalidates */ - if (local->success_count == 0) { + if (local->success_count == 0) { if (local->op_errno != ESTALE) local->op_ret = op_ret; - local->cont.lookup.inode = inode_ref (inode); - local->cont.lookup.xattr = dict_ref (xattr); - local->cont.lookup.xattrs[child_index] = dict_ref (xattr); + local->cont.lookup.inode = inode_ref (inode); + local->cont.lookup.xattr = dict_ref (xattr); + local->cont.lookup.xattrs[child_index] = dict_ref (xattr); local->cont.lookup.postparent = *postparent; - *lookup_buf = *buf; + *lookup_buf = *buf; lookup_buf->ia_ino = afr_itransform (buf->ia_ino, priv->child_count, @@ -970,7 +970,7 @@ afr_revalidate_lookup_cbk (call_frame_t *frame, void *cookie, child_index); } - } else { + } else { afr_lookup_self_heal_check (this, local, buf, lookup_buf); if (child_index == local->read_child_index) { @@ -1000,31 +1000,31 @@ afr_revalidate_lookup_cbk (call_frame_t *frame, void *cookie, } } - } + } - local->success_count++; - } + local->success_count++; + } unlock: - UNLOCK (&frame->lock); + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { + if (call_count == 0) { afr_lookup_done (frame, this, lookup_buf); - } + } - return 0; + return 0; } int afr_lookup (call_frame_t *frame, xlator_t *this, - loc_t *loc, dict_t *xattr_req) + loc_t *loc, dict_t *xattr_req) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; - int ret = -1; - int i = 0; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; + int ret = -1; + int i = 0; fop_lookup_cbk_t callback; @@ -1032,22 +1032,22 @@ afr_lookup (call_frame_t *frame, xlator_t *this, uint64_t ctx; - int32_t op_errno = 0; + int32_t op_errno = 0; - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - local->op_ret = -1; + local->op_ret = -1; - frame->local = local; + frame->local = local; if (!strcmp (loc->path, "/" GF_REPLICATE_TRASH_DIR)) { op_errno = ENOENT; goto out; } - loc_copy (&local->loc, loc); + loc_copy (&local->loc, loc); ret = inode_ctx_get (loc->inode, this, &ctx); if (ret == 0) { @@ -1072,13 +1072,13 @@ afr_lookup (call_frame_t *frame, xlator_t *this, if (loc->parent) local->cont.lookup.parent_ino = loc->parent->ino; - local->child_up = memdup (priv->child_up, priv->child_count); + local->child_up = memdup (priv->child_up, priv->child_count); local->cont.lookup.xattrs = GF_CALLOC (priv->child_count, sizeof (*local->cont.lookup.xattr), gf_afr_mt_dict_t); - local->call_count = afr_up_children_count (priv->child_count, + local->call_count = afr_up_children_count (priv->child_count, local->child_up); call_count = local->call_count; @@ -1088,24 +1088,24 @@ afr_lookup (call_frame_t *frame, xlator_t *this, goto out; } - /* By default assume ENOTCONN. On success it will be set to 0. */ - local->op_errno = ENOTCONN; + /* By default assume ENOTCONN. On success it will be set to 0. */ + local->op_errno = ENOTCONN; - if (xattr_req == NULL) - local->xattr_req = dict_new (); - else - local->xattr_req = dict_ref (xattr_req); + if (xattr_req == NULL) + local->xattr_req = dict_new (); + else + local->xattr_req = dict_ref (xattr_req); for (i = 0; i < priv->child_count; i++) { - ret = dict_set_uint64 (local->xattr_req, priv->pending_key[i], - 3 * sizeof(int32_t)); + ret = dict_set_uint64 (local->xattr_req, priv->pending_key[i], + 3 * sizeof(int32_t)); if (ret < 0) gf_log (this->name, GF_LOG_WARNING, "Unable to set dict value."); /* 3 = data+metadata+entry */ } - ret = dict_set_uint64 (local->xattr_req, GLUSTERFS_OPEN_FD_COUNT, 0); + ret = dict_set_uint64 (local->xattr_req, GLUSTERFS_OPEN_FD_COUNT, 0); if (ret < 0) { gf_log (this->name, GF_LOG_WARNING, "Unable to set dict value."); @@ -1123,7 +1123,7 @@ afr_lookup (call_frame_t *frame, xlator_t *this, "Unable to set dict value."); } - for (i = 0; i < priv->child_count; i++) { + for (i = 0; i < priv->child_count; i++) { if (local->child_up[i]) { STACK_WIND_COOKIE (frame, callback, (void *) (long) i, priv->children[i], @@ -1132,15 +1132,15 @@ afr_lookup (call_frame_t *frame, xlator_t *this, if (!--call_count) break; } - } + } - ret = 0; + ret = 0; out: - if (ret == -1) - AFR_STACK_UNWIND (lookup, frame, -1, op_errno, + if (ret == -1) + AFR_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, NULL); - return 0; + return 0; } @@ -1229,125 +1229,125 @@ out: int afr_flush_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { - AFR_STACK_UNWIND (flush, main_frame, + if (main_frame) { + AFR_STACK_UNWIND (flush, main_frame, local->op_ret, local->op_errno); - } + } - return 0; + return 0; } int afr_flush_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno) + int32_t op_ret, int32_t op_errno) { afr_local_t * local = NULL; - afr_private_t * priv = NULL; + afr_private_t * priv = NULL; - int call_count = -1; - int child_index = (long) cookie; - int need_unwind = 0; + int call_count = -1; + int child_index = (long) cookie; + int need_unwind = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; - LOCK (&frame->lock); - { - if (afr_fop_failed (op_ret, op_errno)) - afr_transaction_fop_failed (frame, this, child_index); + LOCK (&frame->lock); + { + if (afr_fop_failed (op_ret, op_errno)) + afr_transaction_fop_failed (frame, this, child_index); - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - } - local->success_count++; + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + } + local->success_count++; - if (local->success_count == priv->wait_count) { - need_unwind = 1; - } - } + if (local->success_count == priv->wait_count) { + need_unwind = 1; + } + } - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - if (need_unwind) - afr_flush_unwind (frame, this); + if (need_unwind) + afr_flush_unwind (frame, this); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { - local->transaction.resume (frame, this); - } + if (call_count == 0) { + local->transaction.resume (frame, this); + } - return 0; + return 0; } int afr_flush_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; - int i = 0; - int call_count = -1; + int i = 0; + int call_count = -1; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; - call_count = afr_up_children_count (priv->child_count, local->child_up); + call_count = afr_up_children_count (priv->child_count, local->child_up); - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } - local->call_count = call_count; + local->call_count = call_count; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_flush_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->flush, - local->fd); + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_flush_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->flush, + local->fd); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - return 0; + return 0; } int afr_flush_done (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - local = frame->local; + local = frame->local; - local->transaction.unwind (frame, this); + local->transaction.unwind (frame, this); AFR_STACK_DESTROY (frame); - return 0; + return 0; } @@ -1356,27 +1356,27 @@ afr_plain_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (flush, frame, local->op_ret, local->op_errno); + if (call_count == 0) + AFR_STACK_UNWIND (flush, frame, local->op_ret, local->op_errno); - return 0; + return 0; } @@ -1421,32 +1421,32 @@ out: int afr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; call_frame_t * transaction_frame = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; int i = 0; int call_count = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } call_count = afr_up_children_count (priv->child_count, local->child_up); @@ -1490,16 +1490,16 @@ afr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) afr_transaction (transaction_frame, this, AFR_FLUSH_TRANSACTION); } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { + if (op_ret == -1) { if (transaction_frame) AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (flush, frame, op_ret, op_errno); - } + AFR_STACK_UNWIND (flush, frame, op_ret, op_errno); + } - return 0; + return 0; } /* }}} */ @@ -1553,110 +1553,110 @@ afr_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; int child_index = (long) cookie; int read_child = 0; - local = frame->local; + local = frame->local; read_child = afr_read_child (this, local->fd->inode); - LOCK (&frame->lock); - { + LOCK (&frame->lock); + { if (child_index == read_child) { local->read_child_returned = _gf_true; } - if (op_ret == 0) { - local->op_ret = 0; + if (op_ret == 0) { + local->op_ret = 0; - if (local->success_count == 0) { - local->cont.fsync.prebuf = *prebuf; - local->cont.fsync.postbuf = *postbuf; - } + if (local->success_count == 0) { + local->cont.fsync.prebuf = *prebuf; + local->cont.fsync.postbuf = *postbuf; + } if (child_index == read_child) { local->cont.fsync.prebuf = *prebuf; local->cont.fsync.postbuf = *postbuf; } - local->success_count++; + local->success_count++; } - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { + if (call_count == 0) { local->cont.fsync.prebuf.ia_ino = local->cont.fsync.ino; local->cont.fsync.postbuf.ia_ino = local->cont.fsync.ino; - AFR_STACK_UNWIND (fsync, frame, local->op_ret, local->op_errno, + AFR_STACK_UNWIND (fsync, frame, local->op_ret, local->op_errno, &local->cont.fsync.prebuf, &local->cont.fsync.postbuf); } - return 0; + return 0; } int afr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, - int32_t datasync) + int32_t datasync) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; local->fd = fd_ref (fd); local->cont.fsync.ino = fd->inode->ino; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_fsync_cbk, + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_fsync_cbk, (void *) (long) i, priv->children[i], priv->children[i]->fops->fsync, fd, datasync); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (fsync, frame, op_ret, op_errno, NULL, NULL); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (fsync, frame, op_ret, op_errno, NULL, NULL); + } + return 0; } /* }}} */ @@ -1665,81 +1665,81 @@ out: int32_t afr_fsyncdir_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno) + xlator_t *this, int32_t op_ret, int32_t op_errno) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (fsyncdir, frame, local->op_ret, + if (call_count == 0) + AFR_STACK_UNWIND (fsyncdir, frame, local->op_ret, local->op_errno); - return 0; + return 0; } int32_t afr_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, - int32_t datasync) + int32_t datasync) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_fsyncdir_cbk, - priv->children[i], - priv->children[i]->fops->fsyncdir, - fd, datasync); - if (!--call_count) - break; - } - } + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_fsyncdir_cbk, + priv->children[i], + priv->children[i]->fops->fsyncdir, + fd, datasync); + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (fsyncdir, frame, op_ret, op_errno); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (fsyncdir, frame, op_ret, op_errno); + } + return 0; } /* }}} */ @@ -1748,82 +1748,82 @@ out: int32_t afr_xattrop_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno, - dict_t *xattr) + xlator_t *this, int32_t op_ret, int32_t op_errno, + dict_t *xattr) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (xattrop, frame, local->op_ret, local->op_errno, + if (call_count == 0) + AFR_STACK_UNWIND (xattrop, frame, local->op_ret, local->op_errno, xattr); - return 0; + return 0; } int32_t afr_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, - gf_xattrop_flags_t optype, dict_t *xattr) + gf_xattrop_flags_t optype, dict_t *xattr) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_xattrop_cbk, - priv->children[i], - priv->children[i]->fops->xattrop, - loc, optype, xattr); - if (!--call_count) - break; - } - } + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_xattrop_cbk, + priv->children[i], + priv->children[i]->fops->xattrop, + loc, optype, xattr); + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (xattrop, frame, op_ret, op_errno, NULL); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (xattrop, frame, op_ret, op_errno, NULL); + } + return 0; } /* }}} */ @@ -1832,82 +1832,82 @@ out: int32_t afr_fxattrop_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno, - dict_t *xattr) + xlator_t *this, int32_t op_ret, int32_t op_errno, + dict_t *xattr) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (fxattrop, frame, local->op_ret, local->op_errno, + if (call_count == 0) + AFR_STACK_UNWIND (fxattrop, frame, local->op_ret, local->op_errno, xattr); - return 0; + return 0; } int32_t afr_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, - gf_xattrop_flags_t optype, dict_t *xattr) + gf_xattrop_flags_t optype, dict_t *xattr) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_fxattrop_cbk, - priv->children[i], - priv->children[i]->fops->fxattrop, - fd, optype, xattr); - if (!--call_count) - break; - } - } + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_fxattrop_cbk, + priv->children[i], + priv->children[i]->fops->fxattrop, + fd, optype, xattr); + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (fxattrop, frame, op_ret, op_errno, NULL); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (fxattrop, frame, op_ret, op_errno, NULL); + } + return 0; } /* }}} */ @@ -1915,31 +1915,31 @@ out: int32_t afr_inodelk_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno) + xlator_t *this, int32_t op_ret, int32_t op_errno) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (inodelk, frame, local->op_ret, + if (call_count == 0) + AFR_STACK_UNWIND (inodelk, frame, local->op_ret, local->op_errno); - return 0; + return 0; } @@ -1947,81 +1947,81 @@ int32_t afr_inodelk (call_frame_t *frame, xlator_t *this, const char *volume, loc_t *loc, int32_t cmd, struct flock *flock) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_inodelk_cbk, - priv->children[i], - priv->children[i]->fops->inodelk, - volume, loc, cmd, flock); + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_inodelk_cbk, + priv->children[i], + priv->children[i]->fops->inodelk, + volume, loc, cmd, flock); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (inodelk, frame, op_ret, op_errno); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (inodelk, frame, op_ret, op_errno); + } + return 0; } int32_t afr_finodelk_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno) + xlator_t *this, int32_t op_ret, int32_t op_errno) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (finodelk, frame, local->op_ret, + if (call_count == 0) + AFR_STACK_UNWIND (finodelk, frame, local->op_ret, local->op_errno); - return 0; + return 0; } @@ -2029,490 +2029,490 @@ int32_t afr_finodelk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd, int32_t cmd, struct flock *flock) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_finodelk_cbk, - priv->children[i], - priv->children[i]->fops->finodelk, - volume, fd, cmd, flock); + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_finodelk_cbk, + priv->children[i], + priv->children[i]->fops->finodelk, + volume, fd, cmd, flock); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (finodelk, frame, op_ret, op_errno); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (finodelk, frame, op_ret, op_errno); + } + return 0; } int32_t afr_entrylk_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno) + xlator_t *this, int32_t op_ret, int32_t op_errno) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (entrylk, frame, local->op_ret, + if (call_count == 0) + AFR_STACK_UNWIND (entrylk, frame, local->op_ret, local->op_errno); - return 0; + return 0; } int32_t afr_entrylk (call_frame_t *frame, xlator_t *this, const char *volume, loc_t *loc, - const char *basename, entrylk_cmd cmd, entrylk_type type) + const char *basename, entrylk_cmd cmd, entrylk_type type) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_entrylk_cbk, - priv->children[i], - priv->children[i]->fops->entrylk, - volume, loc, basename, cmd, type); + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_entrylk_cbk, + priv->children[i], + priv->children[i]->fops->entrylk, + volume, loc, basename, cmd, type); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (entrylk, frame, op_ret, op_errno); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (entrylk, frame, op_ret, op_errno); + } + return 0; } int32_t afr_fentrylk_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno) + xlator_t *this, int32_t op_ret, int32_t op_errno) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (op_ret == 0) - local->op_ret = 0; + LOCK (&frame->lock); + { + if (op_ret == 0) + local->op_ret = 0; - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (fentrylk, frame, local->op_ret, + if (call_count == 0) + AFR_STACK_UNWIND (fentrylk, frame, local->op_ret, local->op_errno); - return 0; + return 0; } int32_t afr_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd, - const char *basename, entrylk_cmd cmd, entrylk_type type) + const char *basename, entrylk_cmd cmd, entrylk_type type) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int ret = -1; + int ret = -1; - int i = 0; - int32_t call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int i = 0; + int32_t call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - call_count = local->call_count; - frame->local = local; + call_count = local->call_count; + frame->local = local; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_fentrylk_cbk, - priv->children[i], - priv->children[i]->fops->fentrylk, - volume, fd, basename, cmd, type); + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_fentrylk_cbk, + priv->children[i], + priv->children[i]->fops->fentrylk, + volume, fd, basename, cmd, type); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (fentrylk, frame, op_ret, op_errno); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (fentrylk, frame, op_ret, op_errno); + } + return 0; } int32_t afr_statfs_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, int32_t op_errno, - struct statvfs *statvfs) + xlator_t *this, int32_t op_ret, int32_t op_errno, + struct statvfs *statvfs) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - int call_count = 0; + int call_count = 0; - LOCK (&frame->lock); - { - local = frame->local; + LOCK (&frame->lock); + { + local = frame->local; - if (op_ret == 0) { - local->op_ret = op_ret; + if (op_ret == 0) { + local->op_ret = op_ret; - if (local->cont.statfs.buf_set) { - if (statvfs->f_bavail < local->cont.statfs.buf.f_bavail) - local->cont.statfs.buf = *statvfs; - } else { - local->cont.statfs.buf = *statvfs; - local->cont.statfs.buf_set = 1; - } - } + if (local->cont.statfs.buf_set) { + if (statvfs->f_bavail < local->cont.statfs.buf.f_bavail) + local->cont.statfs.buf = *statvfs; + } else { + local->cont.statfs.buf = *statvfs; + local->cont.statfs.buf_set = 1; + } + } - if (op_ret == -1) - local->op_errno = op_errno; + if (op_ret == -1) + local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (statfs, frame, local->op_ret, local->op_errno, - &local->cont.statfs.buf); + if (call_count == 0) + AFR_STACK_UNWIND (statfs, frame, local->op_ret, local->op_errno, + &local->cont.statfs.buf); - return 0; + return 0; } int32_t afr_statfs (call_frame_t *frame, xlator_t *this, - loc_t *loc) + loc_t *loc) { - afr_private_t * priv = NULL; - int child_count = 0; - afr_local_t * local = NULL; - int i = 0; - - int ret = -1; - int call_count = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; - - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); - VALIDATE_OR_GOTO (loc, out); - - priv = this->private; - child_count = priv->child_count; - - ALLOC_OR_GOTO (local, afr_local_t, out); - - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } - - frame->local = local; - call_count = local->call_count; - - for (i = 0; i < child_count; i++) { - if (local->child_up[i]) { - STACK_WIND (frame, afr_statfs_cbk, - priv->children[i], - priv->children[i]->fops->statfs, - loc); - if (!--call_count) - break; - } - } - - op_ret = 0; + afr_private_t * priv = NULL; + int child_count = 0; + afr_local_t * local = NULL; + int i = 0; + + int ret = -1; + int call_count = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; + + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (loc, out); + + priv = this->private; + child_count = priv->child_count; + + ALLOC_OR_GOTO (local, afr_local_t, out); + + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } + + frame->local = local; + call_count = local->call_count; + + for (i = 0; i < child_count; i++) { + if (local->child_up[i]) { + STACK_WIND (frame, afr_statfs_cbk, + priv->children[i], + priv->children[i]->fops->statfs, + loc); + if (!--call_count) + break; + } + } + + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (statfs, frame, op_ret, op_errno, NULL); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (statfs, frame, op_ret, op_errno, NULL); + } + return 0; } int32_t afr_lk_unlock_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct flock *lock) + int32_t op_ret, int32_t op_errno, struct flock *lock) { - afr_local_t * local = NULL; + afr_local_t * local = NULL; - int call_count = -1; + int call_count = -1; - local = frame->local; - call_count = afr_frame_return (frame); + local = frame->local; + call_count = afr_frame_return (frame); - if (call_count == 0) - AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, - lock); + if (call_count == 0) + AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, + lock); - return 0; + return 0; } int32_t afr_lk_unlock (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; - int i; - int call_count = 0; + int i; + int call_count = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; - call_count = afr_locked_nodes_count (local->cont.lk.locked_nodes, - priv->child_count); + call_count = afr_locked_nodes_count (local->cont.lk.locked_nodes, + priv->child_count); - if (call_count == 0) { - AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, + if (call_count == 0) { + AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, &local->cont.lk.ret_flock); - return 0; - } + return 0; + } - local->call_count = call_count; + local->call_count = call_count; local->cont.lk.user_flock.l_type = F_UNLCK; - for (i = 0; i < priv->child_count; i++) { - if (local->cont.lk.locked_nodes[i]) { - STACK_WIND (frame, afr_lk_unlock_cbk, - priv->children[i], - priv->children[i]->fops->lk, - local->fd, F_SETLK, + for (i = 0; i < priv->child_count; i++) { + if (local->cont.lk.locked_nodes[i]) { + STACK_WIND (frame, afr_lk_unlock_cbk, + priv->children[i], + priv->children[i]->fops->lk, + local->fd, F_SETLK, &local->cont.lk.user_flock); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - return 0; + return 0; } int32_t afr_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct flock *lock) + int32_t op_ret, int32_t op_errno, struct flock *lock) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; - int child_index = -1; + int child_index = -1; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; - child_index = (long) cookie; + child_index = (long) cookie; - if (!child_went_down (op_ret, op_errno) && (op_ret == -1)) { - local->op_ret = -1; - local->op_errno = op_errno; + if (!child_went_down (op_ret, op_errno) && (op_ret == -1)) { + local->op_ret = -1; + local->op_errno = op_errno; - afr_lk_unlock (frame, this); - return 0; - } + afr_lk_unlock (frame, this); + return 0; + } - if (op_ret == 0) { - local->op_ret = 0; - local->op_errno = 0; - local->cont.lk.locked_nodes[child_index] = 1; + if (op_ret == 0) { + local->op_ret = 0; + local->op_errno = 0; + local->cont.lk.locked_nodes[child_index] = 1; local->cont.lk.ret_flock = *lock; - } + } - child_index++; + child_index++; - if (child_index < priv->child_count) { - STACK_WIND_COOKIE (frame, afr_lk_cbk, (void *) (long) child_index, - priv->children[child_index], - priv->children[child_index]->fops->lk, - local->fd, local->cont.lk.cmd, + if (child_index < priv->child_count) { + STACK_WIND_COOKIE (frame, afr_lk_cbk, (void *) (long) child_index, + priv->children[child_index], + priv->children[child_index]->fops->lk, + local->fd, local->cont.lk.cmd, &local->cont.lk.user_flock); - } else if (local->op_ret == -1) { - /* all nodes have gone down */ + } else if (local->op_ret == -1) { + /* all nodes have gone down */ AFR_STACK_UNWIND (lk, frame, -1, ENOTCONN, &local->cont.lk.ret_flock); - } else { - /* locking has succeeded on all nodes that are up */ + } else { + /* locking has succeeded on all nodes that are up */ - AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, + AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, &local->cont.lk.ret_flock); - } + } - return 0; + return 0; } int afr_lk (call_frame_t *frame, xlator_t *this, - fd_t *fd, int32_t cmd, - struct flock *flock) + fd_t *fd, int32_t cmd, + struct flock *flock) { - afr_private_t *priv = NULL; - afr_local_t *local = NULL; + afr_private_t *priv = NULL; + afr_local_t *local = NULL; - int i = 0; + int i = 0; - int32_t op_ret = -1; - int32_t op_errno = 0; + int32_t op_ret = -1; + int32_t op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); - AFR_LOCAL_INIT (local, priv); + ALLOC_OR_GOTO (local, afr_local_t, out); + AFR_LOCAL_INIT (local, priv); - frame->local = local; + frame->local = local; - local->cont.lk.locked_nodes = GF_CALLOC (priv->child_count, - sizeof (*local->cont.lk.locked_nodes), + local->cont.lk.locked_nodes = GF_CALLOC (priv->child_count, + sizeof (*local->cont.lk.locked_nodes), gf_afr_mt_char); - if (!local->cont.lk.locked_nodes) { - gf_log (this->name, GF_LOG_ERROR, "Out of memory"); - op_errno = ENOMEM; - goto out; - } + if (!local->cont.lk.locked_nodes) { + gf_log (this->name, GF_LOG_ERROR, "Out of memory"); + op_errno = ENOMEM; + goto out; + } - local->fd = fd_ref (fd); - local->cont.lk.cmd = cmd; + local->fd = fd_ref (fd); + local->cont.lk.cmd = cmd; local->cont.lk.user_flock = *flock; local->cont.lk.ret_flock = *flock; - STACK_WIND_COOKIE (frame, afr_lk_cbk, (void *) (long) 0, - priv->children[i], - priv->children[i]->fops->lk, - fd, cmd, flock); + STACK_WIND_COOKIE (frame, afr_lk_cbk, (void *) (long) 0, + priv->children[i], + priv->children[i]->fops->lk, + fd, cmd, flock); - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (lk, frame, op_ret, op_errno, NULL); - } - return 0; + if (op_ret == -1) { + AFR_STACK_UNWIND (lk, frame, op_ret, op_errno, NULL); + } + return 0; } int afr_priv_dump (xlator_t *this) { - afr_private_t *priv = NULL; + afr_private_t *priv = NULL; char key_prefix[GF_DUMP_MAX_BUF_LEN]; char key[GF_DUMP_MAX_BUF_LEN]; int i = 0; assert(this); - priv = this->private; + priv = this->private; assert(priv); snprintf(key_prefix, GF_DUMP_MAX_BUF_LEN, "%s.%s", this->type, this->name); @@ -2521,7 +2521,7 @@ afr_priv_dump (xlator_t *this) gf_proc_dump_write(key, "%u", priv->child_count); gf_proc_dump_build_key(key, key_prefix, "read_child_rr"); gf_proc_dump_write(key, "%u", priv->read_child_rr); - for (i = 0; i < priv->child_count; i++) { + for (i = 0; i < priv->child_count; i++) { gf_proc_dump_build_key(key, key_prefix, "child_up[%d]", i); gf_proc_dump_write(key, "%d", priv->child_up[i]); gf_proc_dump_build_key(key, key_prefix, @@ -2566,42 +2566,42 @@ afr_priv_dump (xlator_t *this) static int find_child_index (xlator_t *this, xlator_t *child) { - afr_private_t *priv = NULL; + afr_private_t *priv = NULL; - int i = -1; + int i = -1; - priv = this->private; + priv = this->private; - for (i = 0; i < priv->child_count; i++) { - if ((xlator_t *) child == priv->children[i]) - break; - } + for (i = 0; i < priv->child_count; i++) { + if ((xlator_t *) child == priv->children[i]) + break; + } - return i; + return i; } int32_t afr_notify (xlator_t *this, int32_t event, void *data, ...) { - afr_private_t * priv = NULL; - unsigned char * child_up = NULL; + afr_private_t * priv = NULL; + unsigned char * child_up = NULL; - int i = -1; - int up_children = 0; + int i = -1; + int up_children = 0; - priv = this->private; + priv = this->private; - if (!priv) - return 0; + if (!priv) + return 0; - child_up = priv->child_up; + child_up = priv->child_up; - switch (event) { - case GF_EVENT_CHILD_UP: - i = find_child_index (this, data); + switch (event) { + case GF_EVENT_CHILD_UP: + i = find_child_index (this, data); - child_up[i] = 1; + child_up[i] = 1; LOCK (&priv->lock); { @@ -2609,29 +2609,29 @@ afr_notify (xlator_t *this, int32_t event, } UNLOCK (&priv->lock); - /* - if all the children were down, and one child came up, - send notify to parent - */ + /* + if all the children were down, and one child came up, + send notify to parent + */ - for (i = 0; i < priv->child_count; i++) - if (child_up[i]) - up_children++; + for (i = 0; i < priv->child_count; i++) + if (child_up[i]) + up_children++; - if (up_children == 1) { + if (up_children == 1) { gf_log (this->name, GF_LOG_NORMAL, "Subvolume '%s' came back up; " "going online.", ((xlator_t *)data)->name); - default_notify (this, event, data); + default_notify (this, event, data); } - break; + break; - case GF_EVENT_CHILD_DOWN: - i = find_child_index (this, data); + case GF_EVENT_CHILD_DOWN: + i = find_child_index (this, data); - child_up[i] = 0; + child_up[i] = 0; LOCK (&priv->lock); { @@ -2639,29 +2639,29 @@ afr_notify (xlator_t *this, int32_t event, } UNLOCK (&priv->lock); - /* - if all children are down, and this was the last to go down, - send notify to parent - */ + /* + if all children are down, and this was the last to go down, + send notify to parent + */ - for (i = 0; i < priv->child_count; i++) - if (child_up[i]) - up_children++; + for (i = 0; i < priv->child_count; i++) + if (child_up[i]) + up_children++; - if (up_children == 0) { + if (up_children == 0) { gf_log (this->name, GF_LOG_ERROR, "All subvolumes are down. Going offline " "until atleast one of them comes back up."); - default_notify (this, event, data); + default_notify (this, event, data); } - break; + break; - default: - default_notify (this, event, data); - } + default: + default_notify (this, event, data); + } - return 0; + return 0; } diff --git a/xlators/cluster/afr/src/afr-inode-write.c b/xlators/cluster/afr/src/afr-inode-write.c index 7a908acd7a6..587e4840008 100644 --- a/xlators/cluster/afr/src/afr-inode-write.c +++ b/xlators/cluster/afr/src/afr-inode-write.c @@ -52,141 +52,141 @@ int afr_writev_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { + if (main_frame) { local->cont.writev.prebuf.ia_ino = local->cont.writev.ino; local->cont.writev.postbuf.ia_ino = local->cont.writev.ino; - AFR_STACK_UNWIND (writev, main_frame, + AFR_STACK_UNWIND (writev, main_frame, local->op_ret, local->op_errno, &local->cont.writev.prebuf, &local->cont.writev.postbuf); - } - return 0; + } + return 0; } int -afr_writev_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, +afr_writev_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf) { - afr_local_t * local = NULL; + afr_local_t * local = NULL; - int child_index = (long) cookie; - int call_count = -1; + int child_index = (long) cookie; + int call_count = -1; int read_child = 0; - local = frame->local; + local = frame->local; read_child = afr_read_child (this, local->fd->inode); - LOCK (&frame->lock); - { + LOCK (&frame->lock); + { if (child_index == read_child) { local->read_child_returned = _gf_true; } - if (afr_fop_failed (op_ret, op_errno)) - afr_transaction_fop_failed (frame, this, child_index); + if (afr_fop_failed (op_ret, op_errno)) + afr_transaction_fop_failed (frame, this, child_index); - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - local->cont.writev.prebuf = *prebuf; - local->cont.writev.postbuf = *postbuf; - } + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + local->cont.writev.prebuf = *prebuf; + local->cont.writev.postbuf = *postbuf; + } if (child_index == read_child) { local->cont.writev.prebuf = *prebuf; local->cont.writev.postbuf = *postbuf; } - } + } - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { - local->transaction.unwind (frame, this); + if (call_count == 0) { + local->transaction.unwind (frame, this); - local->transaction.resume (frame, this); - } - return 0; + local->transaction.resume (frame, this); + } + return 0; } int afr_writev_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; - - int i = 0; - int call_count = -1; - - local = frame->local; - priv = this->private; - - call_count = afr_up_children_count (priv->child_count, local->child_up); - - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } - - local->call_count = call_count; - - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_writev_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->writev, - local->fd, - local->cont.writev.vector, - local->cont.writev.count, - local->cont.writev.offset, + afr_local_t *local = NULL; + afr_private_t *priv = NULL; + + int i = 0; + int call_count = -1; + + local = frame->local; + priv = this->private; + + call_count = afr_up_children_count (priv->child_count, local->child_up); + + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } + + local->call_count = call_count; + + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_writev_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->writev, + local->fd, + local->cont.writev.vector, + local->cont.writev.count, + local->cont.writev.offset, local->cont.writev.iobref); - - if (!--call_count) - break; - } - } - - return 0; + + if (!--call_count) + break; + } + } + + return 0; } int afr_writev_done (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - local = frame->local; + local = frame->local; iobref_unref (local->cont.writev.iobref); - local->cont.writev.iobref = NULL; + local->cont.writev.iobref = NULL; - local->transaction.unwind (frame, this); + local->transaction.unwind (frame, this); - AFR_STACK_DESTROY (frame); + AFR_STACK_DESTROY (frame); - return 0; + return 0; } @@ -201,88 +201,88 @@ afr_do_writev (call_frame_t *frame, xlator_t *this) local = frame->local; - transaction_frame = copy_frame (frame); - if (!transaction_frame) { - gf_log (this->name, GF_LOG_ERROR, - "Out of memory."); + transaction_frame = copy_frame (frame); + if (!transaction_frame) { + gf_log (this->name, GF_LOG_ERROR, + "Out of memory."); op_errno = ENOMEM; - goto out; - } + goto out; + } - transaction_frame->local = local; + transaction_frame->local = local; frame->local = NULL; - local->op = GF_FOP_WRITE; + local->op = GF_FOP_WRITE; local->success_count = 0; - local->transaction.fop = afr_writev_wind; - local->transaction.done = afr_writev_done; - local->transaction.unwind = afr_writev_unwind; - - local->transaction.main_frame = frame; - if (local->fd->flags & O_APPEND) { - local->transaction.start = 0; - local->transaction.len = 0; - } else { - local->transaction.start = local->cont.writev.offset; - local->transaction.len = iov_length (local->cont.writev.vector, + local->transaction.fop = afr_writev_wind; + local->transaction.done = afr_writev_done; + local->transaction.unwind = afr_writev_unwind; + + local->transaction.main_frame = frame; + if (local->fd->flags & O_APPEND) { + local->transaction.start = 0; + local->transaction.len = 0; + } else { + local->transaction.start = local->cont.writev.offset; + local->transaction.len = iov_length (local->cont.writev.vector, local->cont.writev.count); - } + } - afr_transaction (transaction_frame, this, AFR_DATA_TRANSACTION); + afr_transaction (transaction_frame, this, AFR_DATA_TRANSACTION); op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL); + } return 0; } int -afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, - struct iovec *vector, int32_t count, off_t offset, +afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iovec *vector, int32_t count, off_t offset, struct iobref *iobref) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; uint64_t ctx; afr_fd_ctx_t *fd_ctx = NULL; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } frame->local = local; - local->cont.writev.vector = iov_dup (vector, count); - local->cont.writev.count = count; - local->cont.writev.offset = offset; - local->cont.writev.ino = fd->inode->ino; + local->cont.writev.vector = iov_dup (vector, count); + local->cont.writev.count = count; + local->cont.writev.offset = offset; + local->cont.writev.ino = fd->inode->ino; local->cont.writev.iobref = iobref_ref (iobref); - local->fd = fd_ref (fd); + local->fd = fd_ref (fd); ret = fd_ctx_get (fd, this, &ctx); if (ret < 0) { @@ -303,13 +303,13 @@ afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, afr_do_writev (frame, this); } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - AFR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL); - } + if (op_ret == -1) { + AFR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL); + } - return 0; + return 0; } @@ -320,20 +320,20 @@ out: int afr_truncate_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { + if (main_frame) { local->cont.truncate.prebuf.ia_ino = local->cont.truncate.ino; local->cont.truncate.postbuf.ia_ino = local->cont.truncate.ino; @@ -343,189 +343,189 @@ afr_truncate_unwind (call_frame_t *frame, xlator_t *this) &local->cont.truncate.postbuf); } - return 0; + return 0; } int -afr_truncate_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, +afr_truncate_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; - int child_index = (long) cookie; + int child_index = (long) cookie; int read_child = 0; - int call_count = -1; - int need_unwind = 0; + int call_count = -1; + int need_unwind = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; read_child = afr_read_child (this, local->loc.inode); - LOCK (&frame->lock); - { + LOCK (&frame->lock); + { if (child_index == read_child) { local->read_child_returned = _gf_true; } - if (afr_fop_failed (op_ret, op_errno) && op_errno != EFBIG) - afr_transaction_fop_failed (frame, this, child_index); + if (afr_fop_failed (op_ret, op_errno) && op_errno != EFBIG) + afr_transaction_fop_failed (frame, this, child_index); - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - local->cont.truncate.prebuf = *prebuf; - local->cont.truncate.postbuf = *postbuf; - } + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + local->cont.truncate.prebuf = *prebuf; + local->cont.truncate.postbuf = *postbuf; + } if (child_index == read_child) { local->cont.truncate.prebuf = *prebuf; local->cont.truncate.postbuf = *postbuf; } - local->success_count++; + local->success_count++; - if ((local->success_count >= priv->wait_count) + if ((local->success_count >= priv->wait_count) && local->read_child_returned) { - need_unwind = 1; - } - } - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + need_unwind = 1; + } + } + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - if (need_unwind) - local->transaction.unwind (frame, this); + if (need_unwind) + local->transaction.unwind (frame, this); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { - local->transaction.resume (frame, this); - } + if (call_count == 0) { + local->transaction.resume (frame, this); + } - return 0; + return 0; } int32_t afr_truncate_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; - - int call_count = -1; - int i = 0; - - local = frame->local; - priv = this->private; - - call_count = afr_up_children_count (priv->child_count, local->child_up); - - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } - - local->call_count = call_count; - - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_truncate_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->truncate, - &local->loc, - local->cont.truncate.offset); - - if (!--call_count) - break; - } - } - - return 0; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; + + int call_count = -1; + int i = 0; + + local = frame->local; + priv = this->private; + + call_count = afr_up_children_count (priv->child_count, local->child_up); + + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } + + local->call_count = call_count; + + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_truncate_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->truncate, + &local->loc, + local->cont.truncate.offset); + + if (!--call_count) + break; + } + } + + return 0; } int afr_truncate_done (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - local = frame->local; + local = frame->local; - local->transaction.unwind (frame, this); + local->transaction.unwind (frame, this); - AFR_STACK_DESTROY (frame); + AFR_STACK_DESTROY (frame); - return 0; + return 0; } int afr_truncate (call_frame_t *frame, xlator_t *this, - loc_t *loc, off_t offset) + loc_t *loc, off_t offset) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; - call_frame_t *transaction_frame = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; + call_frame_t *transaction_frame = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - transaction_frame = copy_frame (frame); - if (!transaction_frame) { - gf_log (this->name, GF_LOG_ERROR, - "Out of memory."); - goto out; - } + transaction_frame = copy_frame (frame); + if (!transaction_frame) { + gf_log (this->name, GF_LOG_ERROR, + "Out of memory."); + goto out; + } - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - transaction_frame->local = local; + transaction_frame->local = local; - local->op_ret = -1; + local->op_ret = -1; - local->cont.truncate.offset = offset; - local->cont.truncate.ino = loc->inode->ino; + local->cont.truncate.offset = offset; + local->cont.truncate.ino = loc->inode->ino; - local->transaction.fop = afr_truncate_wind; - local->transaction.done = afr_truncate_done; - local->transaction.unwind = afr_truncate_unwind; + local->transaction.fop = afr_truncate_wind; + local->transaction.done = afr_truncate_done; + local->transaction.unwind = afr_truncate_unwind; - loc_copy (&local->loc, loc); + loc_copy (&local->loc, loc); - local->transaction.main_frame = frame; - local->transaction.start = 0; - local->transaction.len = offset; + local->transaction.main_frame = frame; + local->transaction.start = 0; + local->transaction.len = offset; - afr_transaction (transaction_frame, this, AFR_DATA_TRANSACTION); + afr_transaction (transaction_frame, this, AFR_DATA_TRANSACTION); - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (truncate, frame, op_ret, op_errno, NULL, NULL); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (truncate, frame, op_ret, op_errno, NULL, NULL); + } - return 0; + return 0; } @@ -537,145 +537,145 @@ out: int afr_ftruncate_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { + if (main_frame) { local->cont.ftruncate.prebuf.ia_ino = local->cont.ftruncate.ino; local->cont.ftruncate.postbuf.ia_ino = local->cont.ftruncate.ino; - AFR_STACK_UNWIND (ftruncate, main_frame, local->op_ret, + AFR_STACK_UNWIND (ftruncate, main_frame, local->op_ret, local->op_errno, &local->cont.ftruncate.prebuf, &local->cont.ftruncate.postbuf); - } - return 0; + } + return 0; } int -afr_ftruncate_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, +afr_ftruncate_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; - int child_index = (long) cookie; - int call_count = -1; - int need_unwind = 0; + int child_index = (long) cookie; + int call_count = -1; + int need_unwind = 0; int read_child = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; read_child = afr_read_child (this, local->fd->inode); - LOCK (&frame->lock); - { + LOCK (&frame->lock); + { if (child_index == read_child) { local->read_child_returned = _gf_true; } - if (afr_fop_failed (op_ret, op_errno)) - afr_transaction_fop_failed (frame, this, child_index); + if (afr_fop_failed (op_ret, op_errno)) + afr_transaction_fop_failed (frame, this, child_index); - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - local->cont.ftruncate.prebuf = *prebuf; - local->cont.ftruncate.postbuf = *postbuf; - } + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + local->cont.ftruncate.prebuf = *prebuf; + local->cont.ftruncate.postbuf = *postbuf; + } if (child_index == read_child) { local->cont.ftruncate.prebuf = *prebuf; local->cont.ftruncate.postbuf = *postbuf; } - local->success_count++; + local->success_count++; - if ((local->success_count >= priv->wait_count) + if ((local->success_count >= priv->wait_count) && local->read_child_returned) { - need_unwind = 1; - } - } - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); - - if (need_unwind) - local->transaction.unwind (frame, this); - - call_count = afr_frame_return (frame); - - if (call_count == 0) { - local->transaction.resume (frame, this); - } - - return 0; + need_unwind = 1; + } + } + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); + + if (need_unwind) + local->transaction.unwind (frame, this); + + call_count = afr_frame_return (frame); + + if (call_count == 0) { + local->transaction.resume (frame, this); + } + + return 0; } int afr_ftruncate_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; - - int call_count = -1; - int i = 0; - - local = frame->local; - priv = this->private; - - call_count = afr_up_children_count (priv->child_count, local->child_up); - - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } - - local->call_count = call_count; - - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_ftruncate_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->ftruncate, - local->fd, local->cont.ftruncate.offset); - - if (!--call_count) - break; - } - } - - return 0; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; + + int call_count = -1; + int i = 0; + + local = frame->local; + priv = this->private; + + call_count = afr_up_children_count (priv->child_count, local->child_up); + + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } + + local->call_count = call_count; + + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_ftruncate_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->ftruncate, + local->fd, local->cont.ftruncate.offset); + + if (!--call_count) + break; + } + } + + return 0; } int afr_ftruncate_done (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - local = frame->local; + local = frame->local; - local->transaction.unwind (frame, this); + local->transaction.unwind (frame, this); - AFR_STACK_DESTROY (frame); + AFR_STACK_DESTROY (frame); - return 0; + return 0; } @@ -690,36 +690,36 @@ afr_do_ftruncate (call_frame_t *frame, xlator_t *this) local = frame->local; - transaction_frame = copy_frame (frame); - if (!transaction_frame) { - gf_log (this->name, GF_LOG_ERROR, - "Out of memory."); - goto out; - } + transaction_frame = copy_frame (frame); + if (!transaction_frame) { + gf_log (this->name, GF_LOG_ERROR, + "Out of memory."); + goto out; + } transaction_frame->local = local; frame->local = NULL; - local->op = GF_FOP_FTRUNCATE; + local->op = GF_FOP_FTRUNCATE; - local->transaction.fop = afr_ftruncate_wind; - local->transaction.done = afr_ftruncate_done; - local->transaction.unwind = afr_ftruncate_unwind; + local->transaction.fop = afr_ftruncate_wind; + local->transaction.done = afr_ftruncate_done; + local->transaction.unwind = afr_ftruncate_unwind; - local->transaction.main_frame = frame; + local->transaction.main_frame = frame; - local->transaction.start = 0; - local->transaction.len = local->cont.ftruncate.offset; + local->transaction.start = 0; + local->transaction.len = local->cont.ftruncate.offset; - afr_transaction (transaction_frame, this, AFR_DATA_TRANSACTION); + afr_transaction (transaction_frame, this, AFR_DATA_TRANSACTION); op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, NULL, NULL); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, NULL, NULL); + } return 0; } @@ -727,40 +727,40 @@ out: int afr_ftruncate (call_frame_t *frame, xlator_t *this, - fd_t *fd, off_t offset) + fd_t *fd, off_t offset) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; - call_frame_t *transaction_frame = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; + call_frame_t *transaction_frame = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; uint64_t ctx; afr_fd_ctx_t *fd_ctx = NULL; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } frame->local = local; - local->cont.ftruncate.offset = offset; - local->cont.ftruncate.ino = fd->inode->ino; + local->cont.ftruncate.offset = offset; + local->cont.ftruncate.ino = fd->inode->ino; - local->fd = fd_ref (fd); + local->fd = fd_ref (fd); ret = fd_ctx_get (fd, this, &ctx); if (ret < 0) { @@ -776,15 +776,15 @@ afr_ftruncate (call_frame_t *frame, xlator_t *this, afr_do_ftruncate (frame, this); } - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, NULL, NULL); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, NULL, NULL); + } - return 0; + return 0; } /* }}} */ @@ -794,20 +794,20 @@ out: int afr_setattr_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { + if (main_frame) { local->cont.setattr.preop_buf.ia_ino = local->cont.setattr.ino; local->cont.setattr.postop_buf.ia_ino = local->cont.setattr.ino; @@ -817,7 +817,7 @@ afr_setattr_unwind (call_frame_t *frame, xlator_t *this) &local->cont.setattr.postop_buf); } - return 0; + return 0; } @@ -826,116 +826,116 @@ afr_setattr_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *preop, struct iatt *postop) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; - int child_index = (long) cookie; + int child_index = (long) cookie; int read_child = 0; - int call_count = -1; - int need_unwind = 0; + int call_count = -1; + int need_unwind = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; read_child = afr_read_child (this, local->loc.inode); - LOCK (&frame->lock); - { + LOCK (&frame->lock); + { if (child_index == read_child) { local->read_child_returned = _gf_true; } - if (afr_fop_failed (op_ret, op_errno)) - afr_transaction_fop_failed (frame, this, child_index); + if (afr_fop_failed (op_ret, op_errno)) + afr_transaction_fop_failed (frame, this, child_index); - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - local->cont.setattr.preop_buf = *preop; + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + local->cont.setattr.preop_buf = *preop; local->cont.setattr.postop_buf = *postop; - } + } if (child_index == read_child) { local->cont.setattr.preop_buf = *preop; local->cont.setattr.postop_buf = *postop; } - local->success_count++; + local->success_count++; - if ((local->success_count >= priv->wait_count) + if ((local->success_count >= priv->wait_count) && local->read_child_returned) { - need_unwind = 1; - } - } - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + need_unwind = 1; + } + } + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - if (need_unwind) - local->transaction.unwind (frame, this); + if (need_unwind) + local->transaction.unwind (frame, this); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { - local->transaction.resume (frame, this); - } + if (call_count == 0) { + local->transaction.resume (frame, this); + } - return 0; + return 0; } int32_t afr_setattr_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; - int call_count = -1; - int i = 0; + int call_count = -1; + int i = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; - call_count = afr_up_children_count (priv->child_count, local->child_up); + call_count = afr_up_children_count (priv->child_count, local->child_up); - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } - local->call_count = call_count; + local->call_count = call_count; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_setattr_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->setattr, - &local->loc, - &local->cont.setattr.in_buf, + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_setattr_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->setattr, + &local->loc, + &local->cont.setattr.in_buf, local->cont.setattr.valid); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - return 0; + return 0; } int afr_setattr_done (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - local = frame->local; + local = frame->local; - local->transaction.unwind (frame, this); + local->transaction.unwind (frame, this); - AFR_STACK_DESTROY (frame); + AFR_STACK_DESTROY (frame); - return 0; + return 0; } @@ -943,66 +943,66 @@ int afr_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, struct iatt *buf, int32_t valid) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; - call_frame_t *transaction_frame = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; + call_frame_t *transaction_frame = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - transaction_frame = copy_frame (frame); - if (!transaction_frame) { - gf_log (this->name, GF_LOG_ERROR, - "Out of memory."); - goto out; - } + transaction_frame = copy_frame (frame); + if (!transaction_frame) { + gf_log (this->name, GF_LOG_ERROR, + "Out of memory."); + goto out; + } - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - transaction_frame->local = local; + transaction_frame->local = local; - local->op_ret = -1; + local->op_ret = -1; - local->cont.setattr.ino = loc->inode->ino; + local->cont.setattr.ino = loc->inode->ino; local->cont.setattr.in_buf = *buf; local->cont.setattr.valid = valid; - local->transaction.fop = afr_setattr_wind; - local->transaction.done = afr_setattr_done; - local->transaction.unwind = afr_setattr_unwind; + local->transaction.fop = afr_setattr_wind; + local->transaction.done = afr_setattr_done; + local->transaction.unwind = afr_setattr_unwind; - loc_copy (&local->loc, loc); + loc_copy (&local->loc, loc); - local->transaction.main_frame = frame; - local->transaction.start = LLONG_MAX - 1; - local->transaction.len = 0; + local->transaction.main_frame = frame; + local->transaction.start = LLONG_MAX - 1; + local->transaction.len = 0; - afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); + afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (setattr, frame, op_ret, op_errno, NULL, NULL); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (setattr, frame, op_ret, op_errno, NULL, NULL); + } - return 0; + return 0; } /* {{{ fsetattr */ @@ -1010,20 +1010,20 @@ out: int afr_fsetattr_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { + if (main_frame) { local->cont.fsetattr.preop_buf.ia_ino = local->cont.fsetattr.ino; local->cont.fsetattr.postop_buf.ia_ino = @@ -1035,7 +1035,7 @@ afr_fsetattr_unwind (call_frame_t *frame, xlator_t *this) &local->cont.fsetattr.postop_buf); } - return 0; + return 0; } @@ -1044,116 +1044,116 @@ afr_fsetattr_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *preop, struct iatt *postop) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; - int child_index = (long) cookie; + int child_index = (long) cookie; int read_child = 0; - int call_count = -1; - int need_unwind = 0; + int call_count = -1; + int need_unwind = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; read_child = afr_read_child (this, local->fd->inode); - LOCK (&frame->lock); - { + LOCK (&frame->lock); + { if (child_index == read_child) { local->read_child_returned = _gf_true; } - if (afr_fop_failed (op_ret, op_errno)) - afr_transaction_fop_failed (frame, this, child_index); + if (afr_fop_failed (op_ret, op_errno)) + afr_transaction_fop_failed (frame, this, child_index); - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - local->cont.fsetattr.preop_buf = *preop; + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + local->cont.fsetattr.preop_buf = *preop; local->cont.fsetattr.postop_buf = *postop; - } + } if (child_index == read_child) { local->cont.fsetattr.preop_buf = *preop; local->cont.fsetattr.postop_buf = *postop; } - local->success_count++; + local->success_count++; - if ((local->success_count >= priv->wait_count) + if ((local->success_count >= priv->wait_count) && local->read_child_returned) { - need_unwind = 1; - } - } - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); + need_unwind = 1; + } + } + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); - if (need_unwind) - local->transaction.unwind (frame, this); + if (need_unwind) + local->transaction.unwind (frame, this); - call_count = afr_frame_return (frame); + call_count = afr_frame_return (frame); - if (call_count == 0) { - local->transaction.resume (frame, this); - } + if (call_count == 0) { + local->transaction.resume (frame, this); + } - return 0; + return 0; } int32_t afr_fsetattr_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; - int call_count = -1; - int i = 0; + int call_count = -1; + int i = 0; - local = frame->local; - priv = this->private; + local = frame->local; + priv = this->private; - call_count = afr_up_children_count (priv->child_count, local->child_up); + call_count = afr_up_children_count (priv->child_count, local->child_up); - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } - local->call_count = call_count; + local->call_count = call_count; - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_fsetattr_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->fsetattr, - local->fd, - &local->cont.fsetattr.in_buf, + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_fsetattr_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->fsetattr, + local->fd, + &local->cont.fsetattr.in_buf, local->cont.fsetattr.valid); - if (!--call_count) - break; - } - } + if (!--call_count) + break; + } + } - return 0; + return 0; } int afr_fsetattr_done (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; + afr_local_t *local = NULL; - local = frame->local; + local = frame->local; - local->transaction.unwind (frame, this); + local->transaction.unwind (frame, this); - AFR_STACK_DESTROY (frame); + AFR_STACK_DESTROY (frame); - return 0; + return 0; } @@ -1161,66 +1161,66 @@ int afr_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *buf, int32_t valid) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; - call_frame_t *transaction_frame = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; + call_frame_t *transaction_frame = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - transaction_frame = copy_frame (frame); - if (!transaction_frame) { - gf_log (this->name, GF_LOG_ERROR, - "Out of memory."); - goto out; - } + transaction_frame = copy_frame (frame); + if (!transaction_frame) { + gf_log (this->name, GF_LOG_ERROR, + "Out of memory."); + goto out; + } - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - transaction_frame->local = local; + transaction_frame->local = local; - local->op_ret = -1; + local->op_ret = -1; - local->cont.fsetattr.ino = fd->inode->ino; + local->cont.fsetattr.ino = fd->inode->ino; local->cont.fsetattr.in_buf = *buf; local->cont.fsetattr.valid = valid; - local->transaction.fop = afr_fsetattr_wind; - local->transaction.done = afr_fsetattr_done; - local->transaction.unwind = afr_fsetattr_unwind; + local->transaction.fop = afr_fsetattr_wind; + local->transaction.done = afr_fsetattr_done; + local->transaction.unwind = afr_fsetattr_unwind; local->fd = fd_ref (fd); - local->transaction.main_frame = frame; - local->transaction.start = LLONG_MAX - 1; - local->transaction.len = 0; + local->transaction.main_frame = frame; + local->transaction.start = LLONG_MAX - 1; + local->transaction.len = 0; - afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); + afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, NULL, NULL); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, NULL, NULL); + } - return 0; + return 0; } @@ -1230,184 +1230,184 @@ out: int afr_setxattr_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { - AFR_STACK_UNWIND (setxattr, main_frame, + if (main_frame) { + AFR_STACK_UNWIND (setxattr, main_frame, local->op_ret, local->op_errno) - } - return 0; + } + return 0; } int -afr_setxattr_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno) +afr_setxattr_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; - - int call_count = -1; - int need_unwind = 0; - - local = frame->local; - priv = this->private; - - LOCK (&frame->lock); - { - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - } - local->success_count++; - - if (local->success_count == priv->child_count) { - need_unwind = 1; - } - } - - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); - - if (need_unwind) - local->transaction.unwind (frame, this); - - call_count = afr_frame_return (frame); - - if (call_count == 0) { - local->transaction.resume (frame, this); - } - - return 0; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; + + int call_count = -1; + int need_unwind = 0; + + local = frame->local; + priv = this->private; + + LOCK (&frame->lock); + { + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + } + local->success_count++; + + if (local->success_count == priv->child_count) { + need_unwind = 1; + } + } + + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); + + if (need_unwind) + local->transaction.unwind (frame, this); + + call_count = afr_frame_return (frame); + + if (call_count == 0) { + local->transaction.resume (frame, this); + } + + return 0; } int afr_setxattr_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; - - int call_count = -1; - int i = 0; - - local = frame->local; - priv = this->private; - - call_count = afr_up_children_count (priv->child_count, local->child_up); - - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } - - local->call_count = call_count; - - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_setxattr_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->setxattr, - &local->loc, - local->cont.setxattr.dict, - local->cont.setxattr.flags); - - if (!--call_count) - break; - } - } - - return 0; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; + + int call_count = -1; + int i = 0; + + local = frame->local; + priv = this->private; + + call_count = afr_up_children_count (priv->child_count, local->child_up); + + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } + + local->call_count = call_count; + + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_setxattr_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->setxattr, + &local->loc, + local->cont.setxattr.dict, + local->cont.setxattr.flags); + + if (!--call_count) + break; + } + } + + return 0; } int afr_setxattr_done (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = frame->local; + afr_local_t * local = frame->local; - local->transaction.unwind (frame, this); + local->transaction.unwind (frame, this); - AFR_STACK_DESTROY (frame); + AFR_STACK_DESTROY (frame); - return 0; + return 0; } int afr_setxattr (call_frame_t *frame, xlator_t *this, - loc_t *loc, dict_t *dict, int32_t flags) + loc_t *loc, dict_t *dict, int32_t flags) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; - call_frame_t *transaction_frame = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; + call_frame_t *transaction_frame = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); - priv = this->private; + priv = this->private; - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - transaction_frame = copy_frame (frame); - if (!transaction_frame) { - gf_log (this->name, GF_LOG_ERROR, - "Out of memory."); - goto out; - } + transaction_frame = copy_frame (frame); + if (!transaction_frame) { + gf_log (this->name, GF_LOG_ERROR, + "Out of memory."); + goto out; + } - transaction_frame->local = local; + transaction_frame->local = local; - local->op_ret = -1; + local->op_ret = -1; - local->cont.setxattr.dict = dict_ref (dict); - local->cont.setxattr.flags = flags; + local->cont.setxattr.dict = dict_ref (dict); + local->cont.setxattr.flags = flags; - local->transaction.fop = afr_setxattr_wind; - local->transaction.done = afr_setxattr_done; - local->transaction.unwind = afr_setxattr_unwind; + local->transaction.fop = afr_setxattr_wind; + local->transaction.done = afr_setxattr_done; + local->transaction.unwind = afr_setxattr_unwind; - loc_copy (&local->loc, loc); + loc_copy (&local->loc, loc); - local->transaction.main_frame = frame; - local->transaction.start = LLONG_MAX - 1; - local->transaction.len = 0; + local->transaction.main_frame = frame; + local->transaction.start = LLONG_MAX - 1; + local->transaction.len = 0; - afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); + afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (setxattr, frame, op_ret, op_errno); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (setxattr, frame, op_ret, op_errno); + } - return 0; + return 0; } /* }}} */ @@ -1418,182 +1418,182 @@ out: int afr_removexattr_unwind (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = NULL; - call_frame_t *main_frame = NULL; + afr_local_t * local = NULL; + call_frame_t *main_frame = NULL; - local = frame->local; + local = frame->local; - LOCK (&frame->lock); - { - if (local->transaction.main_frame) - main_frame = local->transaction.main_frame; - local->transaction.main_frame = NULL; - } - UNLOCK (&frame->lock); + LOCK (&frame->lock); + { + if (local->transaction.main_frame) + main_frame = local->transaction.main_frame; + local->transaction.main_frame = NULL; + } + UNLOCK (&frame->lock); - if (main_frame) { - AFR_STACK_UNWIND (removexattr, main_frame, + if (main_frame) { + AFR_STACK_UNWIND (removexattr, main_frame, local->op_ret, local->op_errno) - } - return 0; + } + return 0; } int -afr_removexattr_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno) +afr_removexattr_wind_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { - afr_local_t * local = NULL; - afr_private_t * priv = NULL; - - int call_count = -1; - int need_unwind = 0; - - local = frame->local; - priv = this->private; - - LOCK (&frame->lock); - { - if (op_ret != -1) { - if (local->success_count == 0) { - local->op_ret = op_ret; - } - local->success_count++; - - if (local->success_count == priv->wait_count) { - need_unwind = 1; - } - } - - local->op_errno = op_errno; - } - UNLOCK (&frame->lock); - - if (need_unwind) - local->transaction.unwind (frame, this); - - call_count = afr_frame_return (frame); - - if (call_count == 0) { - local->transaction.resume (frame, this); - } - - return 0; + afr_local_t * local = NULL; + afr_private_t * priv = NULL; + + int call_count = -1; + int need_unwind = 0; + + local = frame->local; + priv = this->private; + + LOCK (&frame->lock); + { + if (op_ret != -1) { + if (local->success_count == 0) { + local->op_ret = op_ret; + } + local->success_count++; + + if (local->success_count == priv->wait_count) { + need_unwind = 1; + } + } + + local->op_errno = op_errno; + } + UNLOCK (&frame->lock); + + if (need_unwind) + local->transaction.unwind (frame, this); + + call_count = afr_frame_return (frame); + + if (call_count == 0) { + local->transaction.resume (frame, this); + } + + return 0; } int32_t afr_removexattr_wind (call_frame_t *frame, xlator_t *this) { - afr_local_t *local = NULL; - afr_private_t *priv = NULL; - - int call_count = -1; - int i = 0; - - local = frame->local; - priv = this->private; - - call_count = afr_up_children_count (priv->child_count, local->child_up); - - if (call_count == 0) { - local->transaction.resume (frame, this); - return 0; - } - - local->call_count = call_count; - - for (i = 0; i < priv->child_count; i++) { - if (local->child_up[i]) { - STACK_WIND_COOKIE (frame, afr_removexattr_wind_cbk, - (void *) (long) i, - priv->children[i], - priv->children[i]->fops->removexattr, - &local->loc, - local->cont.removexattr.name); - - if (!--call_count) - break; - } - } - - return 0; + afr_local_t *local = NULL; + afr_private_t *priv = NULL; + + int call_count = -1; + int i = 0; + + local = frame->local; + priv = this->private; + + call_count = afr_up_children_count (priv->child_count, local->child_up); + + if (call_count == 0) { + local->transaction.resume (frame, this); + return 0; + } + + local->call_count = call_count; + + for (i = 0; i < priv->child_count; i++) { + if (local->child_up[i]) { + STACK_WIND_COOKIE (frame, afr_removexattr_wind_cbk, + (void *) (long) i, + priv->children[i], + priv->children[i]->fops->removexattr, + &local->loc, + local->cont.removexattr.name); + + if (!--call_count) + break; + } + } + + return 0; } int afr_removexattr_done (call_frame_t *frame, xlator_t *this) { - afr_local_t * local = frame->local; + afr_local_t * local = frame->local; + + local->transaction.unwind (frame, this); - local->transaction.unwind (frame, this); + AFR_STACK_DESTROY (frame); - AFR_STACK_DESTROY (frame); - - return 0; + return 0; } int afr_removexattr (call_frame_t *frame, xlator_t *this, - loc_t *loc, const char *name) + loc_t *loc, const char *name) { - afr_private_t * priv = NULL; - afr_local_t * local = NULL; - call_frame_t *transaction_frame = NULL; + afr_private_t * priv = NULL; + afr_local_t * local = NULL; + call_frame_t *transaction_frame = NULL; - int ret = -1; + int ret = -1; - int op_ret = -1; - int op_errno = 0; + int op_ret = -1; + int op_errno = 0; - VALIDATE_OR_GOTO (frame, out); - VALIDATE_OR_GOTO (this, out); - VALIDATE_OR_GOTO (this->private, out); - VALIDATE_OR_GOTO (loc, out); + VALIDATE_OR_GOTO (frame, out); + VALIDATE_OR_GOTO (this, out); + VALIDATE_OR_GOTO (this->private, out); + VALIDATE_OR_GOTO (loc, out); - priv = this->private; + priv = this->private; - transaction_frame = copy_frame (frame); - if (!transaction_frame) { - gf_log (this->name, GF_LOG_ERROR, - "Out of memory."); - goto out; - } + transaction_frame = copy_frame (frame); + if (!transaction_frame) { + gf_log (this->name, GF_LOG_ERROR, + "Out of memory."); + goto out; + } - ALLOC_OR_GOTO (local, afr_local_t, out); + ALLOC_OR_GOTO (local, afr_local_t, out); - ret = AFR_LOCAL_INIT (local, priv); - if (ret < 0) { - op_errno = -ret; - goto out; - } + ret = AFR_LOCAL_INIT (local, priv); + if (ret < 0) { + op_errno = -ret; + goto out; + } - transaction_frame->local = local; + transaction_frame->local = local; - local->op_ret = -1; + local->op_ret = -1; - local->cont.removexattr.name = gf_strdup (name); + local->cont.removexattr.name = gf_strdup (name); - local->transaction.fop = afr_removexattr_wind; - local->transaction.done = afr_removexattr_done; - local->transaction.unwind = afr_removexattr_unwind; + local->transaction.fop = afr_removexattr_wind; + local->transaction.done = afr_removexattr_done; + local->transaction.unwind = afr_removexattr_unwind; - loc_copy (&local->loc, loc); + loc_copy (&local->loc, loc); - local->transaction.main_frame = frame; - local->transaction.start = LLONG_MAX - 1; - local->transaction.len = 0; + local->transaction.main_frame = frame; + local->transaction.start = LLONG_MAX - 1; + local->transaction.len = 0; - afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); + afr_transaction (transaction_frame, this, AFR_METADATA_TRANSACTION); - op_ret = 0; + op_ret = 0; out: - if (op_ret == -1) { - if (transaction_frame) - AFR_STACK_DESTROY (transaction_frame); - AFR_STACK_UNWIND (removexattr, frame, op_ret, op_errno); - } + if (op_ret == -1) { + if (transaction_frame) + AFR_STACK_DESTROY (transaction_frame); + AFR_STACK_UNWIND (removexattr, frame, op_ret, op_errno); + } - return 0; + return 0; } diff --git a/xlators/cluster/afr/src/afr-transaction.c b/xlators/cluster/afr/src/afr-transaction.c index a382c12a876..b4615326747 100644 --- a/xlators/cluster/afr/src/afr-transaction.c +++ b/xlators/cluster/afr/src/afr-transaction.c @@ -58,7 +58,7 @@ afr_pid_restore (call_frame_t *frame) static void __mark_all_pending (int32_t *pending[], int child_count, afr_transaction_type type) -{ +{ int i; int j; @@ -76,7 +76,7 @@ __mark_child_dead (int32_t *pending[], int child_count, int child, int j; j = afr_index_for_transaction_type (type); - + pending[child][j] = 0; } @@ -104,7 +104,7 @@ out: static void -__mark_failed_children (int32_t *pending[], int child_count, +__mark_failed_children (int32_t *pending[], int child_count, xlator_t *this, fd_t *fd, afr_transaction_type type) { uint64_t ctx; @@ -127,7 +127,7 @@ __mark_failed_children (int32_t *pending[], int child_count, if (fd_ctx->child_failed[i]) pending[i][j] = 0; } - + out: return; } @@ -162,7 +162,7 @@ out: static void -__mark_down_children (int32_t *pending[], int child_count, +__mark_down_children (int32_t *pending[], int child_count, unsigned char *child_up, afr_transaction_type type) { int i; @@ -208,7 +208,7 @@ __is_first_write_on_fd (xlator_t *this, fd_t *fd) LOCK (&fd->lock); { _ret = __fd_ctx_get (fd, this, &ctx); - + if (_ret < 0) { gf_log (this->name, GF_LOG_DEBUG, "could not get fd ctx on fd=%p", @@ -310,7 +310,7 @@ __changelog_enabled (afr_private_t *priv, afr_transaction_type type) case AFR_DATA_TRANSACTION: if (priv->data_change_log) ret = 1; - + break; case AFR_METADATA_TRANSACTION: @@ -325,7 +325,7 @@ __changelog_enabled (afr_private_t *priv, afr_transaction_type type) ret = 1; break; - + case AFR_FLUSH_TRANSACTION: ret = 1; } @@ -345,17 +345,17 @@ __changelog_needed_pre_op (call_frame_t *frame, xlator_t *this) priv = this->private; local = frame->local; - + if (__changelog_enabled (priv, local->transaction.type)) { switch (local->op) { case GF_FOP_WRITE: case GF_FOP_FTRUNCATE: - /* + /* if it's a data transaction, we write the changelog - only on the first write on an fd + only on the first write on an fd */ - + fd = local->fd; if (!fd || __is_first_write_on_fd (this, fd)) op_ret = 1; @@ -421,7 +421,7 @@ afr_set_pending_dict (afr_private_t *priv, dict_t *xattr, int32_t **pending) ret = dict_set_static_bin (xattr, priv->pending_key[i], pending[i], 3 * sizeof (int32_t)); /* 3 = data+metadata+entry */ - + if (ret < 0) goto out; } @@ -501,28 +501,28 @@ afr_changelog_post_op_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } } - return 0; + return 0; } -int +int afr_changelog_post_op (call_frame_t *frame, xlator_t *this) { afr_private_t * priv = this->private; afr_internal_lock_t *int_lock = NULL; int ret = 0; - int i = 0; + int i = 0; int call_count = 0; - - afr_local_t * local = NULL; + + afr_local_t * local = NULL; dict_t **xattr = NULL; local = frame->local; int_lock = &local->internal_lock; - __mark_down_children (local->pending, priv->child_count, + __mark_down_children (local->pending, priv->child_count, local->child_up, local->transaction.type); - + if (local->op == GF_FOP_FLUSH) { __mark_failed_children (local->pending, priv->child_count, this, local->fd, @@ -539,14 +539,14 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this) if (local->op == GF_FOP_FLUSH) { call_count = afr_pre_op_done_count (this, local->fd, local->child_up); } else { - call_count = afr_up_children_count (priv->child_count, local->child_up); + call_count = afr_up_children_count (priv->child_count, local->child_up); if (local->transaction.type == AFR_ENTRY_RENAME_TRANSACTION) { call_count *= 2; } } - local->call_count = call_count; + local->call_count = call_count; if (call_count == 0) { /* no child is up */ @@ -561,7 +561,7 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this) for (i = 0; i < priv->child_count; i++) { if (local->child_up[i]) { - ret = afr_set_pending_dict (priv, xattr[i], + ret = afr_set_pending_dict (priv, xattr[i], local->pending); if (ret < 0) @@ -593,7 +593,7 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this) { if (__if_fd_pre_op_done (this, local->fd, i)) { STACK_WIND (frame, afr_changelog_post_op_cbk, - priv->children[i], + priv->children[i], priv->children[i]->fops->fxattrop, local->fd, GF_XATTROP_ADD_ARRAY, xattr[i]); @@ -610,19 +610,19 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this) priv->children[i]->fops->xattrop, &local->transaction.new_parent_loc, GF_XATTROP_ADD_ARRAY, xattr[i]); - + call_count--; } - /* + /* set it again because previous stack_wind might have already returned (think of case where subvolume is posix) and would have used the dict as placeholder for return value */ - - ret = afr_set_pending_dict (priv, xattr[i], + + ret = afr_set_pending_dict (priv, xattr[i], local->pending); if (ret < 0) @@ -635,15 +635,15 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this) { if (local->fd) STACK_WIND (frame, afr_changelog_post_op_cbk, - priv->children[i], + priv->children[i], priv->children[i]->fops->fxattrop, - local->fd, + local->fd, GF_XATTROP_ADD_ARRAY, xattr[i]); - else + else STACK_WIND (frame, afr_changelog_post_op_cbk, - priv->children[i], + priv->children[i], priv->children[i]->fops->xattrop, - &local->transaction.parent_loc, + &local->transaction.parent_loc, GF_XATTROP_ADD_ARRAY, xattr[i]); call_count--; } @@ -665,7 +665,7 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this) int32_t afr_changelog_pre_op_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xattr) + int32_t op_ret, int32_t op_errno, dict_t *xattr) { afr_local_t * local = NULL; afr_private_t * priv = this->private; @@ -685,17 +685,17 @@ afr_changelog_pre_op_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret == -1) { local->child_up[child_index] = 0; - + if (op_errno == ENOTSUP) { gf_log (this->name, GF_LOG_ERROR, "xattrop not supported by %s", priv->children[child_index]->name); local->op_ret = -1; - + } else if (!child_went_down (op_ret, op_errno)) { gf_log (this->name, GF_LOG_ERROR, "xattrop failed on child %s: %s", - priv->children[child_index]->name, + priv->children[child_index]->name, strerror (op_errno)); } local->op_errno = op_errno; @@ -706,7 +706,7 @@ afr_changelog_pre_op_cbk (call_frame_t *frame, void *cookie, xlator_t *this, UNLOCK (&frame->lock); if (call_count == 0) { - if ((local->op_ret == -1) && + if ((local->op_ret == -1) && (local->op_errno == ENOTSUP)) { local->transaction.resume (frame, this); } else { @@ -719,23 +719,23 @@ afr_changelog_pre_op_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } } - return 0; + return 0; } -int +int afr_changelog_pre_op (call_frame_t *frame, xlator_t *this) { afr_private_t * priv = this->private; - int i = 0; + int i = 0; int ret = 0; - int call_count = 0; + int call_count = 0; dict_t **xattr = NULL; afr_local_t *local = NULL; local = frame->local; - + xattr = alloca (priv->child_count * sizeof (*xattr)); memset (xattr, 0, (priv->child_count * sizeof (*xattr))); @@ -744,8 +744,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this) dict_ref (xattr[i]); } - call_count = afr_up_children_count (priv->child_count, - local->child_up); + call_count = afr_up_children_count (priv->child_count, + local->child_up); if (local->transaction.type == AFR_ENTRY_RENAME_TRANSACTION) { call_count *= 2; @@ -763,14 +763,14 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this) return 0; } - local->call_count = call_count; + local->call_count = call_count; __mark_all_pending (local->pending, priv->child_count, local->transaction.type); for (i = 0; i < priv->child_count; i++) { if (local->child_up[i]) { - ret = afr_set_pending_dict (priv, xattr[i], + ret = afr_set_pending_dict (priv, xattr[i], local->pending); if (ret < 0) @@ -784,39 +784,39 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this) case AFR_FLUSH_TRANSACTION: { if (local->fd) - STACK_WIND_COOKIE (frame, + STACK_WIND_COOKIE (frame, afr_changelog_pre_op_cbk, (void *) (long) i, - priv->children[i], + priv->children[i], priv->children[i]->fops->fxattrop, local->fd, GF_XATTROP_ADD_ARRAY, xattr[i]); else - STACK_WIND_COOKIE (frame, + STACK_WIND_COOKIE (frame, afr_changelog_pre_op_cbk, (void *) (long) i, - priv->children[i], + priv->children[i], priv->children[i]->fops->xattrop, - &(local->loc), + &(local->loc), GF_XATTROP_ADD_ARRAY, xattr[i]); } break; - - case AFR_ENTRY_RENAME_TRANSACTION: + + case AFR_ENTRY_RENAME_TRANSACTION: { - STACK_WIND_COOKIE (frame, + STACK_WIND_COOKIE (frame, afr_changelog_pre_op_cbk, (void *) (long) i, - priv->children[i], + priv->children[i], priv->children[i]->fops->xattrop, - &local->transaction.new_parent_loc, + &local->transaction.new_parent_loc, GF_XATTROP_ADD_ARRAY, xattr[i]); call_count--; } - /* + /* set it again because previous stack_wind might have already returned (think of case where subvolume is posix) and would have @@ -824,7 +824,7 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this) value */ - ret = afr_set_pending_dict (priv, xattr[i], + ret = afr_set_pending_dict (priv, xattr[i], local->pending); if (ret < 0) @@ -832,24 +832,24 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this) "failed to set pending entry"); /* fall through */ - + case AFR_ENTRY_TRANSACTION: { if (local->fd) - STACK_WIND_COOKIE (frame, + STACK_WIND_COOKIE (frame, afr_changelog_pre_op_cbk, (void *) (long) i, - priv->children[i], + priv->children[i], priv->children[i]->fops->fxattrop, - local->fd, + local->fd, GF_XATTROP_ADD_ARRAY, xattr[i]); else - STACK_WIND_COOKIE (frame, + STACK_WIND_COOKIE (frame, afr_changelog_pre_op_cbk, (void *) (long) i, - priv->children[i], + priv->children[i], priv->children[i]->fops->xattrop, - &local->transaction.parent_loc, + &local->transaction.parent_loc, GF_XATTROP_ADD_ARRAY, xattr[i]); } @@ -860,14 +860,15 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this) break; } } - + for (i = 0; i < priv->child_count; i++) { dict_unref (xattr[i]); } - + return 0; } + int afr_post_blocking_inodelk_cbk (call_frame_t *frame, xlator_t *this) { @@ -891,6 +892,7 @@ afr_post_blocking_inodelk_cbk (call_frame_t *frame, xlator_t *this) return 0; } + int afr_post_nonblocking_inodelk_cbk (call_frame_t *frame, xlator_t *this) { @@ -916,6 +918,7 @@ afr_post_nonblocking_inodelk_cbk (call_frame_t *frame, xlator_t *this) return 0; } + int afr_post_blocking_entrylk_cbk (call_frame_t *frame, xlator_t *this) { @@ -939,6 +942,7 @@ afr_post_blocking_entrylk_cbk (call_frame_t *frame, xlator_t *this) return 0; } + int afr_post_nonblocking_entrylk_cbk (call_frame_t *frame, xlator_t *this) { @@ -964,6 +968,7 @@ afr_post_nonblocking_entrylk_cbk (call_frame_t *frame, xlator_t *this) return 0; } + int afr_post_blocking_rename_cbk (call_frame_t *frame, xlator_t *this) { @@ -986,7 +991,9 @@ afr_post_blocking_rename_cbk (call_frame_t *frame, xlator_t *this) return 0; } -int afr_post_lower_unlock_cbk (call_frame_t *frame, xlator_t *this) + +int +afr_post_lower_unlock_cbk (call_frame_t *frame, xlator_t *this) { afr_internal_lock_t *int_lock = NULL; afr_local_t *local = NULL; @@ -1002,6 +1009,7 @@ int afr_post_lower_unlock_cbk (call_frame_t *frame, xlator_t *this) return 0; } + int afr_set_transaction_flock (afr_local_t *local) { @@ -1060,7 +1068,7 @@ afr_lock_rec (call_frame_t *frame, xlator_t *this) } -int32_t +int afr_lock (call_frame_t *frame, xlator_t *this) { afr_pid_save (frame); @@ -1100,7 +1108,8 @@ afr_internal_lock_finish (call_frame_t *frame, xlator_t *this) return 0; } -int32_t + +int afr_transaction_resume (call_frame_t *frame, xlator_t *this) { afr_internal_lock_t *int_lock = NULL; @@ -1151,7 +1160,7 @@ afr_transaction_fop_failed (call_frame_t *frame, xlator_t *this, int child_index } -int32_t +int afr_transaction (call_frame_t *frame, xlator_t *this, afr_transaction_type type) { afr_local_t * local = NULL; diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index 8e0121609d9..db762c11ec5 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -40,7 +40,7 @@ typedef struct _afr_private { unsigned int read_child_rr; /* round-robin index of the read_child */ gf_lock_t read_child_lock; /* lock to protect above */ - + xlator_t **children; gf_lock_t root_inode_lk; @@ -215,7 +215,7 @@ static inline int afr_index_for_transaction_type (afr_transaction_type type) { switch (type) { - + case AFR_DATA_TRANSACTION: case AFR_FLUSH_TRANSACTION: return 0; @@ -295,10 +295,10 @@ typedef struct _afr_local { glusterfs_fop_t fop; - unsigned char *child_up; + unsigned char *child_up; int32_t *child_errno; - + dict_t *xattr_req; int open_fd_count; @@ -311,7 +311,7 @@ typedef struct _afr_local { int (*up_down_flush_cbk) (call_frame_t *, xlator_t *); - /* + /* This struct contains the arguments for the "continuation" (scheme-like) of fops */ @@ -475,7 +475,7 @@ typedef struct _afr_local { } removexattr; /* dir write */ - + struct { ino_t ino; uint64_t gen; @@ -576,7 +576,7 @@ typedef struct _afr_local { int32_t count; } setdents; } cont; - + struct { off_t start, len; @@ -771,13 +771,13 @@ afr_cleanup_fd_ctx (xlator_t *this, fd_t *fd); } while (0); /* allocate and return a string that is the basename of argument */ -static inline char * -AFR_BASENAME (const char *str) +static inline char * +AFR_BASENAME (const char *str) { - char *__tmp_str = NULL; - char *__basename_str = NULL; - __tmp_str = gf_strdup (str); - __basename_str = gf_strdup (basename (__tmp_str)); + char *__tmp_str = NULL; + char *__basename_str = NULL; + __tmp_str = gf_strdup (str); + __basename_str = gf_strdup (basename (__tmp_str)); GF_FREE (__tmp_str); return __basename_str; } @@ -787,13 +787,13 @@ static inline int AFR_LOCAL_INIT (afr_local_t *local, afr_private_t *priv) { local->child_up = GF_CALLOC (sizeof (*local->child_up), - priv->child_count, + priv->child_count, gf_afr_mt_char); if (!local->child_up) { return -ENOMEM; } - memcpy (local->child_up, priv->child_up, + memcpy (local->child_up, priv->child_up, sizeof (*local->child_up) * priv->child_count); |