summaryrefslogtreecommitdiffstats
path: root/xlators/performance/readdir-ahead/src/readdir-ahead.c
diff options
context:
space:
mode:
authorPoornima G <pgurusid@redhat.com>2017-03-15 10:26:28 +0530
committerRaghavendra G <rgowdapp@redhat.com>2017-04-06 00:04:03 -0400
commit0f71338e1d7c0b70f4fe3b19c68612fe730d9de2 (patch)
treebd3ffb87031006619c22f2914ea127edacd6fee3 /xlators/performance/readdir-ahead/src/readdir-ahead.c
parent93e3c9abce1a02ac724afa382751852fa5edf713 (diff)
dht: The xattrs sent in readdirp should be sent in opendir aswell
As readdir-ahead can be loaded as a child of dht, dht has to specify the xattrs it is intrested in, as part of opendir call itself. Change-Id: I012ef96cc143b0cef942df78aa7150d85ec38606 BUG: 1431908 Signed-off-by: Poornima G <pgurusid@redhat.com> Reviewed-on: https://review.gluster.org/16902 Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Raghavendra G <rgowdapp@redhat.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/performance/readdir-ahead/src/readdir-ahead.c')
-rw-r--r--xlators/performance/readdir-ahead/src/readdir-ahead.c46
1 files changed, 15 insertions, 31 deletions
diff --git a/xlators/performance/readdir-ahead/src/readdir-ahead.c b/xlators/performance/readdir-ahead/src/readdir-ahead.c
index 9f129aa08d8..2ffcf25d8a7 100644
--- a/xlators/performance/readdir-ahead/src/readdir-ahead.c
+++ b/xlators/performance/readdir-ahead/src/readdir-ahead.c
@@ -415,7 +415,6 @@ rda_fill_fd(call_frame_t *frame, xlator_t *this, fd_t *fd)
struct rda_fd_ctx *ctx;
off_t offset;
struct rda_priv *priv = this->private;
- int ret = 0;
ctx = get_rda_fd_ctx(fd, this);
if (!ctx)
@@ -461,15 +460,6 @@ rda_fill_fd(call_frame_t *frame, xlator_t *this, fd_t *fd)
}
local->offset = offset;
- if (local->skip_dir) {
- ret = dict_set_int32 (ctx->xattrs, GF_READDIR_SKIP_DIRS, 1);
- if (ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR,
- 0, READDIR_AHEAD_MSG_DICT_OP_FAILED,
- "Dict set of key:%s failed with :%d",
- GF_READDIR_SKIP_DIRS, ret);
- }
- }
UNLOCK(&ctx->lock);
@@ -547,27 +537,12 @@ rda_opendir(call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd,
dict_t *xdata_from_req = NULL;
if (xdata) {
- /*
- * Retrieve list of keys set by md-cache xlator and store it
- * in local to be consumed in rda_opendir_cbk
- */
- ret = dict_get_str (xdata, GF_MDC_LOADED_KEY_NAMES, &payload);
- if (ret)
- goto wind;
-
xdata_from_req = dict_new();
if (!xdata_from_req) {
op_errno = ENOMEM;
goto unwind;
}
- ret = rda_unpack_mdc_loaded_keys_to_dict((char *) payload,
- xdata_from_req);
- if (ret) {
- dict_unref(xdata_from_req);
- goto wind;
- }
-
local = mem_get0(this->local_pool);
if (!local) {
dict_unref(xdata_from_req);
@@ -575,16 +550,25 @@ rda_opendir(call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd,
goto unwind;
}
+ /*
+ * Retrieve list of keys set by md-cache xlator and store it
+ * in local to be consumed in rda_opendir_cbk
+ */
+ ret = dict_get_str (xdata, GF_MDC_LOADED_KEY_NAMES, &payload);
+ if (ret)
+ goto wind;
+ ret = rda_unpack_mdc_loaded_keys_to_dict((char *) payload,
+ xdata_from_req);
+ if (ret)
+ goto wind;
+
+ dict_copy (xdata, xdata_from_req);
+ dict_del (xdata_from_req, GF_MDC_LOADED_KEY_NAMES);
+
local->xattrs = xdata_from_req;
- ret = dict_get_int32 (xdata, GF_READDIR_SKIP_DIRS, &local->skip_dir);
frame->local = local;
}
-
wind:
- if (xdata)
- /* Remove the key after consumption. */
- dict_del (xdata, GF_MDC_LOADED_KEY_NAMES);
-
STACK_WIND(frame, rda_opendir_cbk, FIRST_CHILD(this),
FIRST_CHILD(this)->fops->opendir, loc, fd, xdata);
return 0;