diff options
author | Poornima G <pgurusid@redhat.com> | 2016-12-08 16:08:40 +0530 |
---|---|---|
committer | Raghavendra G <rgowdapp@redhat.com> | 2017-01-24 00:07:42 -0500 |
commit | 7c6538f6c8f9a015663b4fc57c640a7c451c87f7 (patch) | |
tree | 252b6d9da6bc34ee17a0635502d15cb67987758a /xlators/performance/readdir-ahead/src/readdir-ahead.c | |
parent | f2e7b6800b812e8bbc9bdbcea4c400a1784e31dc (diff) |
Readdir-ahead : Honor readdir-optimise option of dht
Change-Id: I9c5e65b32e316e6a2fc7e1f5c79fce79386b78e2
BUG: 1401812
Signed-off-by: Poornima G <pgurusid@redhat.com>
Reviewed-on: https://review.gluster.org/16071
Smoke: Gluster Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'xlators/performance/readdir-ahead/src/readdir-ahead.c')
-rw-r--r-- | xlators/performance/readdir-ahead/src/readdir-ahead.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/xlators/performance/readdir-ahead/src/readdir-ahead.c b/xlators/performance/readdir-ahead/src/readdir-ahead.c index dcbab534226..17569c2a089 100644 --- a/xlators/performance/readdir-ahead/src/readdir-ahead.c +++ b/xlators/performance/readdir-ahead/src/readdir-ahead.c @@ -407,6 +407,7 @@ 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) @@ -452,6 +453,15 @@ 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); @@ -558,6 +568,13 @@ rda_opendir(call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, } local->xattrs = xdata_from_req; + ret = dict_get_int32 (xdata, GF_READDIR_SKIP_DIRS, &local->skip_dir); + if (ret < 0) { + gf_msg (this->name, GF_LOG_ERROR, + 0, READDIR_AHEAD_MSG_DICT_OP_FAILED, + "Dict get of key:%s failed with :%d", + GF_READDIR_SKIP_DIRS, ret); + } frame->local = local; } |