From 269adc6bd2142681e5086f50c1b59214a9c39da6 Mon Sep 17 00:00:00 2001 From: Poornima G Date: Tue, 6 Dec 2016 14:43:10 +0530 Subject: [PATCH 356/361] dht: At places needed use STACK_WIND_COOKIE Issue: frame has a void * cookie pointer. In case of STACK_WIND_COOKIE frame->cookie is assigned to what is sent by the caller. In case of STACK_WIND frame->cookie is assigned to point point to the frame itself. For ease of coding, at many places, the cookie in the cbk is used to get the pointer to the next xl. This is inconsistent when STACK_WIND_TAIL comes into picture. Eg: dht_setxattr () { for (i = 0 ; i < conf->subvolume_cnt ; i++) { STACK_WIND (..dht_checking_pathinfo_cbk, conf->subvolumes[i] ..); } dht_checking_pathinfo_cbk (...void *cookie...) { prev = cookie; ... for (i = 0; i < conf->subvolume_cnt; i++) { if (conf->subvolumes[i] == prev->this) { ... } } } Consider the below graph: dht (parent) readdir-ahead => Doesn't define setxattr and uses STACK_WIND_TAIL protocol-client With this graph, when dht_checking_pathinfo_cbk is called, cookie will have frame pointing to protocol-client. i.e. prev->this will be protocol-client. But dht was expecting it to be readdir-ahead as it has stored in conf->subvolumes[i] Solution: Hence, as a thumb rule, if cbk is using cookie, then we explicitly call STACK_WIND_COOKIE. mainline: > BUG: 1401812 > Reviewed-on: http://review.gluster.org/16039 > Smoke: Gluster Build System > NetBSD-regression: NetBSD Build System > CentOS-regression: Gluster Build System > Reviewed-by: Raghavendra G (cherry picked from commit 53c542bc26b3bd8db0a2c51191afcae31b7e22f4) BUG: 1427096 Change-Id: I83aea1e24c809c5a91a0db7283e908e125471bd4 Signed-off-by: Poornima G Reviewed-on: https://code.engineering.redhat.com/gerrit/101416 Tested-by: Milind Changire Reviewed-by: Atin Mukherjee --- libglusterfs/src/stack.h | 2 +- xlators/cluster/dht/src/dht-common.c | 560 +++++++++++++++--------------- xlators/cluster/dht/src/dht-diskusage.c | 26 +- xlators/cluster/dht/src/dht-inode-read.c | 83 ++--- xlators/cluster/dht/src/dht-inode-write.c | 152 ++++---- xlators/cluster/dht/src/dht-linkfile.c | 31 +- xlators/cluster/dht/src/dht-rename.c | 174 +++++----- xlators/cluster/dht/src/dht-selfheal.c | 51 +-- xlators/cluster/dht/src/nufa.c | 57 +-- xlators/cluster/dht/src/switch.c | 73 ++-- xlators/cluster/dht/src/tier-common.c | 99 +++--- 11 files changed, 659 insertions(+), 649 deletions(-) diff --git a/libglusterfs/src/stack.h b/libglusterfs/src/stack.h index 393fdac..be7e900 100644 --- a/libglusterfs/src/stack.h +++ b/libglusterfs/src/stack.h @@ -326,7 +326,7 @@ STACK_RESET (call_stack_t *stack) "winding from %s to %s", \ frame->root, old_THIS->name, \ THIS->name); \ - if (obj->ctx->measure_latency) \ + if (obj->ctx->measure_latency) \ gf_latency_begin (_new, fn); \ fn (_new, obj, params); \ THIS = old_THIS; \ diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index e40805a..131a4b1 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -588,7 +588,7 @@ dht_discover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_layout_t *layout = NULL; int ret = -1; int is_dir = 0; @@ -621,7 +621,7 @@ dht_discover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, DHT_MSG_GFID_MISMATCH, "%s: gfid different on %s, gfid local = %s" "gfid other = %s", - local->loc.path, prev->this->name, + local->loc.path, prev->name, gfid_local, gfid_node); } @@ -633,19 +633,19 @@ dht_discover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, else mkdir/chmod/chown and fix */ - ret = dht_layout_merge (this, layout, prev->this, + ret = dht_layout_merge (this, layout, prev, op_ret, op_errno, xattr); if (ret) gf_msg (this->name, GF_LOG_WARNING, 0, DHT_MSG_LAYOUT_MERGE_FAILED, "%s: failed to merge layouts for subvol %s", - local->loc.path, prev->this->name); + local->loc.path, prev->name); if (op_ret == -1) { local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "lookup of %s on %s returned error", - local->loc.path, prev->this->name); + local->loc.path, prev->name); goto unlock; } @@ -661,7 +661,7 @@ dht_discover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (!is_linkfile) { /* real file */ - local->cached_subvol = prev->this; + local->cached_subvol = prev; attempt_unwind = 1; } else { goto unlock; @@ -679,9 +679,9 @@ dht_discover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (local->inode == NULL) local->inode = inode_ref (inode); - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); dht_iatt_merge (this, &local->postparent, postparent, - prev->this); + prev); } unlock: UNLOCK (&frame->lock); @@ -765,10 +765,10 @@ dht_discover (call_frame_t *frame, xlator_t *this, loc_t *loc) local->main_frame = frame; for (i = 0; i < call_cnt; i++) { - STACK_WIND (discover_frame, dht_discover_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (discover_frame, dht_discover_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, local->xattr_req); } return 0; @@ -789,7 +789,7 @@ dht_lookup_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_layout_t *layout = NULL; int ret = -1; int is_dir = 0; @@ -822,7 +822,7 @@ dht_lookup_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, DHT_MSG_GFID_MISMATCH, "%s: gfid different on %s." " gfid local = %s, gfid subvol = %s", - local->loc.path, prev->this->name, + local->loc.path, prev->name, gfid_local, gfid_node); } @@ -833,14 +833,14 @@ dht_lookup_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, else mkdir/chmod/chown and fix */ - ret = dht_layout_merge (this, layout, prev->this, - op_ret, op_errno, xattr); + ret = dht_layout_merge (this, layout, prev, op_ret, op_errno, + xattr); if (op_ret == -1) { local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "lookup of %s on %s returned error", - local->loc.path, prev->this->name); + local->loc.path, prev->name); goto unlock; } @@ -852,7 +852,7 @@ dht_lookup_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, "lookup of %s on %s returned non" "dir 0%o" "calling lookup_everywhere", - local->loc.path, prev->this->name, + local->loc.path, prev->name, stbuf->ia_type); local->need_selfheal = 1; @@ -869,9 +869,8 @@ dht_lookup_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (local->inode == NULL) local->inode = inode_ref (inode); - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); - dht_iatt_merge (this, &local->postparent, postparent, - prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); + dht_iatt_merge (this, &local->postparent, postparent, prev); } unlock: UNLOCK (&frame->lock); @@ -955,7 +954,7 @@ dht_revalidate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_layout_t *layout = NULL; dht_conf_t *conf = NULL; int ret = -1; @@ -1007,7 +1006,7 @@ dht_revalidate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, DHT_MSG_REVALIDATE_CBK_INFO, "Revalidate: subvolume %s for %s " "(gfid = %s) returned -1", - prev->this->name, local->loc.path, + prev->name, local->loc.path, gfid); } if (op_errno == ESTALE) { @@ -1087,7 +1086,7 @@ dht_revalidate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } } ret = dht_layout_dir_mismatch (this, layout, - prev->this, &local->loc, + prev, &local->loc, xattr); if (ret != 0) { gf_msg (this->name, GF_LOG_INFO, 0, @@ -1110,9 +1109,9 @@ dht_revalidate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dht_dir_has_layout (xattr, conf->xattr_name) >= 0) || conf->subvolume_cnt == 1) { - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); dht_iatt_merge (this, &local->postparent, postparent, - prev->this); + prev); } else { /* copy the gfid anyway */ gf_uuid_copy (local->stbuf.ia_gfid, stbuf->ia_gfid); @@ -1138,9 +1137,9 @@ unlock: local->op_ret = -1; } else { - STACK_WIND (frame, dht_lookup_linkfile_cbk, - subvol, subvol->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_linkfile_cbk, + subvol, subvol, subvol->fops->lookup, + &local->loc, local->xattr_req); return 0; } } @@ -1835,7 +1834,7 @@ dht_lookup_everywhere_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int is_linkfile = 0; int is_dir = 0; xlator_t *subvol = NULL; @@ -1858,7 +1857,7 @@ dht_lookup_everywhere_cbk (call_frame_t *frame, void *cookie, xlator_t *this, conf = this->private; prev = cookie; - subvol = prev->this; + subvol = prev; gf_msg_debug (this->name, 0, "returned with op_ret %d and op_errno %d (%s) " @@ -1883,7 +1882,7 @@ dht_lookup_everywhere_cbk (call_frame_t *frame, void *cookie, xlator_t *this, DHT_MSG_GFID_MISMATCH, "%s: gfid differs on subvolume %s," " gfid local = %s, gfid node = %s", - loc->path, prev->this->name, gfid, + loc->path, prev->name, gfid, uuid_utoa(buf->ia_gfid)); } @@ -2064,10 +2063,10 @@ dht_lookup_everywhere (call_frame_t *frame, xlator_t *this, loc_t *loc) "winding lookup call to %d subvols", call_cnt); for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_lookup_everywhere_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_everywhere_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + loc, local->xattr_req); } return 0; @@ -2084,7 +2083,7 @@ dht_lookup_linkfile_cbk (call_frame_t *frame, void *cookie, inode_t *inode, struct iatt *stbuf, dict_t *xattr, struct iatt *postparent) { - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_local_t *local = NULL; xlator_t *subvol = NULL; loc_t *loc = NULL; @@ -2099,7 +2098,7 @@ dht_lookup_linkfile_cbk (call_frame_t *frame, void *cookie, GF_VALIDATE_OR_GOTO ("dht", cookie, unwind); prev = cookie; - subvol = prev->this; + subvol = prev; conf = this->private; local = frame->local; loc = &local->loc; @@ -2154,12 +2153,12 @@ dht_lookup_linkfile_cbk (call_frame_t *frame, void *cookie, stbuf->ia_prot.sticky = 1; } - ret = dht_layout_preset (this, prev->this, inode); + ret = dht_layout_preset (this, prev, inode); if (ret < 0) { gf_msg (this->name, GF_LOG_INFO, 0, DHT_MSG_LAYOUT_PRESET_FAILED, "Failed to set layout for subvolume %s," - "gfid = %s", prev->this->name, gfid); + "gfid = %s", prev->name, gfid); op_ret = -1; op_errno = EINVAL; } @@ -2226,10 +2225,10 @@ dht_lookup_directory (call_frame_t *frame, xlator_t *this, loc_t *loc) } for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_lookup_dir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_dir_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, local->xattr_req); } return 0; unwind: @@ -2252,7 +2251,7 @@ dht_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dht_conf_t *conf = NULL; dht_local_t *local = NULL; loc_t *loc = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = 0; dht_layout_t *parent_layout = NULL; uint32_t vol_commit_hash = 0; @@ -2290,7 +2289,7 @@ dht_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (ENTRY_MISSING (op_ret, op_errno)) { gf_msg_debug (this->name, 0, "Entry %s missing on subvol %s", - loc->path, prev->this->name); + loc->path, prev->name); /* lookup-optimize supercedes lookup-unhashed settings, * - so if it is set, do not process search_unhashed @@ -2357,7 +2356,7 @@ dht_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg_debug (this->name, op_errno, "Lookup of %s for subvolume" " %s failed", loc->path, - prev->this->name); + prev->name); goto out; } @@ -2367,12 +2366,12 @@ dht_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (!is_linkfile) { /* non-directory and not a linkfile */ - ret = dht_layout_preset (this, prev->this, inode); + ret = dht_layout_preset (this, prev, inode); if (ret < 0) { gf_msg (this->name, GF_LOG_INFO, 0, DHT_MSG_LAYOUT_PRESET_FAILED, "could not set pre-set layout for subvolume %s", - prev->this->name); + prev->name); op_ret = -1; op_errno = EINVAL; goto out; @@ -2398,9 +2397,9 @@ dht_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, "Calling lookup on linkto target %s for path %s", subvol->name, loc->path); - STACK_WIND (frame, dht_lookup_linkfile_cbk, - subvol, subvol->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_linkfile_cbk, subvol, + subvol, subvol->fops->lookup, + &local->loc, local->xattr_req); return 0; @@ -2587,10 +2586,11 @@ dht_lookup (call_frame_t *frame, xlator_t *this, if (IA_ISDIR (local->inode->ia_type)) { local->call_cnt = call_cnt = conf->subvolume_cnt; for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_revalidate_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_revalidate_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + loc, local->xattr_req); } return 0; } @@ -2618,9 +2618,9 @@ dht_lookup (call_frame_t *frame, xlator_t *this, "revalidate lookup for %s at %s", loc->path, subvol->name); - STACK_WIND (frame, dht_revalidate_cbk, - subvol, subvol->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_revalidate_cbk, subvol, + subvol, subvol->fops->lookup, + &local->loc, local->xattr_req); } } else { @@ -2681,10 +2681,11 @@ dht_lookup (call_frame_t *frame, xlator_t *this, " on all nodes."); for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_lookup_dir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_dir_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, local->xattr_req); } return 0; } @@ -2692,9 +2693,9 @@ dht_lookup (call_frame_t *frame, xlator_t *this, gf_msg_debug (this->name, 0, "Calling fresh lookup for %s on" " %s", loc->path, hashed_subvol->name); - STACK_WIND (frame, dht_lookup_cbk, - hashed_subvol, hashed_subvol->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_cbk, hashed_subvol, + hashed_subvol, hashed_subvol->fops->lookup, + loc, local->xattr_req); } return 0; @@ -2712,7 +2713,7 @@ dht_unlink_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postparent, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -2725,7 +2726,7 @@ dht_unlink_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg_debug (this->name, op_errno, "Unlink link: subvolume %s" " returned -1", - prev->this->name); + prev->name); goto unlock; } @@ -2748,7 +2749,7 @@ dht_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postparent, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *hashed_subvol = NULL; local = frame->local; @@ -2765,7 +2766,7 @@ dht_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } gf_msg_debug (this->name, op_errno, "Unlink: subvolume %s returned -1", - prev->this->name); + prev->name); goto unlock; } @@ -2793,10 +2794,10 @@ unlock: * to unlink linkfile from hashed subvol if data * file is deleted successfully */ - STACK_WIND (frame, dht_unlink_linkfile_cbk, - hashed_subvol, - hashed_subvol->fops->unlink, &local->loc, - local->flags, xdata); + STACK_WIND_COOKIE (frame, dht_unlink_linkfile_cbk, + hashed_subvol, hashed_subvol, + hashed_subvol->fops->unlink, &local->loc, + local->flags, xdata); return 0; } } @@ -2815,7 +2816,7 @@ dht_err_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -2826,7 +2827,7 @@ dht_err_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto unlock; } @@ -2999,7 +3000,7 @@ dht_find_local_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; dht_conf_t *conf = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int this_call_cnt = 0; int ret = 0; char *uuid_str = NULL; @@ -3048,7 +3049,7 @@ dht_find_local_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg (this->name, GF_LOG_ERROR, 0, DHT_MSG_UUID_PARSE_ERROR, "Failed to parse uuid" - " failed for %s", prev->this->name); + " failed for %s", prev->name); local->op_ret = -1; local->op_errno = EINVAL; goto unlock; @@ -3057,12 +3058,12 @@ dht_find_local_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (gf_uuid_compare (node_uuid, conf->defrag->node_uuid)) { gf_msg_debug (this->name, 0, "subvol %s does not" "belong to this node", - prev->this->name); + prev->name); } else { conf->local_subvols[(conf->local_subvols_cnt)++] - = prev->this; + = prev; gf_msg_debug (this->name, 0, "subvol %s belongs to" - " this node", prev->this->name); + " this node", prev->name); break; } } @@ -3159,7 +3160,7 @@ dht_vgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dht_local_t *local = NULL; int ret = 0; dict_t *dict = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; gf_boolean_t flag = _gf_true; local = frame->local; @@ -3171,7 +3172,7 @@ dht_vgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg (this->name, GF_LOG_ERROR, op_errno, DHT_MSG_GET_XATTR_FAILED, "vgetxattr: Subvolume %s returned -1", - prev->this->name); + prev->name); goto unwind; } @@ -3518,10 +3519,11 @@ dht_getxattr (call_frame_t *frame, xlator_t *this, (void) strncpy (local->xsel, node_uuid_key, 256); cnt = local->call_cnt = conf->subvolume_cnt; for (i = 0; i < cnt; i++) { - STACK_WIND (frame, dht_find_local_subvol_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->getxattr, - loc, node_uuid_key, xdata); + STACK_WIND_COOKIE (frame, dht_find_local_subvol_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->getxattr, + loc, node_uuid_key, xdata); } if (node_uuid_key) GF_FREE (node_uuid_key); @@ -3559,8 +3561,9 @@ dht_getxattr (call_frame_t *frame, xlator_t *this, (void) strncpy (local->xsel, key, 256); local->call_cnt = 1; - STACK_WIND (frame, dht_vgetxattr_cbk, cached_subvol, - cached_subvol->fops->getxattr, loc, key, xdata); + STACK_WIND_COOKIE (frame, dht_vgetxattr_cbk, cached_subvol, + cached_subvol, cached_subvol->fops->getxattr, + loc, key, xdata); return 0; } @@ -3705,11 +3708,11 @@ err: int dht_file_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int op_ret, int op_errno, dict_t *xdata) + int op_ret, int op_errno, dict_t *xdata) { int ret = -1; dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; struct iatt *stbuf = NULL; inode_t *inode = NULL; xlator_t *subvol1 = NULL, *subvol2 = NULL; @@ -3722,7 +3725,7 @@ dht_file_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if ((op_ret == -1) && !dht_inode_missing (op_errno)) { gf_msg_debug (this->name, op_errno, "subvolume %s returned -1.", - prev->this->name); + prev->name); goto out; } @@ -3828,10 +3831,11 @@ dht_fsetxattr (call_frame_t *frame, xlator_t *this, if (IA_ISDIR (fd->inode->ia_type)) { for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_err_cbk, - layout->list[i].xlator, - layout->list[i].xlator->fops->fsetxattr, - fd, xattr, flags, NULL); + STACK_WIND_COOKIE (frame, dht_err_cbk, + layout->list[i].xlator, + layout->list[i].xlator, + layout->list[i].xlator->fops->fsetxattr, + fd, xattr, flags, NULL); } } else { @@ -3850,8 +3854,9 @@ dht_fsetxattr (call_frame_t *frame, xlator_t *this, DHT_IATT_IN_XDATA_KEY, fd); } - STACK_WIND (frame, dht_file_setxattr_cbk, subvol, - subvol->fops->fsetxattr, fd, xattr, flags, xdata); + STACK_WIND_COOKIE (frame, dht_file_setxattr_cbk, subvol, + subvol, subvol->fops->fsetxattr, fd, xattr, + flags, xdata); if (xdata) dict_unref (xdata); @@ -3887,7 +3892,7 @@ dht_checking_pathinfo_cbk (call_frame_t *frame, void *cookie, xlator_t *this, char *value = NULL; dht_local_t *local = NULL; dht_conf_t *conf = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int this_call_cnt = 0; local = frame->local; @@ -3904,8 +3909,8 @@ dht_checking_pathinfo_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (!strcmp (value, local->key)) { for (i = 0; i < conf->subvolume_cnt; i++) { - if (conf->subvolumes[i] == prev->this) - conf->decommissioned_bricks[i] = prev->this; + if (conf->subvolumes[i] == prev) + conf->decommissioned_bricks[i] = prev; } } @@ -3948,15 +3953,15 @@ dht_setxattr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ if (local->fop == GF_FOP_SETXATTR) { - STACK_WIND (frame, dht_file_setxattr_cbk, subvol, - subvol->fops->setxattr, &local->loc, - local->rebalance.xattr, local->rebalance.flags, - NULL); + STACK_WIND_COOKIE (frame, dht_file_setxattr_cbk, subvol, + subvol, subvol->fops->setxattr, &local->loc, + local->rebalance.xattr, + local->rebalance.flags, NULL); } else { - STACK_WIND (frame, dht_file_setxattr_cbk, subvol, - subvol->fops->fsetxattr, local->fd, - local->rebalance.xattr, local->rebalance.flags, - NULL); + STACK_WIND_COOKIE (frame, dht_file_setxattr_cbk, subvol, + subvol, subvol->fops->fsetxattr, local->fd, + local->rebalance.xattr, + local->rebalance.flags, NULL); } return 0; @@ -4163,10 +4168,10 @@ dht_setxattr (call_frame_t *frame, xlator_t *this, for (i = 0 ; i < conf->subvolume_cnt; i++) { /* Get the pathinfo, and then compare */ - STACK_WIND (frame, dht_checking_pathinfo_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->getxattr, - loc, GF_XATTR_PATHINFO_KEY, NULL); + STACK_WIND_COOKIE (frame, dht_checking_pathinfo_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->getxattr, + loc, GF_XATTR_PATHINFO_KEY, NULL); } return 0; } @@ -4235,10 +4240,11 @@ dht_setxattr (call_frame_t *frame, xlator_t *this, if (IA_ISDIR (loc->inode->ia_type)) { for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_err_cbk, - layout->list[i].xlator, - layout->list[i].xlator->fops->setxattr, - loc, xattr, flags, xdata); + STACK_WIND_COOKIE (frame, dht_err_cbk, + layout->list[i].xlator, + layout->list[i].xlator, + layout->list[i].xlator->fops->setxattr, + loc, xattr, flags, xdata); } } else { @@ -4252,9 +4258,9 @@ dht_setxattr (call_frame_t *frame, xlator_t *this, ret = dict_set_dynstr_with_alloc (xdata, DHT_IATT_IN_XDATA_KEY, "yes"); - STACK_WIND (frame, dht_file_setxattr_cbk, - subvol, subvol->fops->setxattr, - loc, xattr, flags, xdata); + STACK_WIND_COOKIE (frame, dht_file_setxattr_cbk, subvol, + subvol, subvol->fops->setxattr, loc, xattr, + flags, xdata); if (xdata) dict_unref (xdata); @@ -4274,11 +4280,11 @@ err: int dht_file_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int op_ret, int op_errno, dict_t *xdata) + int op_ret, int op_errno, dict_t *xdata) { int ret = -1; dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; struct iatt *stbuf = NULL; inode_t *inode = NULL; xlator_t *subvol1 = NULL, *subvol2 = NULL; @@ -4291,7 +4297,7 @@ dht_file_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if ((op_ret == -1) && !dht_inode_missing (op_errno)) { gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -4374,13 +4380,13 @@ dht_removexattr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, goto err; if (local->fop == GF_FOP_REMOVEXATTR) { - STACK_WIND (frame, dht_file_removexattr_cbk, subvol, - subvol->fops->removexattr, &local->loc, - local->key, NULL); + STACK_WIND_COOKIE (frame, dht_file_removexattr_cbk, subvol, + subvol, subvol->fops->removexattr, + &local->loc, local->key, NULL); } else { - STACK_WIND (frame, dht_file_removexattr_cbk, subvol, - subvol->fops->fremovexattr, local->fd, - local->key, NULL); + STACK_WIND_COOKIE (frame, dht_file_removexattr_cbk, subvol, + subvol, subvol->fops->fremovexattr, + local->fd, local->key, NULL); } return 0; @@ -4397,7 +4403,7 @@ dht_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -4408,7 +4414,7 @@ dht_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto unlock; } @@ -4480,10 +4486,11 @@ dht_removexattr (call_frame_t *frame, xlator_t *this, if (IA_ISDIR (loc->inode->ia_type)) { for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_removexattr_cbk, - layout->list[i].xlator, - layout->list[i].xlator->fops->removexattr, - loc, key, NULL); + STACK_WIND_COOKIE (frame, dht_removexattr_cbk, + layout->list[i].xlator, + layout->list[i].xlator, + layout->list[i].xlator->fops->removexattr, + loc, key, NULL); } } else { @@ -4500,9 +4507,9 @@ dht_removexattr (call_frame_t *frame, xlator_t *this, DHT_IATT_IN_XDATA_KEY, loc->path); } - STACK_WIND (frame, dht_file_removexattr_cbk, - subvol, subvol->fops->removexattr, - loc, key, xdata); + STACK_WIND_COOKIE (frame, dht_file_removexattr_cbk, subvol, + subvol, subvol->fops->removexattr, loc, key, + xdata); if (xdata) dict_unref (xdata); @@ -4569,10 +4576,11 @@ dht_fremovexattr (call_frame_t *frame, xlator_t *this, if (IA_ISDIR (fd->inode->ia_type)) { for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_removexattr_cbk, - layout->list[i].xlator, - layout->list[i].xlator->fops->fremovexattr, - fd, key, NULL); + STACK_WIND_COOKIE (frame, dht_removexattr_cbk, + layout->list[i].xlator, + layout->list[i].xlator, + layout->list[i].xlator->fops->fremovexattr, + fd, key, NULL); } } else { @@ -4589,9 +4597,9 @@ dht_fremovexattr (call_frame_t *frame, xlator_t *this, DHT_IATT_IN_XDATA_KEY, fd); } - STACK_WIND (frame, dht_file_removexattr_cbk, - subvol, subvol->fops->fremovexattr, - fd, key, xdata); + STACK_WIND_COOKIE (frame, dht_file_removexattr_cbk, subvol, + subvol, subvol->fops->fremovexattr, fd, key, + xdata); if (xdata) dict_unref (xdata); @@ -4613,7 +4621,7 @@ dht_fd_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -4624,7 +4632,7 @@ dht_fd_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto unlock; } @@ -4871,19 +4879,20 @@ dht_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, local->call_cnt = conf->subvolume_cnt; for (i = 0; i < conf->subvolume_cnt; i++) { - STACK_WIND (frame, dht_fd_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->opendir, - loc, fd, xdata); - + STACK_WIND_COOKIE (frame, dht_fd_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->opendir, + loc, fd, xdata); } } else { local->call_cnt = conf->local_subvols_cnt; for (i = 0; i < conf->local_subvols_cnt; i++) { - STACK_WIND (frame, dht_fd_cbk, - conf->local_subvols[i], - conf->local_subvols[i]->fops->opendir, - loc, fd, xdata); + STACK_WIND_COOKIE (frame, dht_fd_cbk, + conf->local_subvols[i], + conf->local_subvols[i], + conf->local_subvols[i]->fops->opendir, + loc, fd, xdata); } } @@ -4905,7 +4914,7 @@ dht_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, gf_dirent_t entries; gf_dirent_t *orig_entry = NULL; gf_dirent_t *entry = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *next_subvol = NULL; off_t next_offset = 0; int count = 0; @@ -4970,7 +4979,7 @@ dht_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, * directory entry. */ if (readdir_optimize) { - if (prev->this == local->first_up_subvol) + if (prev == local->first_up_subvol) goto list; else continue; @@ -4980,11 +4989,11 @@ dht_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, hashed_subvol = methods->layout_search (this, layout, orig_entry->d_name); - if (prev->this == hashed_subvol) + if (prev == hashed_subvol) goto list; if ((hashed_subvol && dht_subvol_status (conf, hashed_subvol)) - ||(prev->this != local->first_up_subvol)) + || (prev != local->first_up_subvol)) continue; goto list; @@ -5006,7 +5015,7 @@ list: if (conf->search_unhashed == GF_DHT_LOOKUP_UNHASHED_AUTO) { subvol = methods->layout_search (this, layout, orig_entry->d_name); - if (!subvol || (subvol != prev->this)) { + if (!subvol || (subvol != prev)) { /* TODO: Count the number of entries which need linkfile to prove its existence in fs */ layout->search_unhashed++; @@ -5035,7 +5044,7 @@ list: } } else { if (orig_entry->inode) { - ret = dht_layout_preset (this, prev->this, + ret = dht_layout_preset (this, prev, orig_entry->inode); if (ret) gf_msg (this->name, GF_LOG_WARNING, 0, @@ -5057,7 +5066,7 @@ list: orig_entry->d_stat.ia_gfid); if (inode) { ret = dht_layout_preset - (this, prev->this, + (this, prev, inode); if (ret) gf_msg (this->name, @@ -5081,7 +5090,7 @@ list: * distribute we're not concerned only with a posix's view of the * directory but the aggregated namespace' view of the directory. */ - if (prev->this != dht_last_up_subvol (this)) + if (prev != dht_last_up_subvol (this)) op_errno = 0; done: @@ -5090,9 +5099,9 @@ done: EOF is not yet hit on the current subvol */ if (next_offset == 0) { - next_subvol = dht_subvol_next (this, prev->this); + next_subvol = dht_subvol_next (this, prev); } else { - next_subvol = prev->this; + next_subvol = prev; } if (!next_subvol) { @@ -5115,10 +5124,10 @@ done: } } - STACK_WIND (frame, dht_readdirp_cbk, - next_subvol, next_subvol->fops->readdirp, - local->fd, local->size, next_offset, - local->xattr); + STACK_WIND_COOKIE (frame, dht_readdirp_cbk, next_subvol, + next_subvol, next_subvol->fops->readdirp, + local->fd, local->size, next_offset, + local->xattr); return 0; } @@ -5144,7 +5153,7 @@ dht_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_dirent_t entries; gf_dirent_t *orig_entry = NULL; gf_dirent_t *entry = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *next_subvol = NULL; off_t next_offset = 0; int count = 0; @@ -5176,7 +5185,7 @@ dht_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, subvol = methods->layout_search (this, layout, orig_entry->d_name); - if (!subvol || (subvol == prev->this)) { + if (!subvol || (subvol == prev)) { entry = gf_dirent_for_name (orig_entry->d_name); if (!entry) { gf_msg (this->name, GF_LOG_ERROR, ENOMEM, @@ -5202,7 +5211,7 @@ dht_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, * distribute we're not concerned only with a posix's view of the * directory but the aggregated namespace' view of the directory. */ - if (prev->this != dht_last_up_subvol (this)) + if (prev != dht_last_up_subvol (this)) op_errno = 0; done: @@ -5211,18 +5220,18 @@ done: EOF is not yet hit on the current subvol */ if (next_offset == 0) { - next_subvol = dht_subvol_next (this, prev->this); + next_subvol = dht_subvol_next (this, prev); } else { - next_subvol = prev->this; + next_subvol = prev; } if (!next_subvol) { goto unwind; } - STACK_WIND (frame, dht_readdir_cbk, - next_subvol, next_subvol->fops->readdir, - local->fd, local->size, next_offset, NULL); + STACK_WIND_COOKIE (frame, dht_readdir_cbk, next_subvol, + next_subvol, next_subvol->fops->readdir, + local->fd, local->size, next_offset, NULL); return 0; } @@ -5304,11 +5313,13 @@ dht_do_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, } } - STACK_WIND (frame, dht_readdirp_cbk, xvol, xvol->fops->readdirp, - fd, size, yoff, local->xattr); + STACK_WIND_COOKIE (frame, dht_readdirp_cbk, xvol, xvol, + xvol->fops->readdirp, fd, size, yoff, + local->xattr); } else { - STACK_WIND (frame, dht_readdir_cbk, xvol, xvol->fops->readdir, - fd, size, yoff, local->xattr); + STACK_WIND_COOKIE (frame, dht_readdir_cbk, xvol, xvol, + xvol->fops->readdir, fd, size, yoff, + local->xattr); } return 0; @@ -6334,9 +6345,8 @@ dht_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, } local->flags = xflag; - STACK_WIND (frame, dht_unlink_cbk, - cached_subvol, cached_subvol->fops->unlink, loc, - xflag, xdata); + STACK_WIND_COOKIE (frame, dht_unlink_cbk, cached_subvol, cached_subvol, + cached_subvol->fops->unlink, loc, xflag, xdata); return 0; err: @@ -6617,7 +6627,7 @@ dht_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, fd_t *fd, inode_t *inode, struct iatt *stbuf, struct iatt *preparent, struct iatt *postparent, dict_t *xdata) { - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; dht_local_t *local = NULL; @@ -6641,11 +6651,11 @@ dht_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, postparent, 1); } - ret = dht_layout_preset (this, prev->this, inode); + ret = dht_layout_preset (this, prev, inode); if (ret != 0) { gf_msg_debug (this->name, 0, "could not set preset layout for subvol %s", - prev->this->name); + prev->name); op_ret = -1; op_errno = EINVAL; goto out; @@ -6717,10 +6727,10 @@ dht_create_linkfile_create_cbk (call_frame_t *frame, void *cookie, dict_del (local->params, GLUSTERFS_INTERNAL_FOP_KEY); } - STACK_WIND (frame, dht_create_cbk, - cached_subvol, cached_subvol->fops->create, - &local->loc, local->flags, local->mode, - local->umask, local->fd, local->params); + STACK_WIND_COOKIE (frame, dht_create_cbk, cached_subvol, + cached_subvol, cached_subvol->fops->create, + &local->loc, local->flags, local->mode, + local->umask, local->fd, local->params); return 0; err: @@ -6750,9 +6760,9 @@ dht_create_wind_to_avail_subvol (call_frame_t *frame, xlator_t *this, "creating %s on %s", loc->path, subvol->name); - STACK_WIND (frame, dht_create_cbk, - subvol, subvol->fops->create, - loc, flags, mode, umask, fd, params); + STACK_WIND_COOKIE (frame, dht_create_cbk, subvol, + subvol, subvol->fops->create, + loc, flags, mode, umask, fd, params); } else { avail_subvol = dht_free_disk_available_subvol (this, subvol, local); @@ -6778,9 +6788,9 @@ dht_create_wind_to_avail_subvol (call_frame_t *frame, xlator_t *this, gf_msg_debug (this->name, 0, "creating %s on %s", loc->path, subvol->name); - STACK_WIND (frame, dht_create_cbk, - subvol, subvol->fops->create, - loc, flags, mode, umask, fd, params); + STACK_WIND_COOKIE (frame, dht_create_cbk, subvol, + subvol, subvol->fops->create, + loc, flags, mode, umask, fd, params); } out: return 0; @@ -7062,9 +7072,9 @@ dht_create (call_frame_t *frame, xlator_t *this, DHT_MSG_SUBVOL_INFO, "creating %s on %s (got create on %s)", local->loc.path, subvol->name, loc->path); - STACK_WIND (frame, dht_create_cbk, - subvol, subvol->fops->create, - &local->loc, flags, mode, umask, fd, params); + STACK_WIND_COOKIE (frame, dht_create_cbk, subvol, + subvol, subvol->fops->create, &local->loc, + flags, mode, umask, fd, params); goto done; } @@ -7208,19 +7218,19 @@ dht_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int ret = -1; gf_boolean_t subvol_filled = _gf_false; gf_boolean_t dir_exists = _gf_false; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_layout_t *layout = NULL; local = frame->local; prev = cookie; layout = local->layout; - subvol_filled = dht_is_subvol_filled (this, prev->this); + subvol_filled = dht_is_subvol_filled (this, prev); LOCK (&frame->lock); { if (subvol_filled && (op_ret != -1)) { - ret = dht_layout_merge (this, layout, prev->this, + ret = dht_layout_merge (this, layout, prev, -1, ENOSPC, NULL); } else { if (op_ret == -1 && op_errno == EEXIST) { @@ -7234,14 +7244,14 @@ dht_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, op_ret = 0; dir_exists = _gf_true; } - ret = dht_layout_merge (this, layout, prev->this, + ret = dht_layout_merge (this, layout, prev, op_ret, op_errno, NULL); } if (ret) gf_msg (this->name, GF_LOG_WARNING, 0, DHT_MSG_LAYOUT_MERGE_FAILED, "%s: failed to merge layouts for subvol %s", - local->loc.path, prev->this->name); + local->loc.path, prev->name); if (op_ret == -1) { local->op_errno = op_errno; @@ -7251,10 +7261,9 @@ dht_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (dir_exists) goto unlock; - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); - dht_iatt_merge (this, &local->preparent, preparent, prev->this); - dht_iatt_merge (this, &local->postparent, postparent, - prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); + dht_iatt_merge (this, &local->preparent, preparent, prev); + dht_iatt_merge (this, &local->postparent, postparent, prev); } unlock: UNLOCK (&frame->lock); @@ -7382,10 +7391,9 @@ dht_mkdir_helper (call_frame_t *frame, xlator_t *this, parent_disk_layout = NULL; - STACK_WIND (frame, dht_mkdir_hashed_cbk, - hashed_subvol, - hashed_subvol->fops->mkdir, - loc, mode, umask, params); + STACK_WIND_COOKIE (frame, dht_mkdir_hashed_cbk, hashed_subvol, + hashed_subvol, hashed_subvol->fops->mkdir, + loc, mode, umask, params); return 0; @@ -7414,7 +7422,7 @@ dht_mkdir_hashed_cbk (call_frame_t *frame, void *cookie, { dht_local_t *local = NULL; int ret = -1; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_layout_t *layout = NULL; dht_conf_t *conf = NULL; int i = 0; @@ -7470,10 +7478,10 @@ dht_mkdir_hashed_cbk (call_frame_t *frame, void *cookie, dict_del (local->params, conf->xattr_name); if (dht_is_subvol_filled (this, hashed_subvol)) - ret = dht_layout_merge (this, layout, prev->this, + ret = dht_layout_merge (this, layout, prev, -1, ENOSPC, NULL); else - ret = dht_layout_merge (this, layout, prev->this, + ret = dht_layout_merge (this, layout, prev, op_ret, op_errno, NULL); /* TODO: we may have to return from the function @@ -7482,13 +7490,13 @@ dht_mkdir_hashed_cbk (call_frame_t *frame, void *cookie, gf_msg (this->name, GF_LOG_WARNING, 0, DHT_MSG_LAYOUT_MERGE_FAILED, "%s: failed to merge layouts for subvol %s", - local->loc.path, prev->this->name); + local->loc.path, prev->name); local->op_ret = 0; - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); - dht_iatt_merge (this, &local->preparent, preparent, prev->this); - dht_iatt_merge (this, &local->postparent, postparent, prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); + dht_iatt_merge (this, &local->preparent, preparent, prev); + dht_iatt_merge (this, &local->postparent, postparent, prev); local->call_cnt = conf->subvolume_cnt - 1; @@ -7503,10 +7511,11 @@ dht_mkdir_hashed_cbk (call_frame_t *frame, void *cookie, for (i = 0; i < conf->subvolume_cnt; i++) { if (conf->subvolumes[i] == hashed_subvol) continue; - STACK_WIND (frame, dht_mkdir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->mkdir, &local->loc, - local->mode, local->umask, local->params); + STACK_WIND_COOKIE (frame, dht_mkdir_cbk, conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->mkdir, + &local->loc, local->mode, local->umask, + local->params); } return 0; err: @@ -7545,10 +7554,10 @@ dht_mkdir_guard_parent_layout_cbk (call_frame_t *frame, xlator_t *this, local->op_ret = -1; - STACK_WIND (frame, dht_mkdir_hashed_cbk, - local->hashed_subvol, - local->hashed_subvol->fops->mkdir, - loc, mode, umask, params); + STACK_WIND_COOKIE (frame, dht_mkdir_hashed_cbk, local->hashed_subvol, + local->hashed_subvol, + local->hashed_subvol->fops->mkdir, + loc, mode, umask, params); return 0; err: @@ -7695,7 +7704,7 @@ dht_rmdir_hashed_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_frame_t *heal_frame = NULL; dht_conf_t *conf = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; char gfid[GF_UUID_BUF_SIZE] ={0}; local = frame->local; @@ -7719,14 +7728,13 @@ dht_rmdir_hashed_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg_debug (this->name, op_errno, "rmdir on %s for %s failed " "(gfid = %s)", - prev->this->name, local->loc.path, + prev->name, local->loc.path, gfid); goto unlock; } - dht_iatt_merge (this, &local->preparent, preparent, prev->this); - dht_iatt_merge (this, &local->postparent, postparent, - prev->this); + dht_iatt_merge (this, &local->preparent, preparent, prev); + dht_iatt_merge (this, &local->postparent, postparent, prev); } unlock: @@ -7811,7 +7819,7 @@ dht_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int done = 0; char gfid[GF_UUID_BUF_SIZE] ={0}; dht_local_t *heal_local = NULL; @@ -7838,16 +7846,15 @@ dht_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg_debug (this->name, op_errno, "rmdir on %s for %s failed." "(gfid = %s)", - prev->this->name, local->loc.path, + prev->name, local->loc.path, gfid); goto unlock; } /* Track if rmdir succeeded on atleast one subvol*/ local->fop_succeeded = 1; - dht_iatt_merge (this, &local->preparent, preparent, prev->this); - dht_iatt_merge (this, &local->postparent, postparent, - prev->this); + dht_iatt_merge (this, &local->preparent, preparent, prev); + dht_iatt_merge (this, &local->postparent, postparent, prev); } unlock: UNLOCK (&frame->lock); @@ -7907,10 +7914,11 @@ unlock: * The fop failed with ENOENT/ESTALE on * all subvols */ - STACK_WIND (frame, dht_rmdir_hashed_subvol_cbk, - local->hashed_subvol, - local->hashed_subvol->fops->rmdir, - &local->loc, local->flags, NULL); + STACK_WIND_COOKIE (frame, dht_rmdir_hashed_subvol_cbk, + local->hashed_subvol, + local->hashed_subvol, + local->hashed_subvol->fops->rmdir, + &local->loc, local->flags, NULL); } else { /* hashed-subvol was non-NULL and rmdir failed on * all non hashed-subvols. Unwind rmdir with @@ -8038,10 +8046,10 @@ dht_rmdir_lock_cbk (call_frame_t *frame, void *cookie, xlator_t *this, (local->hashed_subvol == conf->subvolumes[i])) continue; - STACK_WIND (frame, dht_rmdir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->rmdir, - &local->loc, local->flags, NULL); + STACK_WIND_COOKIE (frame, dht_rmdir_cbk, conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->rmdir, + &local->loc, local->flags, NULL); } return 0; @@ -8093,10 +8101,10 @@ dht_rmdir_do (call_frame_t *frame, xlator_t *this) /* When DHT has only 1 child */ if (conf->subvolume_cnt == 1) { - STACK_WIND (frame, dht_rmdir_hashed_subvol_cbk, - conf->subvolumes[0], - conf->subvolumes[0]->fops->rmdir, - &local->loc, local->flags, NULL); + STACK_WIND_COOKIE (frame, dht_rmdir_hashed_subvol_cbk, + conf->subvolumes[0], conf->subvolumes[0], + conf->subvolumes[0]->fops->rmdir, + &local->loc, local->flags, NULL); return 0; } @@ -8158,7 +8166,7 @@ dht_rmdir_linkfile_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this struct iatt *postparent, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *src = NULL; call_frame_t *main_frame = NULL; dht_local_t *main_local = NULL; @@ -8168,7 +8176,7 @@ dht_rmdir_linkfile_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this local = frame->local; prev = cookie; - src = prev->this; + src = prev; main_frame = local->main_frame; main_local = main_frame->local; @@ -8202,7 +8210,7 @@ dht_rmdir_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *stbuf, dict_t *xattr, struct iatt *parent) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *src = NULL; call_frame_t *main_frame = NULL; dht_local_t *main_local = NULL; @@ -8212,7 +8220,7 @@ dht_rmdir_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local = frame->local; prev = cookie; - src = prev->this; + src = prev; main_frame = local->main_frame; main_local = main_frame->local; @@ -8233,8 +8241,8 @@ dht_rmdir_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto err; } - STACK_WIND (frame, dht_rmdir_linkfile_unlink_cbk, - src, src->fops->unlink, &local->loc, 0, NULL); + STACK_WIND_COOKIE (frame, dht_rmdir_linkfile_unlink_cbk, src, + src, src->fops->unlink, &local->loc, 0, NULL); return 0; err: @@ -8301,8 +8309,8 @@ dht_rmdir_cached_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto err; } - STACK_WIND (frame, dht_rmdir_lookup_cbk, - src, src->fops->lookup, &local->loc, xattrs); + STACK_WIND_COOKIE (frame, dht_rmdir_lookup_cbk, src, src, + src->fops->lookup, &local->loc, xattrs); if (xattrs) dict_unref (xattrs); @@ -8424,9 +8432,9 @@ dht_rmdir_is_subvol_empty (call_frame_t *frame, xlator_t *this, "Linkfile does not have link subvolume. " "path = %s, gfid = %s", lookup_local->loc.path, gfid); - STACK_WIND (lookup_frame, dht_rmdir_lookup_cbk, - src, src->fops->lookup, - &lookup_local->loc, xattrs); + STACK_WIND_COOKIE (lookup_frame, dht_rmdir_lookup_cbk, + src, src, src->fops->lookup, + &lookup_local->loc, xattrs); } else { STACK_WIND (lookup_frame, dht_rmdir_cached_lookup_cbk, subvol, subvol->fops->lookup, @@ -8456,13 +8464,13 @@ dht_rmdir_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = -1; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *src = NULL; int ret = 0; local = frame->local; prev = cookie; - src = prev->this; + src = prev; if (op_ret > 2) { ret = dht_rmdir_is_subvol_empty (frame, this, entries, src); @@ -8471,7 +8479,7 @@ dht_rmdir_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, case 0: /* non linkfiles exist */ gf_msg_trace (this->name, 0, "readdir on %s for %s returned %d " - "entries", prev->this->name, + "entries", prev->name, local->loc.path, op_ret); local->op_ret = -1; local->op_errno = ENOTEMPTY; @@ -8480,7 +8488,7 @@ dht_rmdir_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* @ret number of linkfiles are getting unlinked */ gf_msg_trace (this->name, 0, "readdir on %s for %s found %d " - "linkfiles", prev->this->name, + "linkfiles", prev->name, local->loc.path, ret); break; } @@ -8502,7 +8510,7 @@ dht_rmdir_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = -1; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dict_t *dict = NULL; int ret = 0; dht_conf_t *conf = this->private; @@ -8520,7 +8528,7 @@ dht_rmdir_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg_debug (this->name, op_errno, "opendir on %s for %s failed, " "gfid = %s,", - prev->this->name, local->loc.path, gfid); + prev->name, local->loc.path, gfid); if ((op_errno != ENOENT) && (op_errno != ESTALE)) { local->op_ret = -1; local->op_errno = op_errno; @@ -8551,10 +8559,10 @@ dht_rmdir_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->call_cnt = conf->subvolume_cnt; for (i = 0; i < conf->subvolume_cnt; i++) { - STACK_WIND (frame, dht_rmdir_readdirp_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->readdirp, - local->fd, 4096, 0, dict); + STACK_WIND_COOKIE (frame, dht_rmdir_readdirp_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->readdirp, + local->fd, 4096, 0, dict); } if (dict) @@ -8613,10 +8621,10 @@ dht_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, } for (i = 0; i < conf->subvolume_cnt; i++) { - STACK_WIND (frame, dht_rmdir_opendir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->opendir, - loc, local->fd, NULL); + STACK_WIND_COOKIE (frame, dht_rmdir_opendir_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->opendir, + loc, local->fd, NULL); } return 0; diff --git a/xlators/cluster/dht/src/dht-diskusage.c b/xlators/cluster/dht/src/dht-diskusage.c index 1eb9e63..0695743 100644 --- a/xlators/cluster/dht/src/dht-diskusage.c +++ b/xlators/cluster/dht/src/dht-diskusage.c @@ -26,7 +26,7 @@ dht_du_info_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_t *xdata) { dht_conf_t *conf = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int this_call_cnt = 0; int i = 0; double percent = 0; @@ -41,7 +41,7 @@ dht_du_info_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret == -1) { gf_msg (this->name, GF_LOG_WARNING, op_errno, DHT_MSG_GET_DISK_INFO_ERROR, - "failed to get disk info from %s", prev->this->name); + "failed to get disk info from %s", prev->name); goto out; } @@ -76,7 +76,7 @@ dht_du_info_cbk (call_frame_t *frame, void *cookie, xlator_t *this, LOCK (&conf->subvolume_lock); { for (i = 0; i < conf->subvolume_cnt; i++) - if (prev->this == conf->subvolumes[i]) { + if (prev == conf->subvolumes[i]) { conf->du_stats[i].avail_percent = percent; conf->du_stats[i].avail_space = bytes; conf->du_stats[i].avail_inodes = percent_inodes; @@ -86,7 +86,7 @@ dht_du_info_cbk (call_frame_t *frame, void *cookie, xlator_t *this, "is: %.2f and avail_space " "is: %" PRIu64" and avail_inodes" " is: %.2f", - prev->this->name, + prev->name, conf->du_stats[i].avail_percent, conf->du_stats[i].avail_space, conf->du_stats[i].avail_inodes); @@ -131,10 +131,11 @@ dht_get_du_info_for_subvol (xlator_t *this, int subvol_idx) tmp_loc.gfid[15] = 1; statfs_local->call_cnt = 1; - STACK_WIND (statfs_frame, dht_du_info_cbk, - conf->subvolumes[subvol_idx], - conf->subvolumes[subvol_idx]->fops->statfs, - &tmp_loc, NULL); + STACK_WIND_COOKIE (statfs_frame, dht_du_info_cbk, + conf->subvolumes[subvol_idx], + conf->subvolumes[subvol_idx], + conf->subvolumes[subvol_idx]->fops->statfs, + &tmp_loc, NULL); return 0; err: @@ -194,10 +195,11 @@ dht_get_du_info (call_frame_t *frame, xlator_t *this, loc_t *loc) statfs_local->call_cnt = conf->subvolume_cnt; for (i = 0; i < conf->subvolume_cnt; i++) { - STACK_WIND (statfs_frame, dht_du_info_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->statfs, - &tmp_loc, statfs_local->params); + STACK_WIND_COOKIE (statfs_frame, dht_du_info_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->statfs, + &tmp_loc, statfs_local->params); } conf->last_stat_fetch.tv_sec = tv.tv_sec; diff --git a/xlators/cluster/dht/src/dht-inode-read.c b/xlators/cluster/dht/src/dht-inode-read.c index 8abf0d5..58168de 100644 --- a/xlators/cluster/dht/src/dht-inode-read.c +++ b/xlators/cluster/dht/src/dht-inode-read.c @@ -32,7 +32,7 @@ dht_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, int op_errno, fd_t *fd, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = 0; local = frame->local; @@ -42,7 +42,7 @@ dht_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if ((op_ret == -1) && !dht_inode_missing(op_errno)) { gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -86,9 +86,9 @@ dht_open2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; - STACK_WIND (frame, dht_open_cbk, subvol, subvol->fops->open, - &local->loc, local->rebalance.flags, local->fd, - NULL); + STACK_WIND_COOKIE (frame, dht_open_cbk, subvol, subvol, + subvol->fops->open, &local->loc, + local->rebalance.flags, local->fd, NULL); return 0; out: @@ -126,8 +126,8 @@ dht_open (call_frame_t *frame, xlator_t *this, local->rebalance.flags = flags; local->call_cnt = 1; - STACK_WIND (frame, dht_open_cbk, subvol, subvol->fops->open, - loc, flags, fd, xdata); + STACK_WIND_COOKIE (frame, dht_open_cbk, subvol, subvol, + subvol->fops->open, loc, flags, fd, xdata); return 0; @@ -145,7 +145,7 @@ dht_file_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, xlator_t *subvol1 = 0; xlator_t *subvol2 = 0; dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; inode_t *inode = NULL; @@ -161,7 +161,7 @@ dht_file_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -238,11 +238,11 @@ dht_attr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; if (local->fop == GF_FOP_FSTAT) { - STACK_WIND (frame, dht_file_attr_cbk, subvol, - subvol->fops->fstat, local->fd, NULL); + STACK_WIND_COOKIE (frame, dht_file_attr_cbk, subvol, subvol, + subvol->fops->fstat, local->fd, NULL); } else { - STACK_WIND (frame, dht_file_attr_cbk, subvol, - subvol->fops->stat, &local->loc, NULL); + STACK_WIND_COOKIE (frame, dht_file_attr_cbk, subvol, subvol, + subvol->fops->stat, &local->loc, NULL); } return 0; @@ -258,7 +258,7 @@ dht_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; GF_VALIDATE_OR_GOTO ("dht", frame, err); GF_VALIDATE_OR_GOTO ("dht", this, out); @@ -274,12 +274,12 @@ dht_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto unlock; } - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); local->op_ret = 0; } @@ -331,8 +331,8 @@ dht_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata) subvol = local->cached_subvol; - STACK_WIND (frame, dht_file_attr_cbk, subvol, - subvol->fops->stat, loc, xdata); + STACK_WIND_COOKIE (frame, dht_file_attr_cbk, subvol, subvol, + subvol->fops->stat, loc, xdata); return 0; } @@ -342,9 +342,8 @@ dht_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata) for (i = 0; i < call_cnt; i++) { subvol = layout->list[i].xlator; - STACK_WIND (frame, dht_attr_cbk, - subvol, subvol->fops->stat, - loc, xdata); + STACK_WIND_COOKIE (frame, dht_attr_cbk, subvol, subvol, + subvol->fops->stat, loc, xdata); } return 0; @@ -391,8 +390,8 @@ dht_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata) subvol = local->cached_subvol; - STACK_WIND (frame, dht_file_attr_cbk, subvol, - subvol->fops->fstat, fd, xdata); + STACK_WIND_COOKIE (frame, dht_file_attr_cbk, subvol, subvol, + subvol->fops->fstat, fd, xdata); return 0; } @@ -401,9 +400,8 @@ dht_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata) for (i = 0; i < call_cnt; i++) { subvol = layout->list[i].xlator; - STACK_WIND (frame, dht_attr_cbk, - subvol, subvol->fops->fstat, - fd, xdata); + STACK_WIND_COOKIE (frame, dht_attr_cbk, subvol, subvol, + subvol->fops->fstat, fd, xdata); } return 0; @@ -567,19 +565,19 @@ dht_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int ret = -1; dht_local_t *local = NULL; xlator_t *subvol = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; - if (!prev || !prev->this) + if (!prev) goto out; if (local->call_cnt != 1) goto out; if ((op_ret == -1) && ((op_errno == ENOTCONN) || dht_inode_missing(op_errno)) && IA_ISDIR(local->loc.inode->ia_type)) { - subvol = dht_subvol_next_available (this, prev->this); + subvol = dht_subvol_next_available (this, prev); if (!subvol) goto out; @@ -588,8 +586,9 @@ dht_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto out; } - STACK_WIND (frame, dht_access_cbk, subvol, subvol->fops->access, - &local->loc, local->rebalance.flags, NULL); + STACK_WIND_COOKIE (frame, dht_access_cbk, subvol, subvol, + subvol->fops->access, &local->loc, + local->rebalance.flags, NULL); return 0; } if ((op_ret == -1) && dht_inode_missing(op_errno) && @@ -634,8 +633,9 @@ dht_access2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; - STACK_WIND (frame, dht_access_cbk, subvol, subvol->fops->access, - &local->loc, local->rebalance.flags, NULL); + STACK_WIND_COOKIE (frame, dht_access_cbk, subvol, subvol, + subvol->fops->access, &local->loc, + local->rebalance.flags, NULL); return 0; @@ -675,8 +675,8 @@ dht_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, goto err; } - STACK_WIND (frame, dht_access_cbk, subvol, subvol->fops->access, - loc, mask, xdata); + STACK_WIND_COOKIE (frame, dht_access_cbk, subvol, subvol, + subvol->fops->access, loc, mask, xdata); return 0; @@ -807,7 +807,7 @@ dht_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; inode_t *inode = NULL; xlator_t *src_subvol = 0; @@ -820,7 +820,7 @@ dht_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, if (op_ret == -1 && !dht_inode_missing(op_errno)) { gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -906,8 +906,9 @@ dht_fsync2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ - STACK_WIND (frame, dht_fsync_cbk, subvol, subvol->fops->fsync, - local->fd, local->rebalance.flags, NULL); + STACK_WIND_COOKIE (frame, dht_fsync_cbk, subvol, subvol, + subvol->fops->fsync, local->fd, + local->rebalance.flags, NULL); return 0; @@ -940,8 +941,8 @@ dht_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync, subvol = local->cached_subvol; - STACK_WIND (frame, dht_fsync_cbk, subvol, subvol->fops->fsync, - fd, datasync, xdata); + STACK_WIND_COOKIE (frame, dht_fsync_cbk, subvol, subvol, + subvol->fops->fsync, fd, datasync, xdata); return 0; diff --git a/xlators/cluster/dht/src/dht-inode-write.c b/xlators/cluster/dht/src/dht-inode-write.c index 112685b..93755b9 100644 --- a/xlators/cluster/dht/src/dht-inode-write.c +++ b/xlators/cluster/dht/src/dht-inode-write.c @@ -30,7 +30,7 @@ dht_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postbuf, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; xlator_t *subvol1 = NULL; xlator_t *subvol2 = NULL; @@ -49,7 +49,7 @@ dht_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_ret = -1; gf_msg_debug (this->name, 0, "subvolume %s returned -1 (%s)", - prev->this->name, strerror (op_errno)); + prev->name, strerror (op_errno)); goto out; } @@ -139,11 +139,12 @@ dht_writev2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ - STACK_WIND (frame, dht_writev_cbk, - subvol, subvol->fops->writev, - local->fd, local->rebalance.vector, local->rebalance.count, - local->rebalance.offset, local->rebalance.flags, - local->rebalance.iobref, NULL); + STACK_WIND_COOKIE (frame, dht_writev_cbk, subvol, + subvol, subvol->fops->writev, + local->fd, local->rebalance.vector, + local->rebalance.count, + local->rebalance.offset, local->rebalance.flags, + local->rebalance.iobref, NULL); return 0; @@ -189,9 +190,9 @@ dht_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, local->rebalance.iobref = iobref_ref (iobref); local->call_cnt = 1; - STACK_WIND (frame, dht_writev_cbk, - subvol, subvol->fops->writev, - fd, vector, count, off, flags, iobref, xdata); + STACK_WIND_COOKIE (frame, dht_writev_cbk, subvol, subvol, + subvol->fops->writev, fd, vector, count, off, flags, + iobref, xdata); return 0; @@ -210,7 +211,7 @@ dht_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postbuf, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; xlator_t *src_subvol = NULL; xlator_t *dst_subvol = NULL; @@ -229,7 +230,7 @@ dht_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_ret = -1; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -321,13 +322,13 @@ dht_truncate2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ if (local->fop == GF_FOP_TRUNCATE) { - STACK_WIND (frame, dht_truncate_cbk, subvol, - subvol->fops->truncate, &local->loc, - local->rebalance.offset, NULL); + STACK_WIND_COOKIE (frame, dht_truncate_cbk, subvol, subvol, + subvol->fops->truncate, &local->loc, + local->rebalance.offset, NULL); } else { - STACK_WIND (frame, dht_truncate_cbk, subvol, - subvol->fops->ftruncate, local->fd, - local->rebalance.offset, NULL); + STACK_WIND_COOKIE (frame, dht_truncate_cbk, subvol, subvol, + subvol->fops->ftruncate, local->fd, + local->rebalance.offset, NULL); } return 0; @@ -367,9 +368,8 @@ dht_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, goto err; } - STACK_WIND (frame, dht_truncate_cbk, - subvol, subvol->fops->truncate, - loc, offset, xdata); + STACK_WIND_COOKIE (frame, dht_truncate_cbk, subvol, subvol, + subvol->fops->truncate, loc, offset, xdata); return 0; @@ -408,9 +408,8 @@ dht_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, goto err; } - STACK_WIND (frame, dht_truncate_cbk, - subvol, subvol->fops->ftruncate, - fd, offset, xdata); + STACK_WIND_COOKIE (frame, dht_truncate_cbk, subvol, subvol, + subvol->fops->ftruncate, fd, offset, xdata); return 0; @@ -428,7 +427,7 @@ dht_fallocate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postbuf, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; xlator_t *src_subvol = NULL; xlator_t *dst_subvol = NULL; @@ -446,7 +445,7 @@ dht_fallocate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, local->op_ret = -1; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -531,9 +530,10 @@ dht_fallocate2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ - STACK_WIND(frame, dht_fallocate_cbk, subvol, subvol->fops->fallocate, - local->fd, local->rebalance.flags, local->rebalance.offset, - local->rebalance.size, NULL); + STACK_WIND_COOKIE (frame, dht_fallocate_cbk, subvol, subvol, + subvol->fops->fallocate, local->fd, + local->rebalance.flags, local->rebalance.offset, + local->rebalance.size, NULL); return 0; @@ -573,9 +573,9 @@ dht_fallocate(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t mode, goto err; } - STACK_WIND (frame, dht_fallocate_cbk, - subvol, subvol->fops->fallocate, - fd, mode, offset, len, xdata); + STACK_WIND_COOKIE (frame, dht_fallocate_cbk, subvol, subvol, + subvol->fops->fallocate, fd, mode, offset, len, + xdata); return 0; @@ -593,7 +593,7 @@ dht_discard_cbk(call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postbuf, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; xlator_t *src_subvol = NULL; xlator_t *dst_subvol = NULL; @@ -611,7 +611,7 @@ dht_discard_cbk(call_frame_t *frame, void *cookie, xlator_t *this, local->op_ret = -1; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -696,9 +696,10 @@ dht_discard2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ - STACK_WIND(frame, dht_discard_cbk, subvol, subvol->fops->discard, - local->fd, local->rebalance.offset, local->rebalance.size, - NULL); + STACK_WIND_COOKIE (frame, dht_discard_cbk, subvol, subvol, + subvol->fops->discard, local->fd, + local->rebalance.offset, local->rebalance.size, + NULL); return 0; @@ -737,8 +738,8 @@ dht_discard(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, goto err; } - STACK_WIND (frame, dht_discard_cbk, subvol, subvol->fops->discard, - fd, offset, len, xdata); + STACK_WIND_COOKIE (frame, dht_discard_cbk, subvol, subvol, + subvol->fops->discard, fd, offset, len, xdata); return 0; @@ -755,7 +756,7 @@ dht_zerofill_cbk(call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postbuf, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; xlator_t *subvol1 = NULL, *subvol2 = NULL; @@ -772,7 +773,7 @@ dht_zerofill_cbk(call_frame_t *frame, void *cookie, xlator_t *this, local->op_ret = -1; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -859,9 +860,10 @@ dht_zerofill2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ - STACK_WIND(frame, dht_zerofill_cbk, subvol, subvol->fops->zerofill, - local->fd, local->rebalance.offset, local->rebalance.size, - NULL); + STACK_WIND_COOKIE (frame, dht_zerofill_cbk, subvol, subvol, + subvol->fops->zerofill, + local->fd, local->rebalance.offset, + local->rebalance.size, NULL); return 0; @@ -901,8 +903,8 @@ dht_zerofill(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, goto err; } - STACK_WIND (frame, dht_zerofill_cbk, subvol, subvol->fops->zerofill, - fd, offset, len, xdata); + STACK_WIND_COOKIE (frame, dht_zerofill_cbk, subvol, subvol, + subvol->fops->zerofill, fd, offset, len, xdata); return 0; @@ -922,7 +924,7 @@ dht_file_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postbuf, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; local = frame->local; @@ -932,7 +934,7 @@ dht_file_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if ((op_ret == -1) && !dht_inode_missing(op_errno)) { gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto out; } @@ -1001,15 +1003,15 @@ dht_setattr2 (xlator_t *this, xlator_t *subvol, call_frame_t *frame, int ret) local->call_cnt = 2; /* This is the second attempt */ if (local->fop == GF_FOP_SETATTR) { - STACK_WIND (frame, dht_file_setattr_cbk, subvol, - subvol->fops->setattr, &local->loc, - &local->rebalance.stbuf, local->rebalance.flags, - NULL); + STACK_WIND_COOKIE (frame, dht_file_setattr_cbk, subvol, + subvol, subvol->fops->setattr, &local->loc, + &local->rebalance.stbuf, local->rebalance.flags, + NULL); } else { - STACK_WIND (frame, dht_file_setattr_cbk, subvol, - subvol->fops->fsetattr, local->fd, - &local->rebalance.stbuf, local->rebalance.flags, - NULL); + STACK_WIND_COOKIE (frame, dht_file_setattr_cbk, subvol, + subvol, subvol->fops->fsetattr, local->fd, + &local->rebalance.stbuf, local->rebalance.flags, + NULL); } return 0; @@ -1028,7 +1030,7 @@ dht_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; @@ -1040,12 +1042,12 @@ dht_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "subvolume %s returned -1", - prev->this->name); + prev->name); goto unlock; } - dht_iatt_merge (this, &local->prebuf, statpre, prev->this); - dht_iatt_merge (this, &local->stbuf, statpost, prev->this); + dht_iatt_merge (this, &local->prebuf, statpre, prev); + dht_iatt_merge (this, &local->stbuf, statpost, prev); local->op_ret = 0; } @@ -1111,9 +1113,9 @@ dht_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, local->call_cnt = 1; subvol = local->cached_subvol; - STACK_WIND (frame, dht_file_setattr_cbk, subvol, - subvol->fops->setattr, - loc, stbuf, valid, xdata); + STACK_WIND_COOKIE (frame, dht_file_setattr_cbk, subvol, + subvol, subvol->fops->setattr, loc, stbuf, + valid, xdata); return 0; } @@ -1121,10 +1123,11 @@ dht_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, local->call_cnt = call_cnt = layout->cnt; for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_setattr_cbk, - layout->list[i].xlator, - layout->list[i].xlator->fops->setattr, - loc, stbuf, valid, xdata); + STACK_WIND_COOKIE (frame, dht_setattr_cbk, + layout->list[i].xlator, + layout->list[i].xlator, + layout->list[i].xlator->fops->setattr, + loc, stbuf, valid, xdata); } return 0; @@ -1182,9 +1185,9 @@ dht_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *stbuf, local->call_cnt = 1; subvol = local->cached_subvol; - STACK_WIND (frame, dht_file_setattr_cbk, subvol, - subvol->fops->fsetattr, - fd, stbuf, valid, xdata); + STACK_WIND_COOKIE (frame, dht_file_setattr_cbk, subvol, + subvol, subvol->fops->fsetattr, fd, stbuf, + valid, xdata); return 0; } @@ -1192,10 +1195,11 @@ dht_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *stbuf, local->call_cnt = call_cnt = layout->cnt; for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_setattr_cbk, - layout->list[i].xlator, - layout->list[i].xlator->fops->fsetattr, - fd, stbuf, valid, xdata); + STACK_WIND_COOKIE (frame, dht_setattr_cbk, + layout->list[i].xlator, + layout->list[i].xlator, + layout->list[i].xlator->fops->fsetattr, + fd, stbuf, valid, xdata); } return 0; diff --git a/xlators/cluster/dht/src/dht-linkfile.c b/xlators/cluster/dht/src/dht-linkfile.c index deba213..355d830 100644 --- a/xlators/cluster/dht/src/dht-linkfile.c +++ b/xlators/cluster/dht/src/dht-linkfile.c @@ -24,7 +24,7 @@ dht_linkfile_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, char is_linkfile = 0; dht_conf_t *conf = NULL; dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; char gfid[GF_UUID_BUF_SIZE] = {0}; local = frame->local; @@ -42,7 +42,7 @@ dht_linkfile_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg (this->name, GF_LOG_WARNING, 0, DHT_MSG_NOT_LINK_FILE_ERROR, "got non-linkfile %s:%s, gfid = %s", - prev->this->name, local->loc.path, gfid); + prev->name, local->loc.path, gfid); out: local->linkfile.linkfile_cbk (frame, cookie, this, op_ret, op_errno, inode, stbuf, postparent, postparent, @@ -59,7 +59,6 @@ dht_linkfile_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; xlator_t *subvol = NULL; - call_frame_t *prev = NULL; dict_t *xattrs = NULL; dht_conf_t *conf = NULL; int ret = -1; @@ -73,8 +72,7 @@ dht_linkfile_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret && (op_errno == EEXIST)) { conf = this->private; - prev = cookie; - subvol = prev->this; + subvol = cookie; if (!subvol) goto out; xattrs = dict_new (); @@ -89,8 +87,9 @@ dht_linkfile_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto out; } - STACK_WIND (frame, dht_linkfile_lookup_cbk, subvol, - subvol->fops->lookup, &local->loc, xattrs); + STACK_WIND_COOKIE (frame, dht_linkfile_lookup_cbk, subvol, + subvol, subvol->fops->lookup, &local->loc, + xattrs); if (xattrs) dict_unref (xattrs); return 0; @@ -167,16 +166,16 @@ dht_linkfile_create (call_frame_t *frame, fop_mknod_cbk_t linkfile_cbk, /* Always create as root:root. dht_linkfile_attr_heal fixes the * ownsership */ FRAME_SU_DO (frame, dht_local_t); - STACK_WIND (frame, dht_linkfile_create_cbk, - fromvol, fromvol->fops->mknod, loc, - S_IFREG | DHT_LINKFILE_MODE, 0, 0, dict); + STACK_WIND_COOKIE (frame, dht_linkfile_create_cbk, fromvol, fromvol, + fromvol->fops->mknod, loc, + S_IFREG | DHT_LINKFILE_MODE, 0, 0, dict); if (need_unref && dict) dict_unref (dict); return 0; out: - local->linkfile.linkfile_cbk (frame, NULL, frame->this, -1, ENOMEM, + local->linkfile.linkfile_cbk (frame, frame->this, frame->this, -1, ENOMEM, loc->inode, NULL, NULL, NULL, NULL); if (need_unref && dict) @@ -193,13 +192,11 @@ dht_linkfile_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; xlator_t *subvol = NULL; char gfid[GF_UUID_BUF_SIZE] = {0}; local = frame->local; - prev = cookie; - subvol = prev->this; + subvol = cookie; if (op_ret == -1) { @@ -238,9 +235,9 @@ dht_linkfile_unlink (call_frame_t *frame, xlator_t *this, goto err; } - STACK_WIND (unlink_frame, dht_linkfile_unlink_cbk, - subvol, subvol->fops->unlink, - &unlink_local->loc, 0, NULL); + STACK_WIND_COOKIE (unlink_frame, dht_linkfile_unlink_cbk, subvol, + subvol, subvol->fops->unlink, + &unlink_local->loc, 0, NULL); return 0; err: diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c index d955ee4..7e7e715 100644 --- a/xlators/cluster/dht/src/dht-rename.c +++ b/xlators/cluster/dht/src/dht-rename.c @@ -27,7 +27,7 @@ dht_rename_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; char gfid[GF_UUID_BUF_SIZE] = {0}; local = frame->local; @@ -42,7 +42,7 @@ dht_rename_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, DHT_MSG_RENAME_FAILED, "Rename %s -> %s on %s failed, (gfid = %s)", local->loc.path, local->loc2.path, - prev->this->name, gfid); + prev->name, gfid); local->op_ret = op_ret; local->op_errno = op_errno; @@ -53,15 +53,11 @@ dht_rename_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, * FIXME: is this the correct way to build stbuf and * parent bufs? */ - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); - dht_iatt_merge (this, &local->preoldparent, preoldparent, - prev->this); - dht_iatt_merge (this, &local->postoldparent, postoldparent, - prev->this); - dht_iatt_merge (this, &local->preparent, prenewparent, - prev->this); - dht_iatt_merge (this, &local->postparent, postnewparent, - prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); + dht_iatt_merge (this, &local->preoldparent, preoldparent, prev); + dht_iatt_merge (this, &local->postoldparent, postoldparent, prev); + dht_iatt_merge (this, &local->preparent, prenewparent, prev); + dht_iatt_merge (this, &local->postparent, postnewparent, prev); unwind: @@ -90,7 +86,7 @@ dht_rename_hashed_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dht_conf_t *conf = NULL; dht_local_t *local = NULL; int call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int i = 0; char gfid[GF_UUID_BUF_SIZE] = {0}; @@ -108,7 +104,7 @@ dht_rename_hashed_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, DHT_MSG_RENAME_FAILED, "rename %s -> %s on %s failed, (gfid = %s) ", local->loc.path, local->loc2.path, - prev->this->name, gfid ); + prev->name, gfid); local->op_ret = op_ret; local->op_errno = op_errno; @@ -119,15 +115,11 @@ dht_rename_hashed_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, * FIXME: is this the correct way to build stbuf and * parent bufs? */ - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); - dht_iatt_merge (this, &local->preoldparent, preoldparent, - prev->this); - dht_iatt_merge (this, &local->postoldparent, postoldparent, - prev->this); - dht_iatt_merge (this, &local->preparent, prenewparent, - prev->this); - dht_iatt_merge (this, &local->postparent, postnewparent, - prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); + dht_iatt_merge (this, &local->preoldparent, preoldparent, prev); + dht_iatt_merge (this, &local->postoldparent, postoldparent, prev); + dht_iatt_merge (this, &local->preparent, prenewparent, prev); + dht_iatt_merge (this, &local->postparent, postnewparent, prev); call_cnt = local->call_cnt = conf->subvolume_cnt - 1; @@ -137,10 +129,11 @@ dht_rename_hashed_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, for (i = 0; i < conf->subvolume_cnt; i++) { if (conf->subvolumes[i] == local->dst_hashed) continue; - STACK_WIND (frame, dht_rename_dir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->rename, - &local->loc, &local->loc2, NULL); + STACK_WIND_COOKIE (frame, dht_rename_dir_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->rename, + &local->loc, &local->loc2, NULL); if (!--call_cnt) break; } @@ -170,10 +163,10 @@ dht_rename_dir_do (call_frame_t *frame, xlator_t *this) local->op_ret = 0; - STACK_WIND (frame, dht_rename_hashed_dir_cbk, - local->dst_hashed, - local->dst_hashed->fops->rename, - &local->loc, &local->loc2, NULL); + STACK_WIND_COOKIE (frame, dht_rename_hashed_dir_cbk, local->dst_hashed, + local->dst_hashed, + local->dst_hashed->fops->rename, + &local->loc, &local->loc2, NULL); return 0; err: @@ -189,7 +182,7 @@ dht_rename_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = -1; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -197,7 +190,7 @@ dht_rename_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret > 2) { gf_msg_trace (this->name, 0, "readdir on %s for %s returned %d entries", - prev->this->name, local->loc.path, op_ret); + prev->name, local->loc.path, op_ret); local->op_ret = -1; local->op_errno = ENOTEMPTY; } @@ -218,7 +211,7 @@ dht_rename_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = -1; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; char gfid[GF_UUID_BUF_SIZE] = {0}; local = frame->local; @@ -231,14 +224,13 @@ dht_rename_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg (this->name, GF_LOG_INFO, op_errno, DHT_MSG_OPENDIR_FAILED, "opendir on %s for %s failed,(gfid = %s) ", - prev->this->name, local->loc.path, gfid); + prev->name, local->loc.path, gfid); goto err; } fd_bind (fd); - STACK_WIND (frame, dht_rename_readdir_cbk, - prev->this, prev->this->fops->readdir, - local->fd, 4096, 0, NULL); + STACK_WIND_COOKIE (frame, dht_rename_readdir_cbk, prev, prev, + prev->fops->readdir, local->fd, 4096, 0, NULL); return 0; @@ -299,10 +291,11 @@ dht_rename_dir_lock_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } for (i = 0; i < conf->subvolume_cnt; i++) { - STACK_WIND (frame, dht_rename_opendir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->opendir, - &local->loc2, local->fd, NULL); + STACK_WIND_COOKIE (frame, dht_rename_opendir_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->opendir, + &local->loc2, local->fd, NULL); } return 0; @@ -631,7 +624,7 @@ dht_rename_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postparent, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int this_call_cnt = 0; local = frame->local; @@ -651,7 +644,7 @@ dht_rename_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg (this->name, GF_LOG_WARNING, op_errno, DHT_MSG_UNLINK_FAILED, "%s: Rename: unlink on %s failed ", - local->loc.path, prev->this->name); + local->loc.path, prev->name); } WIPE (&local->preoldparent); @@ -725,9 +718,9 @@ dht_rename_cleanup (call_frame_t *frame) DHT_MARKER_DONT_ACCOUNT(xattr_new); FRAME_SU_DO (frame, dht_local_t); - STACK_WIND (frame, dht_rename_unlink_cbk, - dst_hashed, dst_hashed->fops->unlink, - &local->loc, 0, xattr_new); + STACK_WIND_COOKIE (frame, dht_rename_unlink_cbk, dst_hashed, + dst_hashed, dst_hashed->fops->unlink, + &local->loc, 0, xattr_new); dict_unref (xattr_new); xattr_new = NULL; @@ -753,9 +746,9 @@ dht_rename_cleanup (call_frame_t *frame) * it will fail. */ FRAME_SU_DO (frame, dht_local_t); - STACK_WIND (frame, dht_rename_unlink_cbk, - src_cached, src_cached->fops->unlink, - &local->loc2, 0, xattr_new); + STACK_WIND_COOKIE (frame, dht_rename_unlink_cbk, src_cached, + src_cached, src_cached->fops->unlink, + &local->loc2, 0, xattr_new); dict_unref (xattr_new); xattr_new = NULL; @@ -784,7 +777,7 @@ dht_rename_links_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *preparent, struct iatt *postparent, dict_t *xdata) { - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_local_t *local = NULL; prev = cookie; @@ -794,7 +787,7 @@ dht_rename_links_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg (this->name, GF_LOG_WARNING, op_errno, DHT_MSG_CREATE_LINK_FAILED, "link/file %s on %s failed", - local->loc.path, prev->this->name); + local->loc.path, prev->name); } if (local->linked == _gf_true) { @@ -815,7 +808,7 @@ dht_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *src_hashed = NULL; xlator_t *src_cached = NULL; xlator_t *dst_hashed = NULL; @@ -856,11 +849,11 @@ dht_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret == -1) { /* Critical failure: unable to rename the cached file */ - if (prev->this == src_cached) { + if (prev == src_cached) { gf_msg (this->name, GF_LOG_WARNING, op_errno, DHT_MSG_RENAME_FAILED, "%s: Rename on %s failed, (gfid = %s) ", - local->loc.path, prev->this->name, + local->loc.path, prev->name, local->loc.inode ? uuid_utoa(local->loc.inode->gfid):""); local->op_ret = op_ret; @@ -874,7 +867,7 @@ dht_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, DHT_MSG_RENAME_FAILED, "%s: Rename (linkto file) on %s failed, " "(gfid = %s) ", - local->loc.path, prev->this->name, + local->loc.path, prev->name, local->loc.inode ? uuid_utoa(local->loc.inode->gfid):""); } @@ -913,16 +906,14 @@ dht_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, err: /* Merge attrs only from src_cached. In case there of src_cached != * dst_hashed, this ignores linkfile attrs. */ - if (prev->this == src_cached) { - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); + if (prev == src_cached) { + dht_iatt_merge (this, &local->stbuf, stbuf, prev); dht_iatt_merge (this, &local->preoldparent, preoldparent, - prev->this); + prev); dht_iatt_merge (this, &local->postoldparent, postoldparent, - prev->this); - dht_iatt_merge (this, &local->preparent, prenewparent, - prev->this); - dht_iatt_merge (this, &local->postparent, postnewparent, - prev->this); + prev); + dht_iatt_merge (this, &local->preparent, prenewparent, prev); + dht_iatt_merge (this, &local->postparent, postnewparent, prev); } @@ -967,9 +958,9 @@ err: DHT_CHANGELOG_TRACK_AS_RENAME(xattr_new, &local->loc, &local->loc2); - STACK_WIND (frame, dht_rename_unlink_cbk, - src_cached, src_cached->fops->unlink, - &local->loc, 0, xattr_new); + STACK_WIND_COOKIE (frame, dht_rename_unlink_cbk, src_cached, + src_cached, src_cached->fops->unlink, + &local->loc, 0, xattr_new); dict_unref (xattr_new); xattr_new = NULL; @@ -986,9 +977,9 @@ err: DHT_MARKER_DONT_ACCOUNT(xattr_new); - STACK_WIND (frame, dht_rename_unlink_cbk, - src_hashed, src_hashed->fops->unlink, - &local->loc, 0, xattr_new); + STACK_WIND_COOKIE (frame, dht_rename_unlink_cbk, src_hashed, + src_hashed, src_hashed->fops->unlink, + &local->loc, 0, xattr_new); dict_unref (xattr_new); xattr_new = NULL; @@ -1001,9 +992,9 @@ err: "deleting old dst datafile %s @ %s", local->loc2.path, dst_cached->name); - STACK_WIND (frame, dht_rename_unlink_cbk, - dst_cached, dst_cached->fops->unlink, - &local->loc2, 0, xattr); + STACK_WIND_COOKIE (frame, dht_rename_unlink_cbk, dst_cached, + dst_cached, dst_cached->fops->unlink, + &local->loc2, 0, xattr); } if (xattr) dict_unref (xattr); @@ -1063,9 +1054,9 @@ dht_do_rename (call_frame_t *frame) if (local->linked == _gf_true) FRAME_SU_DO (frame, dht_local_t); - STACK_WIND (frame, dht_rename_cbk, - rename_subvol, rename_subvol->fops->rename, - &local->loc, &local->loc2, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_rename_cbk, rename_subvol, rename_subvol, + rename_subvol->fops->rename, &local->loc, + &local->loc2, local->xattr_req); return 0; } @@ -1077,7 +1068,7 @@ dht_rename_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -1085,12 +1076,12 @@ dht_rename_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret == -1) { gf_msg_debug (this->name, 0, "link/file on %s failed (%s)", - prev->this->name, strerror (op_errno)); + prev->name, strerror (op_errno)); local->op_ret = -1; local->op_errno = op_errno; local->added_link = _gf_false; } else - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); if (local->op_ret == -1) goto cleanup; @@ -1113,7 +1104,7 @@ dht_rename_linkto_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *src_cached = NULL; dict_t *xattr = NULL; @@ -1125,7 +1116,7 @@ dht_rename_linkto_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret == -1) { gf_msg_debug (this->name, 0, "link/file on %s failed (%s)", - prev->this->name, strerror (op_errno)); + prev->name, strerror (op_errno)); local->op_ret = -1; local->op_errno = op_errno; } @@ -1146,9 +1137,9 @@ dht_rename_linkto_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->added_link = _gf_true; - STACK_WIND (frame, dht_rename_link_cbk, - src_cached, src_cached->fops->link, - &local->loc, &local->loc2, xattr); + STACK_WIND_COOKIE (frame, dht_rename_link_cbk, src_cached, src_cached, + src_cached->fops->link, &local->loc, &local->loc2, + xattr); if (xattr) dict_unref (xattr); @@ -1171,7 +1162,7 @@ dht_rename_unlink_links_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; @@ -1180,7 +1171,7 @@ dht_rename_unlink_links_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if ((op_ret == -1) && (op_errno != ENOENT)) { gf_msg_debug (this->name, 0, "unlink of %s on %s failed (%s)", - local->loc2.path, prev->this->name, + local->loc2.path, prev->name, strerror (op_errno)); local->op_ret = -1; local->op_errno = op_errno; @@ -1237,9 +1228,10 @@ dht_rename_create_links (call_frame_t *frame) DHT_MARKER_DONT_ACCOUNT(xattr_new); - STACK_WIND (frame, dht_rename_unlink_links_cbk, - dst_hashed, dst_hashed->fops->unlink, - &local->loc2, 0, xattr_new); + STACK_WIND_COOKIE (frame, dht_rename_unlink_links_cbk, + dst_hashed, dst_hashed, + dst_hashed->fops->unlink, &local->loc2, 0, + xattr_new); dict_unref (xattr_new); if (xattr) @@ -1291,9 +1283,9 @@ dht_rename_create_links (call_frame_t *frame) local->added_link = _gf_true; - STACK_WIND (frame, dht_rename_link_cbk, - src_cached, src_cached->fops->link, - &local->loc, &local->loc2, xattr_new); + STACK_WIND_COOKIE (frame, dht_rename_link_cbk, src_cached, + src_cached, src_cached->fops->link, + &local->loc, &local->loc2, xattr_new); dict_unref (xattr_new); } diff --git a/xlators/cluster/dht/src/dht-selfheal.c b/xlators/cluster/dht/src/dht-selfheal.c index fd90e54..267eb55 100644 --- a/xlators/cluster/dht/src/dht-selfheal.c +++ b/xlators/cluster/dht/src/dht-selfheal.c @@ -174,7 +174,7 @@ dht_refresh_layout_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; int this_call_cnt = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_layout_t *layout = NULL; GF_VALIDATE_OR_GOTO ("dht", frame, err); @@ -189,16 +189,16 @@ dht_refresh_layout_cbk (call_frame_t *frame, void *cookie, xlator_t *this, LOCK (&frame->lock); { - op_ret = dht_layout_merge (this, layout, prev->this, + op_ret = dht_layout_merge (this, layout, prev, op_ret, op_errno, xattr); - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); if (op_ret == -1) { local->op_errno = op_errno; gf_msg_debug (this->name, op_errno, "lookup of %s on %s returned error", - local->loc.path, prev->this->name); + local->loc.path, prev->name); goto unlock; } @@ -279,10 +279,10 @@ dht_refresh_layout (call_frame_t *frame) } for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_refresh_layout_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_refresh_layout_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, local->xattr_req); } return 0; @@ -1143,7 +1143,7 @@ dht_selfheal_dir_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { dht_local_t *local = NULL; dht_layout_t *layout = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *subvol = NULL; int i = 0, ret = -1; int this_call_cnt = 0; @@ -1152,7 +1152,7 @@ dht_selfheal_dir_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local = frame->local; layout = local->selfheal.layout; prev = cookie; - subvol = prev->this; + subvol = prev; if ((op_ret == 0) || ((op_ret == -1) && (op_errno == EEXIST))) { for (i = 0; i < layout->cnt; i++) { @@ -1172,8 +1172,8 @@ dht_selfheal_dir_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->loc.path, gfid ); goto out; } - dht_iatt_merge (this, &local->preparent, preparent, prev->this); - dht_iatt_merge (this, &local->postparent, postparent, prev->this); + dht_iatt_merge (this, &local->preparent, preparent, prev); + dht_iatt_merge (this, &local->postparent, postparent, prev); ret = 0; out: @@ -1281,13 +1281,14 @@ dht_selfheal_dir_mkdir_lookup_done (call_frame_t *frame, xlator_t *this) "Creating directory %s on subvol %s", loc->path, layout->list[i].xlator->name); - STACK_WIND (frame, dht_selfheal_dir_mkdir_cbk, - layout->list[i].xlator, - layout->list[i].xlator->fops->mkdir, - loc, - st_mode_from_ia (local->stbuf.ia_prot, - local->stbuf.ia_type), - 0, dict); + STACK_WIND_COOKIE (frame, dht_selfheal_dir_mkdir_cbk, + layout->list[i].xlator, + layout->list[i].xlator, + layout->list[i].xlator->fops->mkdir, + loc, + st_mode_from_ia (local->stbuf.ia_prot, + local->stbuf.ia_type), + 0, dict); } } @@ -1313,7 +1314,7 @@ dht_selfheal_dir_mkdir_lookup_cbk (call_frame_t *frame, void *cookie, int missing_dirs = 0; dht_layout_t *layout = NULL; loc_t *loc = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; VALIDATE_OR_GOTO (this->private, err); @@ -1333,7 +1334,7 @@ dht_selfheal_dir_mkdir_lookup_cbk (call_frame_t *frame, void *cookie, } if (!op_ret) { - dht_iatt_merge (this, &local->stbuf, stbuf, prev->this); + dht_iatt_merge (this, &local->stbuf, stbuf, prev); } } @@ -1417,10 +1418,10 @@ dht_selfheal_dir_mkdir_lock_cbk (call_frame_t *frame, void *cookie, */ for (i = 0; i < conf->subvolume_cnt; i++) { - STACK_WIND (frame, dht_selfheal_dir_mkdir_lookup_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, NULL); + STACK_WIND_COOKIE (frame, dht_selfheal_dir_mkdir_lookup_cbk, + conf->subvolumes[i], conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, NULL); } return 0; diff --git a/xlators/cluster/dht/src/nufa.c b/xlators/cluster/dht/src/nufa.c index 56e17d6..afa4465 100644 --- a/xlators/cluster/dht/src/nufa.c +++ b/xlators/cluster/dht/src/nufa.c @@ -28,7 +28,7 @@ nufa_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dht_local_t *local = NULL; loc_t *loc = NULL; int i = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int call_cnt = 0; int ret = 0; @@ -55,11 +55,11 @@ nufa_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (!is_dir && !is_linkfile) { /* non-directory and not a linkfile */ - ret = dht_layout_preset (this, prev->this, inode); + ret = dht_layout_preset (this, prev, inode); if (ret < 0) { gf_msg_debug (this->name, 0, "could not set pre-set layout for subvol" - " %s", prev->this->name); + " %s", prev->name); op_ret = -1; op_errno = EINVAL; goto err; @@ -86,10 +86,11 @@ nufa_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_lookup_dir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_dir_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, local->xattr_req); } } @@ -104,9 +105,9 @@ nufa_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, return 0; } - STACK_WIND (frame, dht_lookup_linkfile_cbk, - subvol, subvol->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_linkfile_cbk, subvol, + subvol, subvol->fops->lookup, + &local->loc, local->xattr_req); } return 0; @@ -121,9 +122,10 @@ out: return 0; } - STACK_WIND (frame, dht_lookup_cbk, - local->hashed_subvol, local->hashed_subvol->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_cbk, local->hashed_subvol, + local->hashed_subvol, + local->hashed_subvol->fops->lookup, + &local->loc, local->xattr_req); return 0; @@ -211,9 +213,9 @@ nufa_lookup (call_frame_t *frame, xlator_t *this, for (i = 0; i < layout->cnt; i++) { subvol = layout->list[i].xlator; - STACK_WIND (frame, dht_revalidate_cbk, - subvol, subvol->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_revalidate_cbk, subvol, + subvol, subvol->fops->lookup, + loc, local->xattr_req); if (!--call_cnt) break; @@ -241,10 +243,11 @@ nufa_lookup (call_frame_t *frame, xlator_t *this, } /* Send it to only local volume */ - STACK_WIND (frame, nufa_local_lookup_cbk, - (xlator_t *)conf->private, - ((xlator_t *)conf->private)->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, nufa_local_lookup_cbk, + ((xlator_t *)conf->private), + ((xlator_t *)conf->private), + ((xlator_t *)conf->private)->fops->lookup, + loc, local->xattr_req); } return 0; @@ -270,10 +273,10 @@ nufa_create_linkfile_create_cbk (call_frame_t *frame, void *cookie, if (op_ret == -1) goto err; - STACK_WIND (frame, dht_create_cbk, - local->cached_subvol, local->cached_subvol->fops->create, - &local->loc, local->flags, local->mode, local->umask, - local->fd, local->params); + STACK_WIND_COOKIE (frame, dht_create_cbk, local->cached_subvol, + local->cached_subvol, local->cached_subvol->fops->create, + &local->loc, local->flags, local->mode, local->umask, + local->fd, local->params); return 0; @@ -340,9 +343,9 @@ nufa_create (call_frame_t *frame, xlator_t *this, gf_msg_trace (this->name, 0, "creating %s on %s", loc->path, subvol->name); - STACK_WIND (frame, dht_create_cbk, - subvol, subvol->fops->create, - loc, flags, mode, umask, fd, params); + STACK_WIND_COOKIE (frame, dht_create_cbk, subvol, + subvol, subvol->fops->create, + loc, flags, mode, umask, fd, params); return 0; diff --git a/xlators/cluster/dht/src/switch.c b/xlators/cluster/dht/src/switch.c index f1e9a39..9795ff4 100644 --- a/xlators/cluster/dht/src/switch.c +++ b/xlators/cluster/dht/src/switch.c @@ -111,7 +111,7 @@ switch_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dht_local_t *local = NULL; loc_t *loc = NULL; int i = 0; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int call_cnt = 0; int ret = 0; @@ -139,12 +139,12 @@ switch_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (!is_dir && !is_linkfile) { /* non-directory and not a linkfile */ - ret = dht_layout_preset (this, prev->this, inode); + ret = dht_layout_preset (this, prev, inode); if (ret < 0) { gf_msg_debug (this->name, 0, "could not set pre-set layout " "for subvol %s", - prev->this->name); + prev->name); op_ret = -1; op_errno = EINVAL; goto err; @@ -173,10 +173,11 @@ switch_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_lookup_dir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_dir_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, local->xattr_req); } } @@ -191,9 +192,9 @@ switch_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, return 0; } - STACK_WIND (frame, dht_lookup_linkfile_cbk, - subvol, subvol->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_linkfile_cbk, subvol, + subvol, subvol->fops->lookup, + &local->loc, local->xattr_req); } return 0; @@ -208,9 +209,10 @@ out: return 0; } - STACK_WIND (frame, dht_lookup_cbk, - local->hashed_subvol, local->hashed_subvol->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_cbk, local->hashed_subvol, + local->hashed_subvol, + local->hashed_subvol->fops->lookup, + &local->loc, local->xattr_req); return 0; @@ -298,9 +300,9 @@ switch_lookup (call_frame_t *frame, xlator_t *this, for (i = 0; i < layout->cnt; i++) { subvol = layout->list[i].xlator; - STACK_WIND (frame, dht_revalidate_cbk, - subvol, subvol->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_revalidate_cbk, subvol, + subvol, subvol->fops->lookup, + loc, local->xattr_req); if (!--call_cnt) break; @@ -339,10 +341,11 @@ switch_lookup (call_frame_t *frame, xlator_t *this, } for (i = 0; i < call_cnt; i++) { - STACK_WIND (frame, dht_lookup_dir_cbk, - conf->subvolumes[i], - conf->subvolumes[i]->fops->lookup, - &local->loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_dir_cbk, + conf->subvolumes[i], + conf->subvolumes[i], + conf->subvolumes[i]->fops->lookup, + &local->loc, local->xattr_req); } return 0; } @@ -351,15 +354,15 @@ switch_lookup (call_frame_t *frame, xlator_t *this, cached_subvol = get_switch_matching_subvol (loc->path, conf, hashed_subvol); if (cached_subvol == hashed_subvol) { - STACK_WIND (frame, dht_lookup_cbk, - hashed_subvol, - hashed_subvol->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, dht_lookup_cbk, hashed_subvol, + hashed_subvol, + hashed_subvol->fops->lookup, + loc, local->xattr_req); } else { - STACK_WIND (frame, switch_local_lookup_cbk, - cached_subvol, - cached_subvol->fops->lookup, - loc, local->xattr_req); + STACK_WIND_COOKIE (frame, switch_local_lookup_cbk, + cached_subvol, cached_subvol, + cached_subvol->fops->lookup, + loc, local->xattr_req); } } @@ -386,10 +389,10 @@ switch_create_linkfile_create_cbk (call_frame_t *frame, void *cookie, if (op_ret == -1) goto err; - STACK_WIND (frame, dht_create_cbk, - local->cached_subvol, local->cached_subvol->fops->create, - &local->loc, local->flags, local->mode, local->umask, - local->fd, local->params); + STACK_WIND_COOKIE (frame, dht_create_cbk, local->cached_subvol, + local->cached_subvol, local->cached_subvol->fops->create, + &local->loc, local->flags, local->mode, local->umask, + local->fd, local->params); return 0; @@ -454,9 +457,9 @@ switch_create (call_frame_t *frame, xlator_t *this, gf_msg_trace (this->name, 0, "creating %s on %s", loc->path, subvol->name); - STACK_WIND (frame, dht_create_cbk, - subvol, subvol->fops->create, - loc, flags, mode, umask, fd, params); + STACK_WIND_COOKIE (frame, dht_create_cbk, subvol, subvol, + subvol->fops->create, loc, flags, mode, umask, fd, + params); return 0; diff --git a/xlators/cluster/dht/src/tier-common.c b/xlators/cluster/dht/src/tier-common.c index 20d3f24..3b22d0a 100644 --- a/xlators/cluster/dht/src/tier-common.c +++ b/xlators/cluster/dht/src/tier-common.c @@ -167,7 +167,7 @@ tier_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, fd_t *fd, inode_t *inode, struct iatt *stbuf, struct iatt *preparent, struct iatt *postparent, dict_t *xdata) { - call_frame_t *prev = NULL; + xlator_t *prev = NULL; int ret = -1; dht_local_t *local = NULL; xlator_t *hashed_subvol = NULL; @@ -218,11 +218,11 @@ tier_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, postparent, 1); } - ret = dht_layout_preset (this, prev->this, inode); + ret = dht_layout_preset (this, prev, inode); if (ret != 0) { gf_msg_debug (this->name, 0, "could not set preset layout for subvol %s", - prev->this->name); + prev->name); op_ret = -1; op_errno = EINVAL; goto out; @@ -356,10 +356,10 @@ tier_create_linkfile_create_cbk (call_frame_t *frame, void *cookie, " : key = %s", TIER_LINKFILE_GFID); } - STACK_WIND (frame, tier_create_cbk, - cached_subvol, cached_subvol->fops->create, - &local->loc, local->flags, local->mode, - local->umask, local->fd, local->params); + STACK_WIND_COOKIE (frame, tier_create_cbk, cached_subvol, + cached_subvol, cached_subvol->fops->create, + &local->loc, local->flags, local->mode, + local->umask, local->fd, local->params); return 0; err: @@ -431,9 +431,9 @@ tier_create (call_frame_t *frame, xlator_t *this, "creating %s on %s", loc->path, cold_subvol->name); - STACK_WIND (frame, tier_create_cbk, - cold_subvol, cold_subvol->fops->create, - loc, flags, mode, umask, fd, params); + STACK_WIND_COOKIE (frame, tier_create_cbk, cold_subvol, + cold_subvol, cold_subvol->fops->create, + loc, flags, mode, umask, fd, params); } else { local->params = dict_ref (params); local->flags = flags; @@ -470,7 +470,7 @@ tier_unlink_nonhashed_linkfile_cbk (call_frame_t *frame, void *cookie, struct iatt *postparent, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -483,7 +483,7 @@ tier_unlink_nonhashed_linkfile_cbk (call_frame_t *frame, void *cookie, gf_msg_debug (this->name, op_errno, "Unlink link: subvolume %s" " returned -1", - prev->this->name); + prev->name); goto unlock; } @@ -513,7 +513,7 @@ tier_unlink_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postparent) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; dht_conf_t *conf = NULL; xlator_t *hot_subvol = NULL; @@ -526,9 +526,9 @@ tier_unlink_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* * linkfile present on hot tier. unlinking the linkfile */ - STACK_WIND (frame, tier_unlink_nonhashed_linkfile_cbk, - hot_subvol, hot_subvol->fops->unlink, - &local->loc, local->flags, NULL); + STACK_WIND_COOKIE (frame, tier_unlink_nonhashed_linkfile_cbk, + hot_subvol, hot_subvol, hot_subvol->fops->unlink, + &local->loc, local->flags, NULL); return 0; } @@ -543,7 +543,7 @@ tier_unlink_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } gf_msg_debug (this->name, op_errno, "Lookup : subvolume %s returned -1", - prev->this->name); + prev->name); } UNLOCK (&frame->lock); @@ -560,7 +560,7 @@ tier_unlink_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postparent, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; local = frame->local; prev = cookie; @@ -576,7 +576,7 @@ tier_unlink_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg_debug (this->name, op_errno, "Unlink link: subvolume %s" " returned -1", - prev->this->name); + prev->name); goto unlock; } @@ -605,7 +605,7 @@ tier_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *postparent, dict_t *xdata) { dht_local_t *local = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; struct iatt *stbuf = NULL; dht_conf_t *conf = NULL; int ret = -1; @@ -631,7 +631,7 @@ tier_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_msg_debug (this->name, op_errno, "Unlink: subvolume %s returned -1" " with errno = %d", - prev->this->name, op_errno); + prev->name, op_errno); goto unlock; } @@ -659,10 +659,10 @@ unlock: * a link file on cold tier, deleting the linkfile * from cold tier */ - STACK_WIND (frame, tier_unlink_linkfile_cbk, - cold_tier, - cold_tier->fops->unlink, &local->loc, - local->flags, xdata); + STACK_WIND_COOKIE (frame, tier_unlink_linkfile_cbk, cold_tier, + cold_tier, cold_tier->fops->unlink, + &local->loc, + local->flags, xdata); return 0; } @@ -673,10 +673,9 @@ unlock: * File is migrating from cold to hot tier. * Delete the destination linkfile. */ - STACK_WIND (frame, tier_unlink_lookup_cbk, - hot_tier, - hot_tier->fops->lookup, - &local->loc, NULL); + STACK_WIND_COOKIE (frame, tier_unlink_lookup_cbk, hot_tier, + hot_tier, hot_tier->fops->lookup, + &local->loc, NULL); return 0; } @@ -750,9 +749,9 @@ tier_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, * File is on hot tier, delete the data file first, then * linkfile from cold. */ - STACK_WIND (frame, tier_unlink_cbk, - cached_subvol, cached_subvol->fops->unlink, loc, - xflag, xdata); + STACK_WIND_COOKIE (frame, tier_unlink_cbk, cached_subvol, + cached_subvol, cached_subvol->fops->unlink, loc, + xflag, xdata); if (xdata) dict_unref (xdata); return 0; @@ -772,7 +771,7 @@ tier_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, gf_dirent_t entries; gf_dirent_t *orig_entry = NULL; gf_dirent_t *entry = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *next_subvol = NULL; off_t next_offset = 0; int count = 0; @@ -811,14 +810,14 @@ done: EOF is not yet hit on the current subvol */ if (next_offset != 0) { - next_subvol = prev->this; + next_subvol = prev; } else { goto unwind; } - STACK_WIND (frame, tier_readdir_cbk, - next_subvol, next_subvol->fops->readdir, - local->fd, local->size, next_offset, NULL); + STACK_WIND_COOKIE (frame, tier_readdir_cbk, next_subvol, + next_subvol, next_subvol->fops->readdir, + local->fd, local->size, next_offset, NULL); return 0; } @@ -841,7 +840,7 @@ tier_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret gf_dirent_t entries; gf_dirent_t *orig_entry = NULL; gf_dirent_t *entry = NULL; - call_frame_t *prev = NULL; + xlator_t *prev = NULL; xlator_t *next_subvol = NULL; off_t next_offset = 0; int count = 0; @@ -911,7 +910,7 @@ tier_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret } } else { if (orig_entry->inode) { - ret = dht_layout_preset (this, prev->this, + ret = dht_layout_preset (this, prev, orig_entry->inode); if (ret) gf_msg (this->name, GF_LOG_WARNING, 0, @@ -957,15 +956,15 @@ done: EOF is not yet hit on the current subvol */ if (next_offset != 0) { - next_subvol = prev->this; + next_subvol = prev; } else { goto unwind; } - STACK_WIND (frame, tier_readdirp_cbk, - next_subvol, next_subvol->fops->readdirp, - local->fd, local->size, next_offset, - local->xattr); + STACK_WIND_COOKIE (frame, tier_readdirp_cbk, next_subvol, + next_subvol, next_subvol->fops->readdirp, + local->fd, local->size, next_offset, + local->xattr); return 0; } @@ -1029,14 +1028,14 @@ tier_do_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, } - STACK_WIND (frame, tier_readdirp_cbk, hashed_subvol, - hashed_subvol->fops->readdirp, - fd, size, yoff, local->xattr); + STACK_WIND_COOKIE (frame, tier_readdirp_cbk, hashed_subvol, + hashed_subvol, hashed_subvol->fops->readdirp, + fd, size, yoff, local->xattr); } else { - STACK_WIND (frame, tier_readdir_cbk, hashed_subvol, - hashed_subvol->fops->readdir, - fd, size, yoff, local->xattr); + STACK_WIND_COOKIE (frame, tier_readdir_cbk, hashed_subvol, + hashed_subvol, hashed_subvol->fops->readdir, + fd, size, yoff, local->xattr); } return 0; -- 1.8.3.1