summaryrefslogtreecommitdiffstats
path: root/xlators/performance/md-cache/src
diff options
context:
space:
mode:
authorMohammed Rafi KC <rkavunga@redhat.com>2015-08-12 14:56:27 +0530
committerRaghavendra G <rgowdapp@redhat.com>2015-11-09 02:49:39 -0800
commitc8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7 (patch)
treeca7f08822d6d7d58f48817dbb1d35a6551d56a51 /xlators/performance/md-cache/src
parent529c3bf41f666d1238f71fba0465eaa812322276 (diff)
downloadglusterfs-c8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7.tar.gz
glusterfs-c8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7.tar.xz
glusterfs-c8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7.zip
md-cache: Remove readdirp fop for md-cache
readdirp call will return inode for each entry and will share this nodeid with kernal, also md-cache will cache this gfid and base name. So when a lookup operation is perfromed on such an inode, md-cache will wind the call, that prevents populating inode ctx for other lower layer xlators. Change-Id: I43c768703a3cc66d05b1c32909d1a2781001cb49 BUG: 1236032 Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com> Reviewed-on: http://review.gluster.org/11894 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'xlators/performance/md-cache/src')
-rw-r--r--xlators/performance/md-cache/src/md-cache.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/xlators/performance/md-cache/src/md-cache.c b/xlators/performance/md-cache/src/md-cache.c
index d5ff10f9f5..59af907a1e 100644
--- a/xlators/performance/md-cache/src/md-cache.c
+++ b/xlators/performance/md-cache/src/md-cache.c
@@ -1972,7 +1972,8 @@ int
mdc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
int op_ret, int op_errno, gf_dirent_t *entries, dict_t *xdata)
{
- gf_dirent_t *entry = NULL;
+ gf_dirent_t *entry = NULL;
+ struct md_cache *mdc = NULL;
if (op_ret <= 0)
goto unwind;
@@ -1980,6 +1981,8 @@ mdc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
list_for_each_entry (entry, &entries->list, list) {
if (!entry->inode)
continue;
+ if (mdc_inode_ctx_get (this, entry->inode, &mdc) != 0)
+ continue;
mdc_inode_iatt_set (this, entry->inode, &entry->d_stat);
mdc_inode_xatt_set (this, entry->inode, entry->dict);
}